From 2b95c9ff2f3e053a0ebbda0d63bd91036548ae3c Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Wed, 3 Mar 2021 10:40:16 +0800 Subject: [PATCH 1/8] add user avatar field --- ...NGYUN.Abp.AspNetCore.Mvc.Validation.csproj | 2 +- .../Identity/AbpIdentityApplicationModule.cs | 22 + .../Identity/ExtensionIdentityUserConsts.cs | 14 + .../AbpIdentityEntityFrameworkCoreModule.cs | 18 + ...805_Add-IdentityUser-AvatarUrl.Designer.cs | 1774 +++++++++++++++++ ...210302035805_Add-IdentityUser-AvatarUrl.cs | 24 + ...yServerMigrationsDbContextModelSnapshot.cs | 6 +- vueJs/src/router/index.ts | 18 +- .../components/MyNotifier.vue | 0 .../components/MyProfile.vue | 53 +- .../components/MySecurity.vue | 0 .../index.vue => profile/setting.vue} | 0 12 files changed, 1914 insertions(+), 17 deletions(-) create mode 100644 aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/ExtensionIdentityUserConsts.cs create mode 100644 aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.Designer.cs create mode 100644 aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.cs rename vueJs/src/views/{profile-setting => profile}/components/MyNotifier.vue (100%) rename vueJs/src/views/{profile-setting => profile}/components/MyProfile.vue (69%) rename vueJs/src/views/{profile-setting => profile}/components/MySecurity.vue (100%) rename vueJs/src/views/{profile-setting/index.vue => profile/setting.vue} (100%) diff --git a/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj b/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj index 32aa5c104..47b599dc4 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj +++ b/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj @@ -3,7 +3,7 @@ - netcoreapp3.1 + net5.0 diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs index c7de0f249..184c4bee0 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs @@ -1,6 +1,9 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AutoMapper; +using Volo.Abp.Identity; using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; namespace LINGYUN.Abp.Identity { @@ -10,6 +13,7 @@ namespace LINGYUN.Abp.Identity typeof(AbpIdentityDomainModule))] public class AbpIdentityApplicationModule : AbpModule { + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAutoMapperObjectMapper(); @@ -19,5 +23,23 @@ namespace LINGYUN.Abp.Identity options.AddProfile(validate: true); }); } + + public override void PostConfigureServices(ServiceConfigurationContext context) + { + OneTimeRunner.Run(() => + { + ObjectExtensionManager.Instance + .AddOrUpdateProperty( + new[] + { + typeof(IdentityUserDto), + typeof(IdentityUserCreateDto), + typeof(IdentityUserUpdateDto), + typeof(ProfileDto), + typeof(UpdateProfileDto) + }, + ExtensionIdentityUserConsts.AvatarUrlField); + }); + } } } diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/ExtensionIdentityUserConsts.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/ExtensionIdentityUserConsts.cs new file mode 100644 index 000000000..e089a7942 --- /dev/null +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/ExtensionIdentityUserConsts.cs @@ -0,0 +1,14 @@ +namespace LINGYUN.Abp.Identity +{ + public static class ExtensionIdentityUserConsts + { + /// + /// 头像字段 + /// + public static string AvatarUrlField { get; set; } = "AvatarUrl"; + /// + /// 头像字段最大长度 + /// + public static int MaxAvatarUrlLength { get; set; } = 128; + } +} diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs index ee53d06ac..801bde390 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs @@ -2,6 +2,8 @@ using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; namespace LINGYUN.Abp.Identity.EntityFrameworkCore { @@ -9,6 +11,8 @@ namespace LINGYUN.Abp.Identity.EntityFrameworkCore [DependsOn(typeof(Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule))] public class AbpIdentityEntityFrameworkCoreModule : AbpModule { + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAbpDbContext(options => @@ -17,5 +21,19 @@ namespace LINGYUN.Abp.Identity.EntityFrameworkCore options.AddRepository(); }); } + + public override void PostConfigureServices(ServiceConfigurationContext context) + { + OneTimeRunner.Run(() => + { + ObjectExtensionManager.Instance + .MapEfCoreProperty( + ExtensionIdentityUserConsts.AvatarUrlField, + (etb, prop) => + { + prop.HasMaxLength(ExtensionIdentityUserConsts.MaxAvatarUrlLength); + }); + }); + } } } diff --git a/aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.Designer.cs b/aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.Designer.cs new file mode 100644 index 000000000..7e05c6881 --- /dev/null +++ b/aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.Designer.cs @@ -0,0 +1,1774 @@ +// +using System; +using AuthServer.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +namespace AuthServer.Host.Migrations +{ + [DbContext(typeof(AuthServerHostMigrationsDbContext))] + [Migration("20210302035805_Add-IdentityUser-AvatarUrl")] + partial class AddIdentityUserAvatarUrl + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.2"); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("varchar(512) CHARACTER SET utf8mb4"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("varchar(128) CHARACTER SET utf8mb4"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("SourceTenantId") + .HasColumnType("char(36)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("TargetTenantId") + .HasColumnType("char(36)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024) CHARACTER SET utf8mb4"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("varchar(96) CHARACTER SET utf8mb4"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96) CHARACTER SET utf8mb4"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512) CHARACTER SET utf8mb4"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("varchar(96) CHARACTER SET utf8mb4"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("AvatarUrl") + .HasMaxLength(128) + .HasColumnType("varchar(128) CHARACTER SET utf8mb4"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("varchar(16) CHARACTER SET utf8mb4") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4") + .HasColumnName("SecurityStamp"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256) CHARACTER SET utf8mb4"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024) CHARACTER SET utf8mb4"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("varchar(128) CHARACTER SET utf8mb4"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("varchar(196) CHARACTER SET utf8mb4"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("varchar(128) CHARACTER SET utf8mb4"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("varchar(95) CHARACTER SET utf8mb4") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AllowedAccessTokenSigningAlgorithms") + .HasMaxLength(100) + .HasColumnType("varchar(100) CHARACTER SET utf8mb4"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000) CHARACTER SET utf8mb4"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerApiResources"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.HasKey("ApiResourceId", "Type"); + + b.ToTable("IdentityServerApiResourceClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.HasKey("ApiResourceId", "Key", "Value"); + + b.ToTable("IdentityServerApiResourceProperties"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Scope") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.HasKey("ApiResourceId", "Scope"); + + b.ToTable("IdentityServerApiResourceScopes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000) CHARACTER SET utf8mb4"); + + b.Property("Expiration") + .HasColumnType("datetime(6)"); + + b.HasKey("ApiResourceId", "Type", "Value"); + + b.ToTable("IdentityServerApiResourceSecrets"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000) CHARACTER SET utf8mb4"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Emphasize") + .HasColumnType("tinyint(1)"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerApiScopes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => + { + b.Property("ApiScopeId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.HasKey("ApiScopeId", "Type"); + + b.ToTable("IdentityServerApiScopeClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => + { + b.Property("ApiScopeId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.HasKey("ApiScopeId", "Key", "Value"); + + b.ToTable("IdentityServerApiScopeProperties"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AbsoluteRefreshTokenLifetime") + .HasColumnType("int"); + + b.Property("AccessTokenLifetime") + .HasColumnType("int"); + + b.Property("AccessTokenType") + .HasColumnType("int"); + + b.Property("AllowAccessTokensViaBrowser") + .HasColumnType("tinyint(1)"); + + b.Property("AllowOfflineAccess") + .HasColumnType("tinyint(1)"); + + b.Property("AllowPlainTextPkce") + .HasColumnType("tinyint(1)"); + + b.Property("AllowRememberConsent") + .HasColumnType("tinyint(1)"); + + b.Property("AllowedIdentityTokenSigningAlgorithms") + .HasMaxLength(100) + .HasColumnType("varchar(100) CHARACTER SET utf8mb4"); + + b.Property("AlwaysIncludeUserClaimsInIdToken") + .HasColumnType("tinyint(1)"); + + b.Property("AlwaysSendClientClaims") + .HasColumnType("tinyint(1)"); + + b.Property("AuthorizationCodeLifetime") + .HasColumnType("int"); + + b.Property("BackChannelLogoutSessionRequired") + .HasColumnType("tinyint(1)"); + + b.Property("BackChannelLogoutUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000) CHARACTER SET utf8mb4"); + + b.Property("ClientClaimsPrefix") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ClientName") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ClientUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000) CHARACTER SET utf8mb4"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentLifetime") + .HasColumnType("int"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000) CHARACTER SET utf8mb4"); + + b.Property("DeviceCodeLifetime") + .HasColumnType("int"); + + b.Property("EnableLocalLogin") + .HasColumnType("tinyint(1)"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("FrontChannelLogoutSessionRequired") + .HasColumnType("tinyint(1)"); + + b.Property("FrontChannelLogoutUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000) CHARACTER SET utf8mb4"); + + b.Property("IdentityTokenLifetime") + .HasColumnType("int"); + + b.Property("IncludeJwtId") + .HasColumnType("tinyint(1)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000) CHARACTER SET utf8mb4"); + + b.Property("PairWiseSubjectSalt") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ProtocolType") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("RefreshTokenExpiration") + .HasColumnType("int"); + + b.Property("RefreshTokenUsage") + .HasColumnType("int"); + + b.Property("RequireClientSecret") + .HasColumnType("tinyint(1)"); + + b.Property("RequireConsent") + .HasColumnType("tinyint(1)"); + + b.Property("RequirePkce") + .HasColumnType("tinyint(1)"); + + b.Property("RequireRequestObject") + .HasColumnType("tinyint(1)"); + + b.Property("SlidingRefreshTokenLifetime") + .HasColumnType("int"); + + b.Property("UpdateAccessTokenClaimsOnRefresh") + .HasColumnType("tinyint(1)"); + + b.Property("UserCodeType") + .HasMaxLength(100) + .HasColumnType("varchar(100) CHARACTER SET utf8mb4"); + + b.Property("UserSsoLifetime") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("IdentityServerClients"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "Type", "Value"); + + b.ToTable("IdentityServerClientClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Origin") + .HasMaxLength(150) + .HasColumnType("varchar(150) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "Origin"); + + b.ToTable("IdentityServerClientCorsOrigins"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("GrantType") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "GrantType"); + + b.ToTable("IdentityServerClientGrantTypes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Provider") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "Provider"); + + b.ToTable("IdentityServerClientIdPRestrictions"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("PostLogoutRedirectUri") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "PostLogoutRedirectUri"); + + b.ToTable("IdentityServerClientPostLogoutRedirectUris"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "Key", "Value"); + + b.ToTable("IdentityServerClientProperties"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("RedirectUri") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "RedirectUri"); + + b.ToTable("IdentityServerClientRedirectUris"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Scope") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.HasKey("ClientId", "Scope"); + + b.ToTable("IdentityServerClientScopes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.Property("Description") + .HasMaxLength(2000) + .HasColumnType("varchar(2000) CHARACTER SET utf8mb4"); + + b.Property("Expiration") + .HasColumnType("datetime(6)"); + + b.HasKey("ClientId", "Type", "Value"); + + b.ToTable("IdentityServerClientSecrets"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("DeviceCode") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Expiration") + .IsRequired() + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("SessionId") + .HasMaxLength(100) + .HasColumnType("varchar(100) CHARACTER SET utf8mb4"); + + b.Property("SubjectId") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("UserCode") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.HasKey("Id"); + + b.HasIndex("DeviceCode") + .IsUnique(); + + b.HasIndex("Expiration"); + + b.HasIndex("UserCode"); + + b.ToTable("IdentityServerDeviceFlowCodes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + { + b.Property("Key") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsumedTime") + .HasColumnType("datetime(6)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Expiration") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("SessionId") + .HasMaxLength(100) + .HasColumnType("varchar(100) CHARACTER SET utf8mb4"); + + b.Property("SubjectId") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + + b.HasKey("Key"); + + b.HasIndex("Expiration"); + + b.HasIndex("SubjectId", "ClientId", "Type"); + + b.HasIndex("SubjectId", "SessionId", "Type"); + + b.ToTable("IdentityServerPersistedGrants"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40) CHARACTER SET utf8mb4") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000) CHARACTER SET utf8mb4"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Emphasize") + .HasColumnType("tinyint(1)"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerIdentityResources"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + { + b.Property("IdentityResourceId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("varchar(200) CHARACTER SET utf8mb4"); + + b.HasKey("IdentityResourceId", "Type"); + + b.ToTable("IdentityServerIdentityResourceClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => + { + b.Property("IdentityResourceId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250) CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300) CHARACTER SET utf8mb4"); + + b.HasKey("IdentityResourceId", "Key", "Value"); + + b.ToTable("IdentityServerIdentityResourceProperties"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("UserClaims") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Properties") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Scopes") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Secrets") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) + .WithMany("UserClaims") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) + .WithMany("Properties") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("Claims") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedCorsOrigins") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedGrantTypes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("IdentityProviderRestrictions") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("PostLogoutRedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("Properties") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("RedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedScopes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("ClientSecrets") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) + .WithMany("UserClaims") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) + .WithMany("Properties") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + { + b.Navigation("Properties"); + + b.Navigation("Scopes"); + + b.Navigation("Secrets"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => + { + b.Navigation("AllowedCorsOrigins"); + + b.Navigation("AllowedGrantTypes"); + + b.Navigation("AllowedScopes"); + + b.Navigation("Claims"); + + b.Navigation("ClientSecrets"); + + b.Navigation("IdentityProviderRestrictions"); + + b.Navigation("PostLogoutRedirectUris"); + + b.Navigation("Properties"); + + b.Navigation("RedirectUris"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.cs b/aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.cs new file mode 100644 index 000000000..11f7258a9 --- /dev/null +++ b/aspnet-core/services/account/AuthServer.Host/Migrations/20210302035805_Add-IdentityUser-AvatarUrl.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace AuthServer.Host.Migrations +{ + public partial class AddIdentityUserAvatarUrl : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "AvatarUrl", + table: "AbpUsers", + type: "varchar(128) CHARACTER SET utf8mb4", + maxLength: 128, + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "AvatarUrl", + table: "AbpUsers"); + } + } +} diff --git a/aspnet-core/services/account/AuthServer.Host/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs b/aspnet-core/services/account/AuthServer.Host/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs index 80a83d397..e9a9d20e8 100644 --- a/aspnet-core/services/account/AuthServer.Host/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs +++ b/aspnet-core/services/account/AuthServer.Host/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs @@ -17,7 +17,7 @@ namespace AuthServer.Migrations modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.0"); + .HasAnnotation("ProductVersion", "5.0.2"); modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => { @@ -256,6 +256,10 @@ namespace AuthServer.Migrations .HasDefaultValue(0) .HasColumnName("AccessFailedCount"); + b.Property("AvatarUrl") + .HasMaxLength(128) + .HasColumnType("varchar(128) CHARACTER SET utf8mb4"); + b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasMaxLength(40) diff --git a/vueJs/src/router/index.ts b/vueJs/src/router/index.ts index 0335c36cc..cbefb6e5f 100644 --- a/vueJs/src/router/index.ts +++ b/vueJs/src/router/index.ts @@ -142,21 +142,13 @@ export const asyncRoutes: RouteConfig[] = [ icon: 'user', noCache: true } - } - ] - }, - { - path: '/profile-setting', - component: Layout, - redirect: '/profile-setting/index', - meta: { hidden: true }, - children: [ + }, { - path: 'index', - component: () => import(/* webpackChunkName: "profile" */ '@/views/profile-setting/index.vue'), - name: '个人设置', + path: 'setting', + component: () => import(/* webpackChunkName: "profile" */ '@/views/profile/setting.vue'), + name: 'setting', meta: { - title: '个人设置', + title: 'setting', icon: 'setting', noCache: true } diff --git a/vueJs/src/views/profile-setting/components/MyNotifier.vue b/vueJs/src/views/profile/components/MyNotifier.vue similarity index 100% rename from vueJs/src/views/profile-setting/components/MyNotifier.vue rename to vueJs/src/views/profile/components/MyNotifier.vue diff --git a/vueJs/src/views/profile-setting/components/MyProfile.vue b/vueJs/src/views/profile/components/MyProfile.vue similarity index 69% rename from vueJs/src/views/profile-setting/components/MyProfile.vue rename to vueJs/src/views/profile/components/MyProfile.vue index 2be44ec9b..fe2ee7fff 100644 --- a/vueJs/src/views/profile-setting/components/MyProfile.vue +++ b/vueJs/src/views/profile/components/MyProfile.vue @@ -39,10 +39,25 @@ /> - + 更换头像 + @@ -74,18 +89,27 @@ + + diff --git a/vueJs/src/views/oss-management/index.vue b/vueJs/src/views/oss-management/index.vue new file mode 100644 index 000000000..1dd052413 --- /dev/null +++ b/vueJs/src/views/oss-management/index.vue @@ -0,0 +1,476 @@ + + + + + From 061cd1c2cb79d8b285ea9c34e511dead7deac5e3 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Wed, 10 Mar 2021 12:05:03 +0800 Subject: [PATCH 3/8] Implement upload and download interface of OSS --- .../cloud-aliyun/LINGYUN.Abp.Aliyun/README.md | 32 +- .../FileManagement/CreateOssObjectInput.cs | 6 + .../Abp/FileManagement/FileCopyOrMoveDto.cs | 21 - .../Abp/FileManagement/FileCreateDto.cs | 32 -- .../Abp/FileManagement/FileDeleteDto.cs | 14 - .../FileManagement/FileSystemDownloadDto.cs | 15 - .../Abp/FileManagement/FileSystemDto.cs | 15 - .../Abp/FileManagement/FileSystemGetDto.cs | 14 - .../Abp/FileManagement/FileSystemType.cs | 8 - .../Abp/FileManagement/FileSystemUpdateDto.cs | 11 - .../Abp/FileManagement/FolderCopyDto.cs | 11 - .../Abp/FileManagement/FolderCreateDto.cs | 13 - .../Abp/FileManagement/FolderMoveDto.cs | 11 - .../FileManagement/GetFileSystemListDto.cs | 14 - .../FileManagement/IFileSystemAppService.cs | 35 -- .../FileManagement/FileSystemAppService.cs | 467 ------------------ .../FileManagementErrorCodes.cs | 8 +- .../Localization/Resources/en.json | 1 + .../Localization/Resources/zh-Hans.json | 1 + .../LINGYUN.Abp.FileManagement.Domain.csproj | 2 +- .../FileSystem/FileSystemOssContainer.cs | 61 ++- .../FileManagement/FileSystemController.cs | 265 ---------- .../Abp/FileManagement/FileUploadDto.cs | 35 -- .../Abp/FileManagement/FileValidater.cs | 96 ++++ .../Abp/FileManagement/IFileValidater.cs | 9 + .../Abp/FileManagement/OssObjectController.cs | 96 +++- .../FileManagement/UploadOssObjectInput.cs | 37 +- vueJs/src/api/oss-manager.ts | 52 +- .../components/OssObjectUploadDialog.vue | 131 +++++ vueJs/src/views/oss-management/index.vue | 78 ++- 30 files changed, 497 insertions(+), 1094 deletions(-) delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCopyOrMoveDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCreateDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileDeleteDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDownloadDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemGetDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemType.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemUpdateDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCopyDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCreateDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderMoveDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetFileSystemListDto.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IFileSystemAppService.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileSystemAppService.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileSystemController.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileUploadDto.cs create mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileValidater.cs create mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/IFileValidater.cs create mode 100644 vueJs/src/views/oss-management/components/OssObjectUploadDialog.vue diff --git a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md index 6cb396563..97c68d074 100644 --- a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md +++ b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md @@ -1,31 +1,3 @@ -# LINGYUN.Abp.Aliyun +# Oss-Management -阿里云sdk集成 - -参照:https://help.aliyun.com/document_detail/28763.html - -## 配置使用 - -模块按需引用 - -```csharp -[DependsOn(typeof(AbpAliyunModule))] -public class YouProjectModule : AbpModule -{ - // other -} -``` -## 配置项说明 - -* AliyunSettingNames.Authorization.RegionId 可选,区域,默认 default -* AliyunSettingNames.Authorization.AccessKeyId 必须,阿里云RAM账号的AccessKey ID -* AliyunSettingNames.Authorization.AccessKeySecret 必须,RAM账号的AccessKey Secret -* AliyunSettingNames.Authorization.UseSecurityTokenService 可选,建议,使用STS Token访问,按照阿里云文档,建议使用Sts Token访问API,默认false -* AliyunSettingNames.Authorization.RamRoleArn 可选,启用Sts Token之后必须配置,阿里云RAM角色ARN -* AliyunSettingNames.Authorization.RoleSessionName 可选,启用Sts Token之后的用户自定义令牌名称,用于访问审计 -* AliyunSettingNames.Authorization.DurationSeconds 可选,用户令牌的过期时间,单位为秒,默认3000 -* AliyunSettingNames.Authorization.Policy 可选,权限策略,为json字符串 - -## 其他 - -网络因素在高并发下可能会出现预期外的异常,考虑使用二级缓存 +File-Management更名为Oss-Management diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/CreateOssObjectInput.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/CreateOssObjectInput.cs index eee24f5b7..f96bd033a 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/CreateOssObjectInput.cs +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/CreateOssObjectInput.cs @@ -1,5 +1,7 @@ using System; using System.IO; +using Volo.Abp.Auditing; +using Volo.Abp.Validation; namespace LINGYUN.Abp.FileManagement { @@ -8,12 +10,16 @@ namespace LINGYUN.Abp.FileManagement public string Bucket { get; set; } public string Path { get; set; } public string Object { get; set; } + + [DisableAuditing] + [DisableValidation] public Stream Content { get; set; } public TimeSpan? ExpirationTime { get; set; } public void SetContent(Stream content) { Content = content; + Content?.Seek(0, SeekOrigin.Begin); } } } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCopyOrMoveDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCopyOrMoveDto.cs deleted file mode 100644 index d399c5571..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCopyOrMoveDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileCopyOrMoveDto - { - [StringLength(255)] - public string Path { get; set; } - - [Required] - [StringLength(255)] - public string Name { get; set; } - - [Required] - [StringLength(255)] - public string ToPath { get; set; } - - [StringLength(255)] - public string ToName { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCreateDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCreateDto.cs deleted file mode 100644 index 59da9f99f..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCreateDto.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.IO; -using Volo.Abp.Auditing; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileCreateDto - { - /// - /// 文件名 - /// - [Required] - [StringLength(255)] - public string FileName { get; set; } - /// - /// 文件路径 - /// - [StringLength(255)] - public string Path { get; set; } - /// - /// 文件数据,前端无需传递此参数,由控制器传递 - /// - [DisableAuditing] - [DisableValidation]// TODO: 需要禁用参数检查,否则会有一个框架方面的性能问题存在 - public byte[] Data { get; set; } - /// - /// 是否覆盖文件 - /// - public bool Rewrite { get; set; } = false; - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileDeleteDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileDeleteDto.cs deleted file mode 100644 index a12f6ff3c..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileDeleteDto.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileDeleteDto - { - [StringLength(255)] - public string Path { get; set; } - - [Required] - [StringLength(255)] - public string Name { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDownloadDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDownloadDto.cs deleted file mode 100644 index b421dda4a..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDownloadDto.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileSystemDownloadDto : FileSystemGetDto - { - /// - /// 当前字节数 - /// - public int CurrentByte { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDto.cs deleted file mode 100644 index aecbd0be0..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDto.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileSystemDto - { - public FileSystemType Type { get; set; } - public string Name { get; set; } - public string Parent { get; set; } - public string Extension { get; set; } - public long? Size { get; set; } - public DateTime CreationTime { get; set; } - public DateTime? LastModificationTime { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemGetDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemGetDto.cs deleted file mode 100644 index 8c9619ba6..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemGetDto.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileSystemGetDto - { - [StringLength(255)] - public string Path { get; set; } - - [Required] - [StringLength(255)] - public string Name { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemType.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemType.cs deleted file mode 100644 index ecbcd214d..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemType.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace LINGYUN.Abp.FileManagement -{ - public enum FileSystemType - { - Folder = 0, - File = 1 - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemUpdateDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemUpdateDto.cs deleted file mode 100644 index 3f4193bf4..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemUpdateDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileSystemUpdateDto - { - [Required] - [StringLength(255)] - public string NewName { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCopyDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCopyDto.cs deleted file mode 100644 index ada1ca9a5..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCopyDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FolderCopyDto - { - [Required] - [StringLength(255)] - public string CopyToPath { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCreateDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCreateDto.cs deleted file mode 100644 index 9d2c09d93..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCreateDto.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FolderCreateDto - { - [Required] - [StringLength(255)] - public string Path { get; set; } - - public string Parent { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderMoveDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderMoveDto.cs deleted file mode 100644 index 760b79ad8..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderMoveDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FolderMoveDto - { - [Required] - [StringLength(255)] - public string MoveToPath { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetFileSystemListDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetFileSystemListDto.cs deleted file mode 100644 index 29b4f02cb..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetFileSystemListDto.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.FileManagement -{ - public class GetFileSystemListDto : PagedAndSortedResultRequestDto - { - // TODO: Windows最大路径长度,超过了貌似也无效了吧 - [StringLength(255)] - public string Parent { get; set; } - - public string Filter { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IFileSystemAppService.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IFileSystemAppService.cs deleted file mode 100644 index 4a5955161..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IFileSystemAppService.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.IO; -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; - -namespace LINGYUN.Abp.FileManagement -{ - public interface IFileSystemAppService : IApplicationService - { - Task GetAsync(FileSystemGetDto input); - - Task> GetListAsync(GetFileSystemListDto input); - - Task CreateFolderAsync(FolderCreateDto input); - - Task UpdateAsync([Required, StringLength(255)] string name, FileSystemUpdateDto input); - - Task DeleteFolderAsync([Required, StringLength(255)] string path); - - Task MoveFolderAsync([Required, StringLength(255)] string path, FolderMoveDto input); - - Task CopyFolderAsync([Required, StringLength(255)] string path, FolderCopyDto input); - - Task CreateFileAsync(FileCreateDto input); - - Task DeleteFileAsync(FileDeleteDto input); - - Task MoveFileAsync(FileCopyOrMoveDto input); - - Task CopyFileAsync(FileCopyOrMoveDto input); - - Task DownloadFileAsync(FileSystemGetDto input); - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileSystemAppService.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileSystemAppService.cs deleted file mode 100644 index a6ee61d96..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileSystemAppService.cs +++ /dev/null @@ -1,467 +0,0 @@ -using LINGYUN.Abp.FileManagement.Permissions; -using Microsoft.AspNetCore.Authorization; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Application.Dtos; -using Volo.Abp.BlobStoring; -using Volo.Abp.BlobStoring.FileSystem; - -namespace LINGYUN.Abp.FileManagement -{ - [Authorize(AbpFileManagementPermissions.FileSystem.Default)] - public class FileSystemAppService : FileManagementApplicationServiceBase, IFileSystemAppService - { - protected IBlobContainer BlobContainer { get; } - protected IBlobContainerConfigurationProvider BlobContainerConfigurationProvider { get; } - public FileSystemAppService( - IBlobContainer blobContainer, - IBlobContainerConfigurationProvider blobContainerConfigurationProvider) - { - BlobContainer = blobContainer; - BlobContainerConfigurationProvider = blobContainerConfigurationProvider; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Copy)] - public virtual Task CopyFileAsync(FileCopyOrMoveDto input) - { - string fileSystemPath = GetFileSystemPath(input.Path); - var fileFullName = Path.Combine(fileSystemPath, input.Name); - if (!File.Exists(fileFullName)) - { - throw new UserFriendlyException(L["FilePathNotFound"]); - } - var copyToFilePath = GetFileSystemPath(input.ToPath); - var copyToFileFullName = Path.Combine(copyToFilePath, input.ToName ?? input.Name); - if (File.Exists(copyToFileFullName)) - { - throw new UserFriendlyException(L["FilePathAlreadyExists"]); - } - - File.Copy(fileFullName, copyToFileFullName); - - return Task.CompletedTask; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.Copy)] - public virtual Task CopyFolderAsync([Required, StringLength(255)] string path, FolderCopyDto input) - { - string fileSystemPath = GetFileSystemPath(path); - if (!Directory.Exists(fileSystemPath)) - { - throw new UserFriendlyException(L["PathNotFound"]); - } - var copyToFilePath = GetFileSystemPath(input.CopyToPath); - if (Directory.Exists(copyToFilePath)) - { - throw new UserFriendlyException(L["FilePathAlreadyExists"]); - } - - CopyDirectory(fileSystemPath, copyToFilePath); - - return Task.CompletedTask; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Create)] - public virtual async Task CreateFileAsync(FileCreateDto input) - { - string fileSystemPath = GetFileSystemPath(input.Path); - fileSystemPath = Path.Combine(fileSystemPath, input.FileName); - var blobName = GetFileSystemRelativePath(fileSystemPath); - // 去除第一个路径标识符 - blobName = blobName.RemovePreFix("/", "\\"); - if (!input.Rewrite && await BlobContainer.ExistsAsync(blobName)) - { - throw new UserFriendlyException(L["FilePathAlreadyExists"]); - } - await BlobContainer.SaveAsync(blobName, input.Data, input.Rewrite); - Array.Clear(input.Data, 0, input.Data.Length); - } - - [Authorize(AbpFileManagementPermissions.FileSystem.Create)] - public virtual Task CreateFolderAsync(FolderCreateDto input) - { - string fileSystemPath = GetFileSystemBashPath(); - if (!input.Parent.IsNullOrWhiteSpace()) - { - fileSystemPath = GetFileSystemPath(input.Parent); - } - var newFloderPath = Path.Combine(fileSystemPath, input.Path); - if (Directory.Exists(newFloderPath)) - { - throw new UserFriendlyException(L["PathAlreadyExists"]); - } - Directory.CreateDirectory(newFloderPath); - - return Task.CompletedTask; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Delete)] - public virtual Task DeleteFileAsync(FileDeleteDto input) - { - var fileSystemPath = GetFileSystemPath(input.Path); - fileSystemPath = Path.Combine(fileSystemPath, input.Name); - if (File.Exists(fileSystemPath)) - { - File.Delete(fileSystemPath); - } - return Task.CompletedTask; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.Delete)] - public virtual Task DeleteFolderAsync([Required, StringLength(255)] string path) - { - string fileSystemPath = GetFileSystemPath(path); - if (!Directory.Exists(fileSystemPath)) - { - throw new UserFriendlyException(L["FilePathNotFound"]); - } - var fileSystemChildrenPath = Directory.GetDirectories(fileSystemPath); - if (fileSystemChildrenPath.Length > 0) - { - throw new UserFriendlyException(L["PathCannotBeDeletedWithNotEmpty"]); - } - var fileSystemPathFiles = Directory.GetFiles(fileSystemPath); - if (fileSystemPathFiles.Length > 0) - { - throw new UserFriendlyException(L["PathCannotBeDeletedWithNotEmpty"]); - } - Directory.Delete(fileSystemPath); - return Task.CompletedTask; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Download)] - public virtual async Task DownloadFileAsync(FileSystemGetDto input) - { - var fileSystemPath = GetFileSystemPath(input.Path); - fileSystemPath = Path.Combine(fileSystemPath, input.Name); - var blobName = GetFileSystemRelativePath(fileSystemPath); - // 去除第一个路径标识符 - blobName = blobName.RemovePreFix("/", "\\"); - return await BlobContainer.GetAsync(blobName); - } - - public virtual Task GetAsync(FileSystemGetDto input) - { - var fileSystemPath = GetFileSystemPath(input.Path); - fileSystemPath = Path.Combine(fileSystemPath, input.Name); - if (File.Exists(fileSystemPath)) - { - var fileInfo = new FileInfo(fileSystemPath); - var fileSystem = new FileSystemDto - { - Type = FileSystemType.File, - Name = fileInfo.Name, - Size = fileInfo.Length, - Extension = fileInfo.Extension, - CreationTime = fileInfo.CreationTime, - LastModificationTime = fileInfo.LastWriteTime - }; - if (fileInfo.Directory != null && !fileInfo.Directory.FullName.IsNullOrWhiteSpace()) - { - fileSystem.Parent = GetFileSystemRelativePath(fileInfo.Directory.FullName); - } - return Task.FromResult(fileSystem); - } - if (Directory.Exists(fileSystemPath)) - { - var directoryInfo = new DirectoryInfo(fileSystemPath); - var fileSystem = new FileSystemDto - { - Type = FileSystemType.Folder, - Name = directoryInfo.Name, - CreationTime = directoryInfo.CreationTime, - LastModificationTime = directoryInfo.LastWriteTime - }; - if (directoryInfo.Parent != null && !directoryInfo.Parent.FullName.IsNullOrWhiteSpace()) - { - fileSystem.Parent = GetFileSystemRelativePath(directoryInfo.Parent.FullName); - } - return Task.FromResult(fileSystem); - } - throw new UserFriendlyException(L["FilePathNotFound"]); - } - - public virtual Task> GetListAsync(GetFileSystemListDto input) - { - List fileSystems = new List(); - - string fileSystemPath = GetFileSystemBashPath(); - if (!input.Parent.IsNullOrWhiteSpace()) - { - fileSystemPath = GetFileSystemPath(input.Parent); - } - var directoryInfo = new DirectoryInfo(fileSystemPath); - if (!directoryInfo.Exists) - { - return Task.FromResult(new PagedResultDto(0, fileSystems)); - } - // 查询全部文件系统 - var fileSystemInfos = directoryInfo.GetFileSystemInfos(); - // 指定搜索条件查询目录 - FileSystemInfo[] fileSystemInfoSearchChildren; - if (!input.Filter.IsNullOrWhiteSpace()) - { - var searchPattern = $"*{input.Filter}*"; - fileSystemInfoSearchChildren = directoryInfo.GetFileSystemInfos(searchPattern); - } - else - { - fileSystemInfoSearchChildren = directoryInfo.GetFileSystemInfos(); - } - - fileSystemInfoSearchChildren = fileSystemInfoSearchChildren - .Skip((input.SkipCount - 1) * input.MaxResultCount) - .Take(input.MaxResultCount) - .ToArray(); - - foreach (var fileSystemInfo in fileSystemInfoSearchChildren) - { - var fileSystem = new FileSystemDto - { - Name = fileSystemInfo.Name, - CreationTime = fileSystemInfo.CreationTime, - LastModificationTime = fileSystemInfo.LastWriteTime, - }; - - if (fileSystemInfo is FileInfo fileInfo) - { - fileSystem.Type = FileSystemType.File; - fileSystem.Size = fileInfo.Length; - fileSystem.Extension = fileInfo.Extension; - if (fileInfo.Directory != null && !fileInfo.Directory.FullName.IsNullOrWhiteSpace()) - { - fileSystem.Parent = GetFileSystemRelativePath(fileInfo.Directory.FullName); - } - } - else if (fileSystemInfo is DirectoryInfo directory) - { - fileSystem.Type = FileSystemType.Folder; - if (directory.Parent != null && !directory.Parent.FullName.IsNullOrWhiteSpace()) - { - fileSystem.Parent = GetFileSystemRelativePath(directory.Parent.FullName); - } - } - fileSystems.Add(fileSystem); - } - - fileSystems = fileSystems - .OrderBy(f => f.Type) - .ThenBy(f => f.Name) - .ToList(); - - return Task.FromResult(new PagedResultDto( - fileSystemInfos.Length, fileSystems - )); - } - - [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Move)] - public virtual Task MoveFileAsync(FileCopyOrMoveDto input) - { - string fileSystemPath = GetFileSystemPath(input.Path); - fileSystemPath = Path.Combine(fileSystemPath, input.Name); - if (!File.Exists(fileSystemPath)) - { - throw new UserFriendlyException(L["FilePathNotFound"]); - } - var moveToFilePath = GetFileSystemPath(input.ToPath); - moveToFilePath = Path.Combine(moveToFilePath, input.ToName ?? input.Name); - if (File.Exists(moveToFilePath)) - { - throw new UserFriendlyException(L["FilePathAlreadyExists"]); - } - - File.Move(fileSystemPath, moveToFilePath); - - return Task.CompletedTask; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.Move)] - public virtual Task MoveFolderAsync([Required, StringLength(255)] string path, FolderMoveDto input) - { - string fileSystemPath = GetFileSystemPath(path); - if (!Directory.Exists(fileSystemPath)) - { - throw new UserFriendlyException(L["FilePathNotFound"]); - } - var moveToFilePath = GetFileSystemPath(input.MoveToPath); - if (Directory.Exists(moveToFilePath)) - { - throw new UserFriendlyException(L["FilePathAlreadyExists"]); - } - - Directory.Move(fileSystemPath, moveToFilePath); - - return Task.CompletedTask; - } - - [Authorize(AbpFileManagementPermissions.FileSystem.Update)] - public virtual Task UpdateAsync([Required, StringLength(255)] string name, FileSystemUpdateDto input) - { - string fileSystemPath = GetFileSystemPath(name); - var renameFilePath = GetFileSystemPath(input.NewName); - if (File.Exists(fileSystemPath)) - { - if (File.Exists(renameFilePath)) - { - throw new UserFriendlyException(L["FilePathAlreadyExists"]); - } - File.Move(fileSystemPath, renameFilePath); - - var fileInfo = new FileInfo(renameFilePath); - var fileSystem = new FileSystemDto - { - Type = FileSystemType.File, - Name = fileInfo.Name, - Size = fileInfo.Length, - Extension = fileInfo.Extension, - CreationTime = fileInfo.CreationTime, - LastModificationTime = fileInfo.LastWriteTime - }; - if (fileInfo.Directory != null && !fileInfo.Directory.FullName.IsNullOrWhiteSpace()) - { - fileSystem.Parent = GetFileSystemRelativePath(fileInfo.Directory.FullName); - } - return Task.FromResult(fileSystem); - } - if (Directory.Exists(fileSystemPath)) - { - if (Directory.Exists(renameFilePath)) - { - throw new UserFriendlyException(L["FilePathAlreadyExists"]); - } - - Directory.Move(fileSystemPath, renameFilePath); - - var directoryInfo = new DirectoryInfo(renameFilePath); - var fileSystem = new FileSystemDto - { - Type = FileSystemType.Folder, - Name = directoryInfo.Name, - CreationTime = directoryInfo.CreationTime, - LastModificationTime = directoryInfo.LastWriteTime - }; - if (directoryInfo.Parent != null && !directoryInfo.Parent.FullName.IsNullOrWhiteSpace()) - { - fileSystem.Parent = GetFileSystemRelativePath(directoryInfo.Parent.FullName); - } - return Task.FromResult(fileSystem); - } - throw new UserFriendlyException(L["FilePathNotFound"]); - } - /// - /// 获取文件系统相对路径 - /// - /// - /// - protected virtual string GetFileSystemRelativePath(string path) - { - // 去除完整路径中的文件系统根目录 - var fileSystemConfiguration = GetFileSystemBlobProviderConfiguration(); - var blobPath = fileSystemConfiguration.BasePath; - // 去除租户或宿主目录 - if (CurrentTenant.Id == null) - { - blobPath = Path.Combine(blobPath, "host"); - } - else - { - blobPath = Path.Combine(blobPath, "tenants", CurrentTenant.Id.Value.ToString("D")); - } - // 去除完整路径中的容器根目录 - var containerName = BlobContainerNameAttribute.GetContainerName(); - if (path.Contains(containerName)) - { - blobPath = Path.Combine(blobPath, containerName); - } - path = path.Replace(blobPath, ""); - path = path.Replace('/', Path.DirectorySeparatorChar); - path = path.Replace('\\', Path.DirectorySeparatorChar); - return path; - } - /// - /// 获取合并的文件路径 - /// - /// - /// - protected virtual string GetFileSystemPath(string path) - { - var fileSystemConfiguration = GetFileSystemBlobProviderConfiguration(); - var blobPath = GetFileSystemBashPath(); - - if (!path.IsNullOrWhiteSpace() && fileSystemConfiguration.AppendContainerNameToBasePath) - { - path = path.Replace('/', Path.DirectorySeparatorChar); - path = path.Replace('\\', Path.DirectorySeparatorChar); - // 去除第一个路径标识符 - path = path.RemovePreFix("/", "\\"); - blobPath = Path.Combine(blobPath, path); - } - - return blobPath; - } - /// - /// 获取文件系统存储路径 - /// - /// - protected virtual string GetFileSystemBashPath() - { - var fileSystemConfiguration = GetFileSystemBlobProviderConfiguration(); - var blobPath = fileSystemConfiguration.BasePath; - blobPath = Path.Combine(Directory.GetCurrentDirectory(), blobPath); - if (CurrentTenant.Id == null) - { - blobPath = Path.Combine(blobPath, "host"); - } - else - { - blobPath = Path.Combine(blobPath, "tenants", CurrentTenant.Id.Value.ToString("D")); - } - var containerName = BlobContainerNameAttribute.GetContainerName(); - - blobPath = Path.Combine(blobPath, containerName); - - if (!Directory.Exists(blobPath)) - { - Directory.CreateDirectory(blobPath); - } - - return blobPath; - } - - protected virtual FileSystemBlobProviderConfiguration GetFileSystemBlobProviderConfiguration() - { - var blobConfiguration = BlobContainerConfigurationProvider - .Get(); - return blobConfiguration.GetFileSystemConfiguration(); - } - - protected void CopyDirectory(string sourcePath, string copyToPath) - { - var sourceDirectory = new DirectoryInfo(sourcePath); - var fileSystemInfos = sourceDirectory.GetFileSystemInfos(); - - foreach (var fileSystemInfo in fileSystemInfos) - { - var copyToFilePath = Path.Combine(copyToPath, fileSystemInfo.Name); - if (fileSystemInfo is DirectoryInfo) - { - if (!Directory.Exists(copyToFilePath)) - { - Directory.CreateDirectory(copyToFilePath); - } - CopyDirectory(fileSystemInfo.FullName, copyToFilePath); - } - else - { - File.Copy(fileSystemInfo.FullName, copyToFilePath, true); - } - } - - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs index f746ac847..bb141b8cc 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.FileManagement { public static class FileManagementErrorCodes { @@ -15,5 +11,7 @@ namespace LINGYUN.Abp.FileManagement public const string ObjectDeleteWithNotEmpty = Namespace + ":020001"; public const string ObjectAlreadyExists = Namespace + ":020402"; public const string ObjectNotFound = Namespace + ":020404"; + + public const string OssNameHasTooLong = Namespace + ":000405"; } } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json index 593dd067b..9226adb40 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json @@ -7,6 +7,7 @@ "Abp.FileManagement:020001": "An object that has more than one child cannot be deleted!", "Abp.FileManagement:020402": "The object name already exists!", "Abp.FileManagement:020404": "The queried object could not be found!", + "Abp.FileManagement:000405": "The path object name has exceeded the allowable maximum length and cannot continue to create a new object!", "Permission:FileManagement": "File management", "Permission:FileSystem": "File system", "Permission:FileManager": "Files", diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json index f33ccb294..a5ed73cd8 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json @@ -7,6 +7,7 @@ "Abp.FileManagement:020001": "不能删除存在多个子级的对象!", "Abp.FileManagement:020402": "对象名称已经存在!", "Abp.FileManagement:020404": "未能找到查询的对象!", + "Abp.FileManagement:000405": "此路径对象名称已超出允许的最大长度,无法继续创建新对象!", "Permission:FileManagement": "文件管理", "Permission:FileSystem": "文件系统", "Permission:FileManager": "文件", diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj index 2065cb5f0..b71d697a1 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj @@ -8,7 +8,7 @@ - + diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainer.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainer.cs index 58c0e2f79..8db2b4542 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainer.cs +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainer.cs @@ -1,16 +1,16 @@ -using System; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Options; +using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; +using Volo.Abp; using Volo.Abp.BlobStoring; using Volo.Abp.BlobStoring.FileSystem; -using Volo.Abp.MultiTenancy; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.DependencyInjection; using Volo.Abp.IO; -using Volo.Abp; +using Volo.Abp.MultiTenancy; namespace LINGYUN.Abp.FileManagement.FileSystem { @@ -44,11 +44,23 @@ namespace LINGYUN.Abp.FileManagement.FileSystem public virtual Task BulkDeleteObjectsAsync(BulkDeleteObjectRequest request) { - var filesPath = request.Objects.Select(x => CalculateFilePath(request.Bucket, x)); + var objectPath = !request.Path.IsNullOrWhiteSpace() + ? request.Path.EnsureEndsWith('/') + : ""; + var filesPath = request.Objects.Select(x => CalculateFilePath(request.Bucket, objectPath + x)); foreach (var file in filesPath) { - if (File.Exists(file)) + if (Directory.Exists(file)) + { + if (Directory.GetFileSystemEntries(file).Length > 0) + { + throw new BusinessException(code: FileManagementErrorCodes.ContainerDeleteWithNotEmpty); + // throw new ContainerDeleteWithNotEmptyException("00101", $"Can't not delete container {name}, because it is not empty!"); + } + Directory.Delete(file); + } + else if (File.Exists(file)) { File.Delete(file); } @@ -60,6 +72,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem public virtual Task CreateAsync(string name) { var filePath = CalculateFilePath(name); + ThrowOfPathHasTooLong(filePath); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); @@ -91,6 +104,8 @@ namespace LINGYUN.Abp.FileManagement.FileSystem var filePath = CalculateFilePath(request.Bucket, objectName); if (!request.Content.IsNullOrEmpty()) { + ThrowOfPathHasTooLong(filePath); + if (File.Exists(filePath)) { throw new BusinessException(code: FileManagementErrorCodes.ObjectAlreadyExists); @@ -126,6 +141,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem } else { + ThrowOfPathHasTooLong(filePath); if (Directory.Exists(filePath)) { throw new BusinessException(code: FileManagementErrorCodes.ObjectAlreadyExists); @@ -159,14 +175,15 @@ namespace LINGYUN.Abp.FileManagement.FileSystem var filePath = CalculateFilePath(name); if (!Directory.Exists(filePath)) { - // 非空目录无法删除 - if (Directory.GetFiles(filePath).Length > 0) - { - throw new BusinessException(code: FileManagementErrorCodes.ContainerDeleteWithNotEmpty); - // throw new ContainerDeleteWithNotEmptyException("00101", $"Can't not delete container {name}, because it is not empty!"); - } - Directory.Delete(filePath); + throw new BusinessException(code: FileManagementErrorCodes.ContainerNotFound); } + // 非空目录无法删除 + if (Directory.GetFileSystemEntries(filePath).Length > 0) + { + throw new BusinessException(code: FileManagementErrorCodes.ContainerDeleteWithNotEmpty); + // throw new ContainerDeleteWithNotEmptyException("00101", $"Can't not delete container {name}, because it is not empty!"); + } + Directory.Delete(filePath); return Task.CompletedTask; } @@ -177,13 +194,13 @@ namespace LINGYUN.Abp.FileManagement.FileSystem ? request.Object : request.Path.EnsureEndsWith('/') + request.Object; var filePath = CalculateFilePath(request.Bucket, objectName); - if (!File.Exists(filePath)) + if (File.Exists(filePath)) { File.Delete(filePath); } else if (Directory.Exists(filePath)) { - if (Directory.GetFiles(filePath).Length > 0) + if (Directory.GetFileSystemEntries(filePath).Length > 0) { throw new BusinessException(code: FileManagementErrorCodes.ObjectDeleteWithNotEmpty); } @@ -508,5 +525,15 @@ namespace LINGYUN.Abp.FileManagement.FileSystem return blobPath; } + + private void ThrowOfPathHasTooLong(string path) + { + // Windows 133 260 + // Linux 255 4096 + //if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && path.Length >= 255) // 预留5位 + //{ + // throw new BusinessException(code: FileManagementErrorCodes.OssNameHasTooLong); + //} + } } } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileSystemController.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileSystemController.cs deleted file mode 100644 index 136530588..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileSystemController.cs +++ /dev/null @@ -1,265 +0,0 @@ -using LINGYUN.Abp.FileManagement.Localization; -using LINGYUN.Abp.FileManagement.Permissions; -using LINGYUN.Abp.FileManagement.Settings; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.StaticFiles; -using System; -using System.ComponentModel.DataAnnotations; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Application.Dtos; -using Volo.Abp.AspNetCore.Mvc; -using Volo.Abp.IO; -using Volo.Abp.Settings; -using Volo.Abp.Features; -using LINGYUN.Abp.FileManagement.Features; - -namespace LINGYUN.Abp.FileManagement -{ - [Controller] - [RemoteService(Name = "AbpFileManagement")] - [Area("file-management")] - [Route("api/file-management/file-system")] - public class FileSystemController : AbpController - { - protected ISettingProvider SettingProvider { get; } - protected IFileSystemAppService FileSystemAppService { get; } - - public FileSystemController( - ISettingProvider settingProvider, - IFileSystemAppService fileSystemAppService) - { - SettingProvider = settingProvider; - FileSystemAppService = fileSystemAppService; - LocalizationResource = typeof(AbpFileManagementResource); - } - - [HttpPut] - [Route("files/copy")] - public virtual async Task CopyFileAsync(FileCopyOrMoveDto input) - { - await FileSystemAppService.CopyFileAsync(input); - } - - [HttpPut] - [Route("folders/copy")] - public virtual async Task CopyFolderAsync([Required, StringLength(255)] string path, FolderCopyDto input) - { - await FileSystemAppService.CopyFolderAsync(path, input); - } - - [HttpPost] - [Route("files")] - [RequiresFeature(AbpFileManagementFeatureNames.FileSystem.UploadFile)] - [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Create)] - public virtual async Task CreateFileAsync([FromForm] FileUploadDto input) - { - // 检查文件大小 - var fileSizeLimited = await SettingProvider - .GetAsync( - AbpFileManagementSettingNames.FileLimitLength, - AbpFileManagementSettingNames.DefaultFileLimitLength); - if (fileSizeLimited * 1024 * 1024 < input.TotalSize) - { - throw new UserFriendlyException(L["UploadFileSizeBeyondLimit", fileSizeLimited]); - } - // 采用分块模式上传文件 - - // 保存分块到临时目录 - var fileName = input.FileName; - // 文件扩展名 - var fileExtensionName = FileHelper.GetExtension(fileName); - var fileAllowExtension = await SettingProvider - .GetOrDefaultAsync(AbpFileManagementSettingNames.AllowFileExtensions, ServiceProvider); - // 检查文件扩展名 - if (!fileAllowExtension.Split(',') - .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase))) - { - throw new UserFriendlyException(L["NotAllowedFileExtensionName", fileExtensionName]); - } - // 以上传的文件名创建一个临时目录 - var tempFilePath = Path.Combine( - Path.GetTempPath(), - "lingyun-abp-file-management", - "upload", - string.Concat(input.Path ?? "", input.FileName).ToMd5()); - DirectoryHelper.CreateIfNotExists(tempFilePath); - // 以上传的分片索引创建临时文件 - var tempSavedFile = Path.Combine(tempFilePath, $"{input.ChunkNumber}.{fileExtensionName}"); - try - { - if (HttpContext.RequestAborted.IsCancellationRequested) - { - // 如果取消请求,删除临时目录 - Directory.Delete(tempFilePath, true); - return; - } - - if (input.File != null) - { - // 保存临时文件 - using (var fs = new FileStream(tempSavedFile, FileMode.Create, FileAccess.Write)) - { - // 写入当前分片文件 - await input.File.CopyToAsync(fs); - } - } - - if (input.ChunkNumber == input.TotalChunks) - { - // 合并文件 - var mergeSavedFile = Path.Combine(tempFilePath, $"{fileName}"); - // 获取并排序所有分片文件 - var mergeFiles = Directory.GetFiles(tempFilePath).OrderBy(f => f.Length).ThenBy(f => f); - // 创建临时合并文件 - input.Data = new byte[0]; - foreach (var mergeFile in mergeFiles) - { - // 读取当前文件字节 - var mergeFileBytes = await FileHelper.ReadAllBytesAsync(mergeFile); - // 写入到合并文件流 - input.Data = input.Data.Concat(mergeFileBytes).ToArray(); - Array.Clear(mergeFileBytes,0, mergeFileBytes.Length); - // 删除已参与合并的临时文件分片 - FileHelper.DeleteIfExists(mergeFile); - } - await FileSystemAppService.CreateFileAsync(input); - // 文件保存之后删除临时文件目录 - Directory.Delete(tempFilePath, true); - } - } - catch - { - // 发生异常删除临时文件目录 - Directory.Delete(tempFilePath, true); - throw; - } - } - - [HttpPost] - [Route("folders")] - public virtual async Task CreateFolderAsync(FolderCreateDto input) - { - await FileSystemAppService.CreateFolderAsync(input); - } - - [HttpDelete] - [Route("files")] - public virtual async Task DeleteFileAsync(FileDeleteDto input) - { - await FileSystemAppService.DeleteFileAsync(input); - } - - [HttpDelete] - [Route("folders")] - public virtual async Task DeleteFolderAsync([Required, StringLength(255)] string path) - { - await FileSystemAppService.DeleteFolderAsync(path); - } - - [HttpGet] - [Route("files")] - [RequiresFeature(AbpFileManagementFeatureNames.FileSystem.DownloadFile)] - [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Download)] - public virtual async Task DownloadFileAsync(FileSystemDownloadDto input) - { - var tempFileName = string.Concat(input.Path ?? "", input.Name); - tempFileName = tempFileName.ToMd5() + Path.GetExtension(input.Name); - // 以上传的文件名创建一个临时目录 - var tempFilePath = Path.Combine( - Path.GetTempPath(), - "lingyun-abp-file-management", - "download"); - DirectoryHelper.CreateIfNotExists(tempFilePath); - tempFilePath = Path.Combine(tempFilePath, tempFileName); - long contentLength = 0L; - // 单个分块大小 2MB - int bufferSize = 2 * 1024 * 1024; - using (new DisposeAction(() => - { - // 最终下载完毕后,删除临时文件 - if (bufferSize + input.CurrentByte > contentLength) - { - FileHelper.DeleteIfExists(tempFilePath); - } - })) - { - if (!System.IO.File.Exists(tempFilePath)) - { - var blobStream = await FileSystemAppService.DownloadFileAsync(input); - using (var tempFileStream = new FileStream(tempFilePath, FileMode.Create, FileAccess.Write)) - { - blobStream.Position = 0; - await blobStream.CopyToAsync(tempFileStream); - } - } - // 读取缓存文件 - using var fileStream = new FileStream(tempFilePath, FileMode.Open, FileAccess.Read); - // 得到文件扩展名 - var fileExt = Path.GetExtension(input.Name); - var provider = new FileExtensionContentTypeProvider(); - // Http响应标头的文件类型 - string memi = provider.Mappings[fileExt]; - // 文件大小 - contentLength = fileStream.Length; - if (bufferSize > contentLength) - { - var currentTransferBytes = await fileStream.GetAllBytesAsync(); - // 写入响应流 - return File(currentTransferBytes, memi, input.Name); - } - else - { - // 当前分页传输字节 - byte[] currentTransferBytes = new byte[bufferSize]; - if (input.CurrentByte + bufferSize >= contentLength) - { - currentTransferBytes = new byte[contentLength - input.CurrentByte]; - } - // 读取文件流中的当前分块区段 - fileStream.Seek(input.CurrentByte, SeekOrigin.Begin); - await fileStream.ReadAsync(currentTransferBytes, 0, currentTransferBytes.Length); - // 写入响应流 - return File(currentTransferBytes, memi, input.Name); - } - } - } - - [HttpGet] - [Route("profile")] - public virtual async Task GetAsync(FileSystemGetDto input) - { - return await FileSystemAppService.GetAsync(input); - } - - [HttpGet] - public virtual async Task> GetListAsync(GetFileSystemListDto input) - { - return await FileSystemAppService.GetListAsync(input); - } - - [HttpPut] - [Route("files/move")] - public virtual async Task MoveFileAsync(FileCopyOrMoveDto input) - { - await FileSystemAppService.MoveFileAsync(input); - } - - [HttpPut] - [Route("folders/move")] - public virtual async Task MoveFolderAsync([Required, StringLength(255)] string path, FolderMoveDto input) - { - await FileSystemAppService.MoveFolderAsync(path, input); - } - - [HttpPut] - public virtual async Task UpdateAsync([Required, StringLength(255)] string name, FileSystemUpdateDto input) - { - return await FileSystemAppService.UpdateAsync(name, input); - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileUploadDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileUploadDto.cs deleted file mode 100644 index 490f4847e..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileUploadDto.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Microsoft.AspNetCore.Http; -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileUploadDto : FileCreateDto - { - /// - /// 常规块大小 - /// - [Required] - public int ChunkSize { get; set; } - /// - /// 当前块大小 - /// - [Required] - public int CurrentChunkSize { get; set; } - /// - /// 当前上传中块的索引 - /// - [Required] - public int ChunkNumber { get; set; } - /// - /// 块总数 - /// - [Required] - public int TotalChunks { get; set; } - /// - /// 总文件大小 - /// - [Required] - public int TotalSize { get; set; } - public IFormFile File { get; set; } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileValidater.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileValidater.cs new file mode 100644 index 000000000..4640a989a --- /dev/null +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileValidater.cs @@ -0,0 +1,96 @@ +using LINGYUN.Abp.FileManagement.Settings; +using Microsoft.Extensions.Caching.Memory; +using System; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.DependencyInjection; +using Volo.Abp.IO; +using Volo.Abp.Settings; +using Microsoft.Extensions.Localization; +using LINGYUN.Abp.FileManagement.Localization; + +namespace LINGYUN.Abp.FileManagement +{ + public class FileValidater : IFileValidater, ISingletonDependency + { + private readonly IMemoryCache _cache; + private readonly ISettingProvider _settingProvider; + private readonly IServiceProvider _serviceProvider; + private readonly IStringLocalizer _stringLocalizer; + + public FileValidater( + IMemoryCache cache, + ISettingProvider settingProvider, + IServiceProvider serviceProvider, + IStringLocalizer stringLocalizer) + { + _cache = cache; + _settingProvider = settingProvider; + _serviceProvider = serviceProvider; + _stringLocalizer = stringLocalizer; + } + + public virtual async Task ValidationAsync(UploadOssObjectInput input) + { + var validation = await GetByCacheItemAsync(); + if (validation.SizeLimit * 1024 * 1024 < input.TotalSize) + { + throw new UserFriendlyException(_stringLocalizer["UploadFileSizeBeyondLimit", validation.SizeLimit]); + } + var fileExtensionName = FileHelper.GetExtension(input.FileName); + if (!validation.AllowedExtensions + .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase))) + { + throw new UserFriendlyException(_stringLocalizer["NotAllowedFileExtensionName", fileExtensionName]); + } + } + + protected virtual async Task GetByCacheItemAsync() + { + var fileValidation = _cache.Get(FileValidation.CacheKey); + if (fileValidation == null) + { + fileValidation = await GetBySettingAsync(); + _cache.Set(FileValidation.CacheKey, + fileValidation, + new MemoryCacheEntryOptions + { + AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(2) + }); + } + return fileValidation; + } + + protected virtual async Task GetBySettingAsync() + { + var fileSizeLimited = await _settingProvider + .GetAsync( + AbpFileManagementSettingNames.FileLimitLength, + AbpFileManagementSettingNames.DefaultFileLimitLength); + var fileAllowExtension = await _settingProvider + .GetOrDefaultAsync(AbpFileManagementSettingNames.AllowFileExtensions, _serviceProvider); + + return new FileValidation(fileSizeLimited, fileAllowExtension.Split(',')); + } + } + + public class FileValidation + { + public const string CacheKey = "Abp.FileManagement.FileValidation"; + public int SizeLimit { get; set; } + public string[] AllowedExtensions { get; set; } + public FileValidation() + { + + } + + public FileValidation( + int sizeLimit, + string[] allowedExtensions) + { + SizeLimit = sizeLimit; + AllowedExtensions = allowedExtensions; + } + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/IFileValidater.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/IFileValidater.cs new file mode 100644 index 000000000..c6bb68030 --- /dev/null +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/IFileValidater.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace LINGYUN.Abp.FileManagement +{ + public interface IFileValidater + { + Task ValidationAsync(UploadOssObjectInput input); + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssObjectController.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssObjectController.cs index f803316d5..dcf865542 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssObjectController.cs +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssObjectController.cs @@ -1,9 +1,16 @@ -using Microsoft.AspNetCore.Mvc; +using LINGYUN.Abp.FileManagement.Settings; +using Microsoft.AspNetCore.Mvc; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.IO; +using System.Linq; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Auditing; +using Volo.Abp.IO; +using Volo.Abp.Settings; using Volo.Abp.Validation; namespace LINGYUN.Abp.FileManagement @@ -13,11 +20,14 @@ namespace LINGYUN.Abp.FileManagement [Route("api/file-management/objects")] public class OssObjectController : AbpController, IOssObjectAppService { + protected IFileValidater FileValidater { get; } protected IOssObjectAppService OssObjectAppService { get; } public OssObjectController( + IFileValidater fileValidater, IOssObjectAppService ossObjectAppService) { + FileValidater = fileValidater; OssObjectAppService = ossObjectAppService; } @@ -29,30 +39,82 @@ namespace LINGYUN.Abp.FileManagement [HttpPost] [Route("upload")] - public virtual async Task UploadAsync([FromForm] UploadOssObjectInput input) + [DisableAuditing] + public virtual async Task UploadAsync([FromForm] UploadOssObjectInput input) { - var createOssObjectInput = new CreateOssObjectInput + await FileValidater.ValidationAsync(input); + // 以上传的文件名创建一个临时目录 + var tempFilePath = Path.Combine( + Path.GetTempPath(), + "lingyun-abp-application", + "upload-tmp", + string.Concat(input.Path ?? "", input.FileName).ToMd5()); + DirectoryHelper.CreateIfNotExists(tempFilePath); + // 以上传的分片索引创建临时文件 + var tempSavedFile = Path.Combine(tempFilePath, $"{input.ChunkNumber}.uploadtmp"); + try { - Bucket = input.Bucket, - Path = input.Path, - Object = input.Name - }; - if (input.File != null) + if (HttpContext.RequestAborted.IsCancellationRequested) + { + // 如果取消请求,删除临时目录 + Directory.Delete(tempFilePath, true); + return; + } + + if (input.File != null) + { + // 保存临时文件 + using (var fs = new FileStream(tempSavedFile, FileMode.Create, FileAccess.Write)) + { + // 写入当前分片文件 + await input.File.CopyToAsync(fs); + } + } + + if (input.ChunkNumber == input.TotalChunks) + { + var createOssObjectInput = new CreateOssObjectInput + { + Bucket = input.Bucket, + Path = input.Path, + Object = input.FileName + }; + // 合并文件 + var mergeSavedFile = Path.Combine(tempFilePath, $"{input.FileName}"); + // 获取并排序所有分片文件 + var mergeFiles = Directory.GetFiles(tempFilePath).OrderBy(f => f.Length).ThenBy(f => f); + // 创建临时合并文件 + using (var memoryStream = new MemoryStream()) + { + foreach (var mergeFile in mergeFiles) + { + // 读取当前文件字节 + var mergeFileBytes = await FileHelper.ReadAllBytesAsync(mergeFile); + // 写入到合并文件流 + await memoryStream.WriteAsync(mergeFileBytes, HttpContext.RequestAborted); + Array.Clear(mergeFileBytes, 0, mergeFileBytes.Length); + // 删除已参与合并的临时文件分片 + FileHelper.DeleteIfExists(mergeFile); + } + createOssObjectInput.SetContent(memoryStream); + + await OssObjectAppService.CreateAsync(createOssObjectInput); + // 文件保存之后删除临时文件目录 + Directory.Delete(tempFilePath, true); + } + } + } + catch { - //if (input.File.Length <= 0) - //{ - // ThrowValidationException(L["FileNotBeNullOrEmpty"], "File"); - //} - createOssObjectInput.Object = input.File.FileName; - createOssObjectInput.Content = input.File.OpenReadStream(); + // 发生异常删除临时文件目录 + Directory.Delete(tempFilePath, true); + throw; } - - return await OssObjectAppService.CreateAsync(createOssObjectInput); } [HttpDelete] [Route("bulk-delete")] - public virtual async Task BulkDeleteAsync(BulkDeleteOssObjectInput input) + public virtual async Task BulkDeleteAsync([FromBody] BulkDeleteOssObjectInput input) { await OssObjectAppService.BulkDeleteAsync(input); } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/UploadOssObjectInput.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/UploadOssObjectInput.cs index 856e44c5a..972bf4510 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/UploadOssObjectInput.cs +++ b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/UploadOssObjectInput.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Http; +using System.ComponentModel.DataAnnotations; namespace LINGYUN.Abp.FileManagement { @@ -6,7 +7,41 @@ namespace LINGYUN.Abp.FileManagement { public string Bucket { get; set; } public string Path { get; set; } - public string Name { get; set; } + + #region 配合Uplaoder 分块传输 + /// + /// 文件名 + /// + [Required] + public string FileName { get; set; } + /// + /// 常规块大小 + /// + [Required] + public int ChunkSize { get; set; } + /// + /// 当前块大小 + /// + [Required] + public int CurrentChunkSize { get; set; } + /// + /// 当前上传中块的索引 + /// + [Required] + public int ChunkNumber { get; set; } + /// + /// 块总数 + /// + [Required] + public int TotalChunks { get; set; } + /// + /// 总文件大小 + /// + [Required] + public int TotalSize { get; set; } + + #endregion + public IFormFile File { get; set; } } } diff --git a/vueJs/src/api/oss-manager.ts b/vueJs/src/api/oss-manager.ts index 517e9d9c2..2a02a7af2 100644 --- a/vueJs/src/api/oss-manager.ts +++ b/vueJs/src/api/oss-manager.ts @@ -5,7 +5,7 @@ import { urlStringify } from '@/utils/index' const serviceUrl = process.env.VUE_APP_BASE_API const containerUrl = '/api/file-management/containes' const objectUrl = '/api/file-management/objects' -export const objectUploadUrl = objectUrl + '/upload' +export const objectUploadUrl = serviceUrl + objectUrl + '/upload' export const staticUrl = '/api/files/static/' export default class OssManager { @@ -29,7 +29,7 @@ export default class OssManager { return ApiService.Delete(_url, serviceUrl) } - public static createFolder(bucket: string, name: string, path: string = "") { + public static createFolder(bucket: string, name: string, path: string = '') { const input = { bucket: bucket, object: name, @@ -43,7 +43,7 @@ export default class OssManager { return ApiService.Get(_url, serviceUrl) } - public static getObject(bucket: string, object: string, path: string = "") { + public static getObject(bucket: string, object: string, path: string = '') { let _url = objectUrl + '?bucket=' + bucket + '&object=' + object if (path) { _url += '&path=' + path @@ -51,31 +51,53 @@ export default class OssManager { return ApiService.Get(_url, serviceUrl) } - public static getObjectData(bucket: string, object: string, path: string = "") { - let _url = staticUrl + bucket + '/' - if (path) { - // 某些情况下要对 / 编码 - _url += '/p/' + path.replace('/', '%2F') - if (_url.endsWith('%2F')) { - _url = _url.substring(0, _url.length - 3) + '/' - } - } - _url += object + public static getObjectData(bucket: string, object: string, path: string = '') { return ApiService.HttpRequest({ - url: _url, + url: this.generateOssUrl(bucket, object, path), baseURL: serviceUrl, method: 'GET', responseType: 'blob' }) } - public static deleteObject(bucket: string, object: string, path: string = "") { + public static deleteObject(bucket: string, object: string, path: string = '') { let _url = objectUrl + '?bucket=' + bucket + '&object=' + object if (path) { _url += '&path=' + path } return ApiService.Delete(_url, serviceUrl) } + + public static bulkDeleteObject(bucket: string, objects: string[], path: string = '') { + const _url = objectUrl + '/bulk-delete' + return ApiService + .HttpRequest({ + url: _url, + baseURL: serviceUrl, + method: 'DELETE', + data: { + bucket: bucket, + path: path, + objects: objects + } + }) + } + + public static generateOssUrl(bucket: string, object: string, path: string = '', prefix: string = '') { + let _url = staticUrl + bucket + '/' + if (path) { + // 某些情况下要对 / 编码 + _url += '/p/' + path.replace('/', '%2F') + if (_url.endsWith('%2F')) { + _url = _url.substring(0, _url.length - 3) + '/' + } + } + _url += object + if (prefix) { + _url = prefix + _url + } + return _url + } } export class GetOssContainerRequest extends PagedAndSortedResultRequestDto { diff --git a/vueJs/src/views/oss-management/components/OssObjectUploadDialog.vue b/vueJs/src/views/oss-management/components/OssObjectUploadDialog.vue new file mode 100644 index 000000000..bbb0d7d5b --- /dev/null +++ b/vueJs/src/views/oss-management/components/OssObjectUploadDialog.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/vueJs/src/views/oss-management/index.vue b/vueJs/src/views/oss-management/index.vue index 1dd052413..1edb0b9d4 100644 --- a/vueJs/src/views/oss-management/index.vue +++ b/vueJs/src/views/oss-management/index.vue @@ -157,6 +157,15 @@ :path="selectionOssObject.path" @closed="showOssObject=false" /> + + @@ -171,6 +180,7 @@ import OssManagerApi, { import { dateFormat } from '@/utils/index' import { checkPermission } from '@/utils/permission' import OssObjectProfile from './components/OssObjectProfile.vue' +import OssObjectUploadDialog from './components/OssObjectUploadDialog.vue' const kbUnit = 1 * 1024 const mbUnit = kbUnit * 1024 @@ -180,7 +190,8 @@ const $contextmenu = Vue.prototype.$contextmenu @Component({ name: 'OssManagement', components: { - OssObjectProfile + OssObjectProfile, + OssObjectUploadDialog }, methods: { checkPermission @@ -226,6 +237,9 @@ export default class OssManagement extends Vue { private objects = new Array() private fileSystemRoot = new Array() + private showUploadOss = false + private uploadPath = '' + private getObjectRequest = new GetOssObjectRequest() private getBucketRequest = new GetOssContainerRequest() @@ -330,6 +344,7 @@ export default class OssManagement extends Vue { .deleteObject(this.bucket, oss.name, oss.path) .then(() => { this.$notify.success(this.l('global.dataHasBeenDeleted', { name: oss.name })) + this.handleClearObjects() this.handleGetObjects() }) } @@ -343,11 +358,14 @@ export default class OssManagement extends Vue { } private handleDownloadOssObject(oss: OssObject) { - console.log(oss) - } - - private handleFileSystemCommand(command: any) { - console.log(command) + if (!oss.isFolder) { + const link = document.createElement('a') + link.style.display = 'none' + link.href = OssManagerApi.generateOssUrl(this.bucket, oss.name, oss.path, '/api/') + link.setAttribute('download', oss.name) + document.body.appendChild(link) + link.click() + } } private handleClearObjects() { @@ -364,11 +382,6 @@ export default class OssManagement extends Vue { label: this.$t('fileSystem.addFolder'), disabled: !checkPermission(['AbpFileManagement.FileSystem.Create']), onClick: () => { - let parent = '' - // 在根目录下 - if (this.fileSystemRoot.length > 1) { - parent = this.fileSystemRoot.slice(1).join('') - } this.$prompt(this.$t('global.pleaseInputBy', { key: this.$t('fileSystem.name') }).toString(), this.$t('fileSystem.addFolder').toString(), { showInput: true, @@ -380,7 +393,7 @@ export default class OssManagement extends Vue { }).then((val: any) => { const name = val.value + '/' OssManagerApi - .createFolder(this.bucket, name.replace('//', '/'), parent) + .createFolder(this.bucket, name.replace('//', '/'), this.getCurrentPath()) .then(res => { this.$message.success(this.$t('fileSystem.folderCreateSuccess', { name: res.name }).toString()) this.handleClearObjects() @@ -394,28 +407,25 @@ export default class OssManagement extends Vue { label: this.$t('fileSystem.upload'), disabled: !checkPermission(['AbpFileManagement.FileSystem.FileManager.Create']), onClick: () => { - let path = '' - if (this.fileSystemRoot.length > 1) { - path = this.fileSystemRoot.slice(1).join('/') - } + this.uploadPath = this.getCurrentPath() + this.showUploadOss = true }, divided: true }, - { - label: this.$t('fileSystem.bacthDownload'), - disabled: !checkPermission(['AbpFileManagement.FileSystem.FileManager.Download']), - onClick: () => { - const table = this.$refs.ossObjectTable as any - } - }, { label: this.$t('fileSystem.bacthDelete'), - disabled: true, // !checkPermission(['AbpFileManagement.FileSystem.FileManager.Delete']), + disabled: !checkPermission(['AbpFileManagement.FileSystem.FileManager.Delete']), onClick: () => { // 未公布批量删除接口 - // const table = this.$refs.ossObjectTable as any - // 过滤类型为文件的选中项 - // const selectFiles = table.selection.filter((x: any) => x.type === 1) + const table = this.$refs.ossObjectTable as any + console.log(table) + OssManagerApi + .bulkDeleteObject(this.bucket, table.selection.map((x: any) => x.name), this.getCurrentPath()) + .then(() => { + this.$message.success(this.l('successful')) + this.handleClearObjects() + this.handleGetObjects() + }) } } ], @@ -427,6 +437,20 @@ export default class OssManagement extends Vue { return false } + private onFileUploaded() { + this.$message.success(this.l('fileSystem.uploadSuccess')) + this.handleClearObjects() + this.handleGetObjects() + } + + private getCurrentPath() { + let path = '' + if (this.fileSystemRoot.length > 1) { + path = this.fileSystemRoot.slice(1).join('') + } + return path + } + private l(name: string, values?: any[] | { [key: string]: any }) { return this.$t(name, values).toString() } From 9e7d3badd73dddff0351cfecd59b01095f854cdd Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Wed, 10 Mar 2021 16:47:01 +0800 Subject: [PATCH 4/8] rename LINGYUN.Abp.FileManagement.* to LINGYUN.Abp.OssManagement.* --- aspnet-core/LINGYUN.MicroService.All.sln | 28 ++++--- .../LINGYUN.MicroService.BackendAdmin.sln | 18 ++--- aspnet-core/LINGYUN.MicroService.Platform.sln | 54 +++++++++++-- .../cloud-aliyun/LINGYUN.Abp.Aliyun/README.md | 24 +++++- .../README.en.md | 24 +++--- .../README.md | 20 ++--- ...ileManagementApplicationContractsModule.cs | 12 --- ...FileManagementFeatureDefinitionProvider.cs | 49 ------------ .../Features/AbpFileManagementFeatureNames.cs | 23 ------ ...eManagementPermissionDefinitionProvider.cs | 34 -------- .../AbpFileManagementPermissions.cs | 44 ----------- .../AbpFileManagementApplicationModule.cs | 23 ------ .../FileManagementApplicationServiceBase.cs | 13 ---- .../Localization/AbpFileManagementResource.cs | 9 --- .../AbpFileManagementContainer.cs | 9 --- .../AbpFileManagementDomainModule.cs | 15 ---- .../FileSystem/FileSystemOssProviderArgs.cs | 18 ----- .../LINGYUN.Abp.OssManagement.Aliyun.csproj} | 2 +- .../Aliyun/AbpOssManagementAliyunModule.cs} | 6 +- .../Aliyun/AliyunOssContainer.cs | 16 ++-- .../Aliyun/AliyunOssContainerFactory.cs | 2 +- .../README.md | 0 ...ssManagement.Application.Contracts.csproj} | 2 +- ...OssManagementApplicationContractsModule.cs | 12 +++ .../BulkDeleteOssObjectInput.cs | 2 +- .../OssManagement}/CreateOssObjectInput.cs | 2 +- ...pOssManagementFeatureDefinitionProvider.cs | 73 ++++++++++++++++++ .../Features/AbpOssManagementFeatureNames.cs | 41 ++++++++++ .../OssManagement}/GetOssContainersInput.cs | 2 +- .../Abp/OssManagement}/GetOssObjectInput.cs | 2 +- .../Abp/OssManagement}/GetOssObjectsInput.cs | 2 +- .../Abp/OssManagement}/GetStaticFileInput.cs | 2 +- .../OssManagement}/IOssContainerAppService.cs | 2 +- .../OssManagement}/IOssObjectAppService.cs | 2 +- .../OssManagement}/IStaticFilesAppService.cs | 2 +- .../Abp/OssManagement}/OssContainerDto.cs | 2 +- .../OssManagement}/OssContainersResultDto.cs | 2 +- .../OssManagementRemoteServiceConsts.cs | 7 ++ .../Abp/OssManagement}/OssObjectDto.cs | 2 +- .../Abp/OssManagement}/OssObjectsResultDto.cs | 2 +- ...sManagementPermissionDefinitionProvider.cs | 27 +++++++ .../AbpOssManagementPermissions.cs | 27 +++++++ ...GYUN.Abp.OssManagement.Application.csproj} | 4 +- .../AbpOssManagementApplicationModule.cs | 23 ++++++ .../OssManagement}/OssContainerAppService.cs | 11 ++- ...ManagementApplicationAutoMapperProfile.cs} | 6 +- .../OssManagementApplicationServiceBase.cs | 14 ++++ .../Abp/OssManagement}/OssObjectAppService.cs | 27 +++++-- .../OssManagement}/StaticFilesAppService.cs | 14 +++- ...UN.Abp.OssManagement.Domain.Shared.csproj} | 8 +- .../AbpOssManagementDomainSharedModule.cs} | 14 ++-- .../Localization/AbpOssManagementResource.cs | 9 +++ .../Localization/Resources/en.json | 33 ++++---- .../Localization/Resources/zh-Hans.json | 37 +++++---- .../OssManagement/OssManagementErrorCodes.cs} | 6 +- ...OssManagementSettingDefinitionProvider.cs} | 16 ++-- .../Settings/AbpOssManagementSettingNames.cs} | 6 +- .../System/IO/StreamExtensions.cs | 0 .../LINGYUN.Abp.OssManagement.Domain.csproj} | 3 +- .../AbpOssManagementContainer.cs | 9 +++ .../AbpOssManagementDomainModule.cs | 17 ++++ .../OssManagement}/BulkDeleteObjectRequest.cs | 2 +- .../OssManagement}/CreateOssObjectRequest.cs | 2 +- .../OssManagement}/GetOssContainersRequest.cs | 2 +- .../GetOssContainersResponse.cs | 2 +- .../Abp/OssManagement}/GetOssObjectRequest.cs | 2 +- .../OssManagement}/GetOssObjectsRequest.cs | 2 +- .../OssManagement}/GetOssObjectsResponse.cs | 2 +- .../Abp/OssManagement}/IOssContainer.cs | 2 +- .../OssManagement}/IOssContainerExtensions.cs | 2 +- .../OssManagement}/IOssContainerFactory.cs | 2 +- .../Abp/OssManagement}/OssContainer.cs | 2 +- .../LINGYUN/Abp/OssManagement}/OssObject.cs | 2 +- .../Abp/OssManagement}/OssObjectComparer.cs | 2 +- ...ssManagement.FileSystem.ImageSharp.csproj} | 2 +- ...ssManagementFileSystemImageSharpModule.cs} | 6 +- .../ImageSharpFileSystemOssObjectProcesser.cs | 2 +- .../README.md | 4 +- ...NGYUN.Abp.OssManagement.FileSystem.csproj} | 2 +- .../AbpOssManagementFileSystemModule.cs} | 6 +- .../FileSystem/FileSystemOssContainer.cs | 24 +++--- .../FileSystemOssContainerFactory.cs | 2 +- .../FileSystem/FileSystemOssObjectContext.cs | 2 +- .../FileSystem/FileSystemOssOptions.cs | 2 +- .../FileSystemOssOptionsExtensions.cs | 2 +- ...FileSystemOssObjectProcesserContributor.cs | 5 +- .../NoneFileSystemOssObjectProcesser.cs | 5 +- .../README.md | 0 .../LINGYUN.Abp.OssManagement.HttpApi.csproj} | 4 +- .../AbpOssManagementHttpApiModule.cs} | 8 +- .../Abp/OssManagement}/FileValidater.cs | 16 ++-- .../Abp/OssManagement}/IFileValidater.cs | 2 +- .../OssManagement}/OssContainerController.cs | 9 +-- .../Abp/OssManagement}/OssObjectController.cs | 13 ++-- .../OssManagement}/StaticFilesController.cs | 16 ++-- .../OssManagement}/UploadOssObjectInput.cs | 2 +- ...AbpOssManagementSettingManagementModule.cs | 20 +++++ ...Abp.OssManagement.SettingManagement.csproj | 18 +++++ .../IOssManagementSettingAppService.cs | 13 ++++ .../OssManagementSettingAppService.cs | 73 ++++++++++++++++++ .../OssManagementSettingController.cs | 37 +++++++++ ...N.Abp.SettingManagement.Application.csproj | 1 - .../SettingManagement/SettingAppService.cs | 24 +----- .../BackendAdminHostModule.cs | 4 +- ...NGYUN.Abp.BackendAdmin.HttpApi.Host.csproj | 2 +- .../LINGYUN.ApiGateway.Host/event-bus-cap.db | Bin 40960 -> 40960 bytes .../AppPlatformHttpApiHostModule.cs | 23 +++--- .../LINGYUN.Platform.HttpApi.Host.csproj | 12 +-- vueJs/src/api/oss-manager.ts | 4 +- 109 files changed, 782 insertions(+), 524 deletions(-) delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationContractsModule.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureDefinitionProvider.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureNames.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissionDefinitionProvider.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissions.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationModule.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationServiceBase.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/AbpFileManagementResource.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementContainer.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementDomainModule.cs delete mode 100644 aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssProviderArgs.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN.Abp.FileManagement.Aliyun.csproj => oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj} (73%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AbpFileManagementAliyunModule.cs => oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AbpOssManagementAliyunModule.cs} (72%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement}/Aliyun/AliyunOssContainer.cs (95%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement}/Aliyun/AliyunOssContainerFactory.cs (93%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Aliyun => oss-management/LINGYUN.Abp.OssManagement.Aliyun}/README.md (100%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN.Abp.FileManagement.Application.Contracts.csproj => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj} (73%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationContractsModule.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/BulkDeleteOssObjectInput.cs (88%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/CreateOssObjectInput.cs (93%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/GetOssContainersInput.cs (85%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/GetOssObjectInput.cs (87%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/GetOssObjectsInput.cs (90%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/GetStaticFileInput.cs (88%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/IOssContainerAppService.cs (92%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/IOssObjectAppService.cs (91%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/IStaticFilesAppService.cs (85%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/OssContainerDto.cs (90%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/OssContainersResultDto.cs (90%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/OssObjectDto.cs (92%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement}/OssObjectsResultDto.cs (92%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissions.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN.Abp.FileManagement.Application.csproj => oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj} (56%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement}/OssContainerAppService.cs (82%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationAutoMapperProfile.cs => oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationAutoMapperProfile.cs} (70%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationServiceBase.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement}/OssObjectAppService.cs (73%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement}/StaticFilesAppService.cs (61%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN.Abp.FileManagement.Domain.Shared.csproj => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj} (50%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/AbpFileManagementDomainSharedModule.cs => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/AbpOssManagementDomainSharedModule.cs} (60%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/AbpOssManagementResource.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement}/Localization/Resources/en.json (63%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement}/Localization/Resources/zh-Hans.json (59%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/OssManagementErrorCodes.cs} (78%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingDefinitionProvider.cs => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs} (66%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingNames.cs => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs} (82%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain.Shared => oss-management/LINGYUN.Abp.OssManagement.Domain.Shared}/System/IO/StreamExtensions.cs (100%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj} (61%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementContainer.cs create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementDomainModule.cs rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/BulkDeleteObjectRequest.cs (94%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/CreateOssObjectRequest.cs (96%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/GetOssContainersRequest.cs (91%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/GetOssContainersResponse.cs (94%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/GetOssObjectRequest.cs (95%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/GetOssObjectsRequest.cs (96%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/GetOssObjectsResponse.cs (95%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/IOssContainer.cs (98%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/IOssContainerExtensions.cs (98%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/IOssContainerFactory.cs (89%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/OssContainer.cs (95%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/OssObject.cs (97%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement}/OssObjectComparer.cs (93%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp.csproj => oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj} (71%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement/FileSystem/ImageSharp/AbpFileManagementFileSystemImageSharpModule.cs => oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/AbpOssManagementFileSystemImageSharpModule.cs} (62%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement}/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs (98%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp => oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp}/README.md (59%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN.Abp.FileManagement.FileSystem.csproj => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj} (74%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/AbpFileManagementFileSystemModule.cs => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/AbpOssManagementFileSystemModule.cs} (71%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement}/FileSystem/FileSystemOssContainer.cs (94%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement}/FileSystem/FileSystemOssContainerFactory.cs (97%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement}/FileSystem/FileSystemOssObjectContext.cs (94%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement}/FileSystem/FileSystemOssOptions.cs (90%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement}/FileSystem/FileSystemOssOptionsExtensions.cs (90%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement}/FileSystem/IFileSystemOssObjectProcesserContributor.cs (59%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement}/FileSystem/NoneFileSystemOssObjectProcesser.cs (75%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.FileSystem => oss-management/LINGYUN.Abp.OssManagement.FileSystem}/README.md (100%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN.Abp.FileManagement.HttpApi.csproj => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj} (69%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/AbpFileManagementHttpApiModule.cs => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiModule.cs} (68%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement}/FileValidater.cs (87%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement}/IFileValidater.cs (79%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement}/OssContainerController.cs (88%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement}/OssObjectController.cs (93%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement}/StaticFilesController.cs (85%) rename aspnet-core/modules/{file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement => oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement}/UploadOssObjectInput.cs (96%) create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/AbpOssManagementSettingManagementModule.cs create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/IOssManagementSettingAppService.cs create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingAppService.cs create mode 100644 aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingController.cs diff --git a/aspnet-core/LINGYUN.MicroService.All.sln b/aspnet-core/LINGYUN.MicroService.All.sln index 51fbc136b..82c506068 100644 --- a/aspnet-core/LINGYUN.MicroService.All.sln +++ b/aspnet-core/LINGYUN.MicroService.All.sln @@ -177,17 +177,20 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.HttpAp EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.HttpApi.Client", "modules\identity\LINGYUN.Abp.Identity.HttpApi.Client\LINGYUN.Abp.Identity.HttpApi.Client.csproj", "{7DDEAEA9-E392-469C-ACB6-908C5BAD669E}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "file-management", "file-management", "{B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}" + ProjectSection(SolutionItems) = preProject + modules\cloud-aliyun\LINGYUN.Abp.Aliyun\README.md = modules\cloud-aliyun\LINGYUN.Abp.Aliyun\README.md + EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application", "modules\file-management\LINGYUN.Abp.FileManagement.Application\LINGYUN.Abp.FileManagement.Application.csproj", "{F3D50E3E-34D2-48C1-AB0D-ADCF92DC07D0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application", "modules\oss-management\LINGYUN.Abp.OssManagement.Application\LINGYUN.Abp.OssManagement.Application.csproj", "{F3D50E3E-34D2-48C1-AB0D-ADCF92DC07D0}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application.Contracts", "modules\file-management\LINGYUN.Abp.FileManagement.Application.Contracts\LINGYUN.Abp.FileManagement.Application.Contracts.csproj", "{86A67B8C-EFA0-4103-B60F-312F07C15A7A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{86A67B8C-EFA0-4103-B60F-312F07C15A7A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.HttpApi", "modules\file-management\LINGYUN.Abp.FileManagement.HttpApi\LINGYUN.Abp.FileManagement.HttpApi.csproj", "{854E1A42-FEA4-420E-9E83-0A39EE03F1ED}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.HttpApi", "modules\oss-management\LINGYUN.Abp.OssManagement.HttpApi\LINGYUN.Abp.OssManagement.HttpApi.csproj", "{854E1A42-FEA4-420E-9E83-0A39EE03F1ED}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain.Shared", "modules\file-management\LINGYUN.Abp.FileManagement.Domain.Shared\LINGYUN.Abp.FileManagement.Domain.Shared.csproj", "{21FCEF89-9A3F-476E-833A-A9C2131B2AE6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain.Shared", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain.Shared\LINGYUN.Abp.OssManagement.Domain.Shared.csproj", "{21FCEF89-9A3F-476E-833A-A9C2131B2AE6}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain", "modules\file-management\LINGYUN.Abp.FileManagement.Domain\LINGYUN.Abp.FileManagement.Domain.csproj", "{14ECCFD6-2DC1-4124-BE26-15E8D28E3E90}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain\LINGYUN.Abp.OssManagement.Domain.csproj", "{14ECCFD6-2DC1-4124-BE26-15E8D28E3E90}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.HttpApi.Host", "services\platform\LINGYUN.Platform.HttpApi.Host\LINGYUN.Platform.HttpApi.Host.csproj", "{372123C3-3AFD-42C8-BB80-778322EA72C3}" EndProject @@ -273,11 +276,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.SettingM EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.Tests", "tests\LINGYUN.Abp.Aliyun.Tests\LINGYUN.Abp.Aliyun.Tests.csproj", "{B86EBB6F-A27F-4277-8265-937951A9DCB0}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Aliyun", "modules\file-management\LINGYUN.Abp.FileManagement.Aliyun\LINGYUN.Abp.FileManagement.Aliyun.csproj", "{35B17218-9FB6-439E-AF73-9A1454BC923C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Aliyun", "modules\oss-management\LINGYUN.Abp.OssManagement.Aliyun\LINGYUN.Abp.OssManagement.Aliyun.csproj", "{35B17218-9FB6-439E-AF73-9A1454BC923C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.FileSystem", "modules\file-management\LINGYUN.Abp.FileManagement.FileSystem\LINGYUN.Abp.FileManagement.FileSystem.csproj", "{D5036D3F-1C53-47EE-BA50-AD290AE062D7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.FileSystem", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem\LINGYUN.Abp.OssManagement.FileSystem.csproj", "{D5036D3F-1C53-47EE-BA50-AD290AE062D7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.FileManagement.FileSystem.ImageSharp", "modules\file-management\LINGYUN.Abp.FileManagement.FileSystem.ImageSharp\LINGYUN.Abp.FileManagement.FileSystem.ImageSharp.csproj", "{3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.FileSystem.ImageSharp", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj", "{3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.SettingManagement", "modules\oss-management\LINGYUN.Abp.OssManagement.SettingManagement\LINGYUN.Abp.OssManagement.SettingManagement.csproj", "{BD74BE00-54E4-4979-8797-E8027695F396}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -737,6 +742,10 @@ Global {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}.Debug|Any CPU.Build.0 = Debug|Any CPU {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}.Release|Any CPU.Build.0 = Release|Any CPU + {BD74BE00-54E4-4979-8797-E8027695F396}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD74BE00-54E4-4979-8797-E8027695F396}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD74BE00-54E4-4979-8797-E8027695F396}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD74BE00-54E4-4979-8797-E8027695F396}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -877,6 +886,7 @@ Global {35B17218-9FB6-439E-AF73-9A1454BC923C} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6} {D5036D3F-1C53-47EE-BA50-AD290AE062D7} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6} {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6} + {BD74BE00-54E4-4979-8797-E8027695F396} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} diff --git a/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln b/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln index affc535f7..cfba1f77b 100644 --- a/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln +++ b/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln @@ -43,9 +43,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "permissions-management", "p EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain", "modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain\LINGYUN.Abp.PermissionManagement.Domain.csproj", "{7521486D-2144-4AFA-86AD-8E8021479DE6}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "file-management", "file-management", "{8F972C8E-F047-4883-A4BF-3423A2BAED36}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain.Shared", "modules\file-management\LINGYUN.Abp.FileManagement.Domain.Shared\LINGYUN.Abp.FileManagement.Domain.Shared.csproj", "{49F8CD24-85EA-479A-A376-CC31A0618AE7}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{8F972C8E-F047-4883-A4BF-3423A2BAED36}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "account", "account", "{9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770}" EndProject @@ -67,7 +65,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProg EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{EAD2F955-88CA-4570-AB81-31FB2FF02605}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -127,10 +127,6 @@ Global {7521486D-2144-4AFA-86AD-8E8021479DE6}.Debug|Any CPU.Build.0 = Debug|Any CPU {7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.ActiveCfg = Release|Any CPU {7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.Build.0 = Release|Any CPU - {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Release|Any CPU.Build.0 = Release|Any CPU {AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.Build.0 = Debug|Any CPU {AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -167,6 +163,10 @@ Global {3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Debug|Any CPU.Build.0 = Debug|Any CPU {3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.ActiveCfg = Release|Any CPU {3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.Build.0 = Release|Any CPU + {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -191,7 +191,6 @@ Global {D25C4814-71AB-4A9D-8C76-298A7DE1A747} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} {7521486D-2144-4AFA-86AD-8E8021479DE6} = {D25C4814-71AB-4A9D-8C76-298A7DE1A747} {8F972C8E-F047-4883-A4BF-3423A2BAED36} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} - {49F8CD24-85EA-479A-A376-CC31A0618AE7} = {8F972C8E-F047-4883-A4BF-3423A2BAED36} {9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} {AA2F7243-976C-47F3-9B4E-20CC22F8FCF4} = {9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} {E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} @@ -203,6 +202,7 @@ Global {D42CE0F0-331F-4E5C-92CD-6B4DD6854E69} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} {EAD2F955-88CA-4570-AB81-31FB2FF02605} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} {3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} + {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4} = {8F972C8E-F047-4883-A4BF-3423A2BAED36} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {1573B900-87BA-4AD3-B785-6DD78127ADEF} diff --git a/aspnet-core/LINGYUN.MicroService.Platform.sln b/aspnet-core/LINGYUN.MicroService.Platform.sln index 205483c61..1115ca4dc 100644 --- a/aspnet-core/LINGYUN.MicroService.Platform.sln +++ b/aspnet-core/LINGYUN.MicroService.Platform.sln @@ -23,17 +23,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.HttpApi.Ho EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platform", "platform", "{4096EC6A-EEAD-4E5B-B087-393D7A4E5874}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "file-management", "file-management", "{C7D0EB39-3418-4A7C-AD94-FAB76F023E88}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{C7D0EB39-3418-4A7C-AD94-FAB76F023E88}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain.Shared", "modules\file-management\LINGYUN.Abp.FileManagement.Domain.Shared\LINGYUN.Abp.FileManagement.Domain.Shared.csproj", "{4D3C1EBD-1A4A-4300-A889-72DA0E082BAE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain.Shared", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain.Shared\LINGYUN.Abp.OssManagement.Domain.Shared.csproj", "{4D3C1EBD-1A4A-4300-A889-72DA0E082BAE}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain", "modules\file-management\LINGYUN.Abp.FileManagement.Domain\LINGYUN.Abp.FileManagement.Domain.csproj", "{D6D4C667-B58C-4266-9929-AFE54C8F0FBA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain\LINGYUN.Abp.OssManagement.Domain.csproj", "{D6D4C667-B58C-4266-9929-AFE54C8F0FBA}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application.Contracts", "modules\file-management\LINGYUN.Abp.FileManagement.Application.Contracts\LINGYUN.Abp.FileManagement.Application.Contracts.csproj", "{A1561B9D-2EAB-4C6A-AE62-9D517A450D4D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{A1561B9D-2EAB-4C6A-AE62-9D517A450D4D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application", "modules\file-management\LINGYUN.Abp.FileManagement.Application\LINGYUN.Abp.FileManagement.Application.csproj", "{1C3A25AF-9A59-4532-88A4-E57BECFA7E96}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application", "modules\oss-management\LINGYUN.Abp.OssManagement.Application\LINGYUN.Abp.OssManagement.Application.csproj", "{1C3A25AF-9A59-4532-88A4-E57BECFA7E96}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.HttpApi", "modules\file-management\LINGYUN.Abp.FileManagement.HttpApi\LINGYUN.Abp.FileManagement.HttpApi.csproj", "{C616C167-E5DF-4141-98BE-F98C58890122}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.HttpApi", "modules\oss-management\LINGYUN.Abp.OssManagement.HttpApi\LINGYUN.Abp.OssManagement.HttpApi.csproj", "{C616C167-E5DF-4141-98BE-F98C58890122}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{8CDB2F58-9541-4FB2-8A37-079C5E6A1689}" EndProject @@ -49,7 +49,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.EntityFram EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.Domain.Tests", "tests\LINGYUN.Platform.Domain.Tests\LINGYUN.Platform.Domain.Tests.csproj", "{C60A06F2-0F4C-483F-BE2B-B103F0D726CE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.FileManagement.Aliyun", "modules\file-management\LINGYUN.Abp.FileManagement.Aliyun\LINGYUN.Abp.FileManagement.Aliyun.csproj", "{104EDC09-0CEA-4AB0-BFF5-B009D4679419}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.Aliyun", "modules\oss-management\LINGYUN.Abp.OssManagement.Aliyun\LINGYUN.Abp.OssManagement.Aliyun.csproj", "{104EDC09-0CEA-4AB0-BFF5-B009D4679419}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{265D5E44-682B-49BC-984A-BDD8CA45E60E}" EndProject @@ -57,7 +57,19 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun", "modul EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BlobStoring.Aliyun", "modules\common\LINGYUN.Abp.BlobStoring.Aliyun\LINGYUN.Abp.BlobStoring.Aliyun.csproj", "{95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.FileManagement.FileSystem", "modules\file-management\LINGYUN.Abp.FileManagement.FileSystem\LINGYUN.Abp.FileManagement.FileSystem.csproj", "{B5569DCD-445E-445B-87E7-D8D4E03F0F76}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.FileSystem", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem\LINGYUN.Abp.OssManagement.FileSystem.csproj", "{B5569DCD-445E-445B-87E7-D8D4E03F0F76}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.FileSystem.ImageSharp", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj", "{1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation", "modules\common\LINGYUN.Abp.Features.LimitValidation\LINGYUN.Abp.Features.LimitValidation.csproj", "{D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation.Redis", "modules\common\LINGYUN.Abp.Features.LimitValidation.Redis\LINGYUN.Abp.Features.LimitValidation.Redis.csproj", "{644F2582-D655-43B5-9EA4-D010C94B33AF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "setting-management", "setting-management", "{3855CE63-91CF-4F96-97F6-BEAB444B25CB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.Application.Contracts", "modules\settings\LINGYUN.Abp.SettingManagement.Application.Contracts\LINGYUN.Abp.SettingManagement.Application.Contracts.csproj", "{D1D288D1-3178-439F-8EFD-E29D6F66E673}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.SettingManagement", "modules\oss-management\LINGYUN.Abp.OssManagement.SettingManagement\LINGYUN.Abp.OssManagement.SettingManagement.csproj", "{07D1B07A-3C95-40A8-AA53-619EC067FD45}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -149,6 +161,26 @@ Global {B5569DCD-445E-445B-87E7-D8D4E03F0F76}.Debug|Any CPU.Build.0 = Debug|Any CPU {B5569DCD-445E-445B-87E7-D8D4E03F0F76}.Release|Any CPU.ActiveCfg = Release|Any CPU {B5569DCD-445E-445B-87E7-D8D4E03F0F76}.Release|Any CPU.Build.0 = Release|Any CPU + {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Release|Any CPU.Build.0 = Release|Any CPU + {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Release|Any CPU.Build.0 = Release|Any CPU + {644F2582-D655-43B5-9EA4-D010C94B33AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {644F2582-D655-43B5-9EA4-D010C94B33AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {644F2582-D655-43B5-9EA4-D010C94B33AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {644F2582-D655-43B5-9EA4-D010C94B33AF}.Release|Any CPU.Build.0 = Release|Any CPU + {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Release|Any CPU.Build.0 = Release|Any CPU + {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -179,6 +211,12 @@ Global {8A393F7F-85A2-48ED-9B56-9CEFF3BDE34A} = {265D5E44-682B-49BC-984A-BDD8CA45E60E} {95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0} = {265D5E44-682B-49BC-984A-BDD8CA45E60E} {B5569DCD-445E-445B-87E7-D8D4E03F0F76} = {C7D0EB39-3418-4A7C-AD94-FAB76F023E88} + {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1} = {C7D0EB39-3418-4A7C-AD94-FAB76F023E88} + {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC} = {265D5E44-682B-49BC-984A-BDD8CA45E60E} + {644F2582-D655-43B5-9EA4-D010C94B33AF} = {265D5E44-682B-49BC-984A-BDD8CA45E60E} + {3855CE63-91CF-4F96-97F6-BEAB444B25CB} = {15BDA03E-DE8E-46E4-96A8-CA3F2872E812} + {D1D288D1-3178-439F-8EFD-E29D6F66E673} = {3855CE63-91CF-4F96-97F6-BEAB444B25CB} + {07D1B07A-3C95-40A8-AA53-619EC067FD45} = {C7D0EB39-3418-4A7C-AD94-FAB76F023E88} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {03D3B66F-8926-4C00-B7AB-A21761EC859E} diff --git a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md index 97c68d074..a4c2dadb9 100644 --- a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md +++ b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md @@ -1,3 +1,25 @@ # Oss-Management -File-Management更名为Oss-Management +File-Management更名为Oss-Management + + +## 模块说明 + +### 基础模块 + +* LINGYUN.Abp.OssManagement.Domain.Shared 领域层公共模块,定义了错误代码、本地化、模块设置 +* LINGYUN.Abp.OssManagement.Domain 领域层模块,定义了抽象的Oss容器与对象管理接口 +* LINGYUN.Abp.OssManagement.Application.Contracts 应用服务层公共模块,定义了管理Oss的外部接口、权限、功能限制策略 +* LINGYUN.Abp.OssManagement.Application 应用服务层实现,实现了Oss管理接口 +* LINGYUN.Abp.OssManagement.HttpApi RestApi实现,实现了独立的对外RestApi接口 +* LINGYUN.Abp.OssManagement.SettingManagement 设置管理模块,对外暴露自身的设置管理,用于网关聚合 + +### 高阶模块 + +* LINGYUN.Abp.OssManagement.Aliyun Oss管理的阿里云实现,实现了部分阿里云Oss服务的容器与对象管理 +* LINGYUN.Abp.OssManagement.FileSystem Oss管理的本地文件系统实现,实现了部分本地文件系统的容器(目录)与对象(文件/目录)管理 +* LINGYUN.Abp.OssManagement.FileSystem.ImageSharp Oss本地对象的ImageSharp扩展,当前端传递需求处理对象时,此模块用于实现基于图形文件流的处理 + +## 更新日志 + +*【2021-03-10】 变更FileManagement命名空间为OssManagement diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md index 4e1aa34cf..1e12ef31a 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md @@ -1,32 +1,32 @@ English | [简体中文](./README.md) -# LINGYUN.Abp.Features.LimitValidation +# LINGYUN.Abp.Features.LimitValidation -Features limit validation component +Features limit validation component -Check the number of function calls defined to limit calls to the application by specific entities (tenants, users, clients, and so on) +Check the number of function calls defined to limit calls to the application by specific entities (tenants, users, clients, and so on) -Predefined policy +Predefined policy -LimitPolicy.Minute Calculate the flow by the minutes -LimitPolicy.Hours Calculate the flow by the hours -LimitPolicy.Days Calculate the flow by days -LimitPolicy.Weeks Calculate the flow by weeks -LimitPolicy.Month Calculate the flow by the number of month -LimitPolicy.Years Calculate the flow by the number of years +LimitPolicy.Minute Calculate the flow by the minutes +LimitPolicy.Hours Calculate the flow by the hours +LimitPolicy.Days Calculate the flow by days +LimitPolicy.Weeks Calculate the flow by weeks +LimitPolicy.Month Calculate the flow by the number of month +LimitPolicy.Years Calculate the flow by the number of years ## How to use ```csharp -[DependsOn(typeof(AbpFeaturesLimitValidationModule))] +[DependsOn(typeof(AbpFeaturesLimitValidationModule))] public class YouProjectModule : AbpModule { // other } ``` -If you want to limit the policy duration by self-processing, override the default policy for the corresponding policy and always return a clock scale in seconds +If you want to limit the policy duration by self-processing, override the default policy for the corresponding policy and always return a clock scale in seconds ```csharp [DependsOn(typeof(AbpFeaturesLimitValidationModule))] diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md index b52c3a723..ff6bb2852 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md @@ -2,18 +2,18 @@ # LINGYUN.Abp.Features.LimitValidation -功能上限验证组件 +功能上限验证组件 -检查定义的功能调用次数,来限制特定的实体(租户、用户、客户端等)对于应用程序的调用 +检查定义的功能调用次数,来限制特定的实体(租户、用户、客户端等)对于应用程序的调用 -预先设定了如下几个策略 +预先设定了如下几个策略 -LimitPolicy.Minute 按分钟计算流量 -LimitPolicy.Hours 按小时计算流量 -LimitPolicy.Days 按天数计算流量 -LimitPolicy.Weeks 按周数计算流量 -LimitPolicy.Month 按月数计算流量 -LimitPolicy.Years 按年数计算流量 +LimitPolicy.Minute 按分钟计算流量 +LimitPolicy.Hours 按小时计算流量 +LimitPolicy.Days 按天数计算流量 +LimitPolicy.Weeks 按周数计算流量 +LimitPolicy.Month 按月数计算流量 +LimitPolicy.Years 按年数计算流量 ## 配置使用 @@ -26,7 +26,7 @@ public class YouProjectModule : AbpModule } ``` -如果需要自行处理功能限制策略时长,请覆盖对应策略的默认策略,返回的时钟刻度单位始终是秒 +如果需要自行处理功能限制策略时长,请覆盖对应策略的默认策略,返回的时钟刻度单位始终是秒 ```csharp [DependsOn(typeof(AbpFeaturesLimitValidationModule))] diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationContractsModule.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationContractsModule.cs deleted file mode 100644 index b4a0cd686..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationContractsModule.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Volo.Abp.Application; -using Volo.Abp.Modularity; - -namespace LINGYUN.Abp.FileManagement -{ - [DependsOn( - typeof(AbpFileManagementDomainSharedModule), - typeof(AbpDddApplicationModule))] - public class AbpFileManagementApplicationContractsModule : AbpModule - { - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureDefinitionProvider.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureDefinitionProvider.cs deleted file mode 100644 index 272a27e72..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureDefinitionProvider.cs +++ /dev/null @@ -1,49 +0,0 @@ -using LINGYUN.Abp.FileManagement.Localization; -using Volo.Abp.Features; -using Volo.Abp.Localization; -using Volo.Abp.Validation.StringValues; - -namespace LINGYUN.Abp.FileManagement.Features -{ - public class AbpFileManagementFeatureDefinitionProvider : FeatureDefinitionProvider - { - public override void Define(IFeatureDefinitionContext context) - { - var featureGroup = context.AddGroup( - name: AbpFileManagementFeatureNames.GroupName, - displayName: L("Features:FileManagement")); - - var fileSystemFeature = featureGroup.AddFeature( - name: AbpFileManagementFeatureNames.FileSystem.Default, - displayName: L("Features:DisplayName:FileSystem"), - description: L("Features:Description:FileSystem")); - - fileSystemFeature.CreateChild( - name: AbpFileManagementFeatureNames.FileSystem.DownloadFile, - defaultValue: false.ToString(), - displayName: L("Features:DisplayName:DownloadFile"), - description: L("Features:Description:DownloadFile"), - valueType: new ToggleStringValueType(new BooleanValueValidator())); - - fileSystemFeature.CreateChild( - name: AbpFileManagementFeatureNames.FileSystem.UploadFile, - defaultValue: true.ToString(), - displayName: L("Features:DisplayName:UploadFile"), - description: L("Features:Description:UploadFile"), - valueType: new ToggleStringValueType(new BooleanValueValidator())); - - // TODO: 此功能需要控制器协同,暂时不实现 - fileSystemFeature.CreateChild( - name: AbpFileManagementFeatureNames.FileSystem.MaxUploadFileCount, - defaultValue: 1.ToString(), - displayName: L("Features:DisplayName:MaxUploadFileCount"), - description: L("Features:Description:MaxUploadFileCount"), - valueType: new FreeTextStringValueType(new NumericValueValidator(1, 10))); - } - - protected ILocalizableString L(string name) - { - return LocalizableString.Create(name); - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureNames.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureNames.cs deleted file mode 100644 index 328d66946..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureNames.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace LINGYUN.Abp.FileManagement.Features -{ - public class AbpFileManagementFeatureNames - { - public const string GroupName = "Abp.FileManagement"; - public class FileSystem - { - public const string Default = GroupName + ".FileSystem"; - /// - /// 下载文件功能 - /// - public const string DownloadFile = Default + ".DownloadFile"; - /// - /// 上传文件功能 - /// - public const string UploadFile = Default + ".UploadFile"; - /// - /// 最大上传文件 - /// - public const string MaxUploadFileCount = Default + ".MaxUploadFileCount"; - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissionDefinitionProvider.cs deleted file mode 100644 index 1c1ac9f1a..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissionDefinitionProvider.cs +++ /dev/null @@ -1,34 +0,0 @@ -using LINGYUN.Abp.FileManagement.Localization; -using Volo.Abp.Authorization.Permissions; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.FileManagement.Permissions -{ - public class AbpFileManagementPermissionDefinitionProvider : PermissionDefinitionProvider - { - public override void Define(IPermissionDefinitionContext context) - { - var fileManagement = context.AddGroup(AbpFileManagementPermissions.GroupName, L("Permission:FileManagement")); - - var fileSystem = fileManagement.AddPermission(AbpFileManagementPermissions.FileSystem.Default, L("Permission:FileSystem")); - fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Create, L("Permission:CreateFolder")); - fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Delete, L("Permission:DeleteFolder")); - fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Update, L("Permission:UpdateFolder")); - fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Copy, L("Permission:CopyFolder")); - fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Move, L("Permission:MoveFolder")); - - var fileManager = fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Default, L("Permission:FileManager")); - fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Create, L("Permission:AppendFile")); - fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Update, L("Permission:UpdateFile")); - fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Delete, L("Permission:DeleteFile")); - fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Copy, L("Permission:CopyFile")); - fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Move, L("Permission:MoveFile")); - fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Download, L("Permission:DownloadFile")); - } - - private static LocalizableString L(string name) - { - return LocalizableString.Create(name); - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissions.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissions.cs deleted file mode 100644 index 6f33e940b..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissions.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace LINGYUN.Abp.FileManagement.Permissions -{ - public class AbpFileManagementPermissions - { - public const string GroupName = "AbpFileManagement"; - - /// - /// 文件系统 - /// - public class FileSystem - { - public const string Default = GroupName + ".FileSystem"; - - public const string Create = Default + ".Create"; - - public const string Delete = Default + ".Delete"; - - public const string Update = Default + ".Update"; - - public const string Copy = Default + ".Copy"; - - public const string Move = Default + ".Move"; - /// - /// 文件管理 - /// - public class FileManager - { - public const string Default = FileSystem.Default + ".FileManager"; - - public const string Create = Default + ".Create"; - - public const string Copy = Default + ".Copy"; - - public const string Delete = Default + ".Delete"; - - public const string Update = Default + ".Update"; - - public const string Move = Default + ".Move"; - - public const string Download = Default + ".Download"; - } - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationModule.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationModule.cs deleted file mode 100644 index 93e5186bb..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationModule.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Volo.Abp.AutoMapper; -using Volo.Abp.Modularity; -using Microsoft.Extensions.DependencyInjection; - -namespace LINGYUN.Abp.FileManagement -{ - [DependsOn( - typeof(AbpAutoMapperModule), - typeof(AbpFileManagementDomainModule), - typeof(AbpFileManagementApplicationContractsModule))] - public class AbpFileManagementApplicationModule : AbpModule - { - public override void ConfigureServices(ServiceConfigurationContext context) - { - context.Services.AddAutoMapperObjectMapper(); - - Configure(options => - { - options.AddProfile(validate: true); - }); - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationServiceBase.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationServiceBase.cs deleted file mode 100644 index 3fb7d3781..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationServiceBase.cs +++ /dev/null @@ -1,13 +0,0 @@ -using LINGYUN.Abp.FileManagement.Localization; -using Volo.Abp.Application.Services; - -namespace LINGYUN.Abp.FileManagement -{ - public class FileManagementApplicationServiceBase : ApplicationService - { - protected FileManagementApplicationServiceBase() - { - LocalizationResource = typeof(AbpFileManagementResource); - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/AbpFileManagementResource.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/AbpFileManagementResource.cs deleted file mode 100644 index 4648b937d..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/AbpFileManagementResource.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.FileManagement.Localization -{ - [LocalizationResourceName("AbpFileManagement")] - public class AbpFileManagementResource - { - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementContainer.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementContainer.cs deleted file mode 100644 index d57280dd6..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementContainer.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.BlobStoring; - -namespace LINGYUN.Abp.FileManagement -{ - [BlobContainerName("abp-file-management")] - public class AbpFileManagementContainer - { - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementDomainModule.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementDomainModule.cs deleted file mode 100644 index f3781044f..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementDomainModule.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Volo.Abp.Domain; -using Volo.Abp.Modularity; -using Volo.Abp.MultiTenancy; - -namespace LINGYUN.Abp.FileManagement -{ - [DependsOn( - typeof(AbpDddDomainModule), - typeof(AbpMultiTenancyModule), - typeof(AbpFileManagementDomainSharedModule) - )] - public class AbpFileManagementDomainModule : AbpModule - { - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssProviderArgs.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssProviderArgs.cs deleted file mode 100644 index c668145e7..000000000 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssProviderArgs.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Threading; -using Volo.Abp.BlobStoring; - -namespace LINGYUN.Abp.FileManagement.FileSystem -{ - public class FileSystemOssProviderArgs : BlobProviderArgs - { - public FileSystemOssProviderArgs( - string containerName, - BlobContainerConfiguration configuration, - string blobName, - CancellationToken cancellationToken = default) - : base(containerName, configuration, blobName, cancellationToken) - { - - } - } -} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN.Abp.FileManagement.Aliyun.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj similarity index 73% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN.Abp.FileManagement.Aliyun.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj index 4ed385f46..75006a86d 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN.Abp.FileManagement.Aliyun.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj @@ -7,7 +7,7 @@ - + diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AbpFileManagementAliyunModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AbpOssManagementAliyunModule.cs similarity index 72% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AbpFileManagementAliyunModule.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AbpOssManagementAliyunModule.cs index 14c2d9d12..4e62da63a 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AbpFileManagementAliyunModule.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AbpOssManagementAliyunModule.cs @@ -2,12 +2,12 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Modularity; -namespace LINGYUN.Abp.FileManagement.Aliyun +namespace LINGYUN.Abp.OssManagement.Aliyun { [DependsOn( typeof(AbpBlobStoringAliyunModule), - typeof(AbpFileManagementDomainModule))] - public class AbpFileManagementAliyunModule : AbpModule + typeof(AbpOssManagementDomainModule))] + public class AbpOssManagementAliyunModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AliyunOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs similarity index 95% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AliyunOssContainer.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs index fbb56243e..f64ae51b8 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AliyunOssContainer.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.MultiTenancy; -namespace LINGYUN.Abp.FileManagement.Aliyun +namespace LINGYUN.Abp.OssManagement.Aliyun { /// /// Oss容器的阿里云实现 @@ -40,7 +40,7 @@ namespace LINGYUN.Abp.FileManagement.Aliyun if (BucketExists(ossClient, name)) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerAlreadyExists); + throw new BusinessException(code: OssManagementErrorCodes.ContainerAlreadyExists); } var bucket = ossClient.CreateBucket(name); @@ -69,7 +69,7 @@ namespace LINGYUN.Abp.FileManagement.Aliyun if (ObjectExists(ossClient, request.Bucket, objectName)) { - throw new BusinessException(code: FileManagementErrorCodes.ObjectAlreadyExists); + throw new BusinessException(code: OssManagementErrorCodes.ObjectAlreadyExists); } // 当一个对象名称是以 / 结尾时,不论该对象是否存有数据,都以目录的形式存在 @@ -151,7 +151,7 @@ namespace LINGYUN.Abp.FileManagement.Aliyun if (objectListing.CommonPrefixes.Any() || objectListing.ObjectSummaries.Any()) { - throw new BusinessException(code: FileManagementErrorCodes.ObjectDeleteWithNotEmpty); + throw new BusinessException(code: OssManagementErrorCodes.ObjectDeleteWithNotEmpty); // throw new ObjectDeleteWithNotEmptyException("00201", $"Can't not delete oss object {request.Object}, because it is not empty!"); } ossClient.DeleteObject(request.Bucket, objectName); @@ -170,7 +170,7 @@ namespace LINGYUN.Abp.FileManagement.Aliyun var ossClient = await CreateClientAsync(); if (!BucketExists(ossClient, name)) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerNotFound); + throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound); // throw new ContainerNotFoundException($"Can't not found container {name} in aliyun blob storing"); } var bucket = ossClient.GetBucketInfo(name); @@ -192,7 +192,7 @@ namespace LINGYUN.Abp.FileManagement.Aliyun var ossClient = await CreateClientAsync(); if (!BucketExists(ossClient, request.Bucket)) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerNotFound); + throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound); // throw new ContainerNotFoundException($"Can't not found container {request.Bucket} in aliyun blob storing"); } @@ -203,7 +203,7 @@ namespace LINGYUN.Abp.FileManagement.Aliyun if (!ObjectExists(ossClient, request.Bucket, objectName)) { - throw new BusinessException(code: FileManagementErrorCodes.ObjectNotFound); + throw new BusinessException(code: OssManagementErrorCodes.ObjectNotFound); // throw new ContainerNotFoundException($"Can't not found object {objectName} in container {request.Bucket} with aliyun blob storing"); } @@ -363,7 +363,7 @@ namespace LINGYUN.Abp.FileManagement.Aliyun protected virtual async Task CreateClientAsync() { - return await OssClientFactory.CreateAsync(); + return await OssClientFactory.CreateAsync(); } } } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AliyunOssContainerFactory.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainerFactory.cs similarity index 93% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AliyunOssContainerFactory.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainerFactory.cs index 4c17c9c7e..3f5314781 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/LINGYUN/Abp/FileManagement/Aliyun/AliyunOssContainerFactory.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainerFactory.cs @@ -1,7 +1,7 @@ using LINGYUN.Abp.BlobStoring.Aliyun; using Volo.Abp.MultiTenancy; -namespace LINGYUN.Abp.FileManagement.Aliyun +namespace LINGYUN.Abp.OssManagement.Aliyun { public class AliyunOssContainerFactory : IOssContainerFactory { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md similarity index 100% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Aliyun/README.md rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN.Abp.FileManagement.Application.Contracts.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj similarity index 73% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN.Abp.FileManagement.Application.Contracts.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj index 029cba6fd..77c881d5b 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN.Abp.FileManagement.Application.Contracts.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj @@ -12,7 +12,7 @@ - + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationContractsModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationContractsModule.cs new file mode 100644 index 000000000..cbbcc02a3 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationContractsModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Application; +using Volo.Abp.Modularity; + +namespace LINGYUN.Abp.OssManagement +{ + [DependsOn( + typeof(AbpOssManagementDomainSharedModule), + typeof(AbpDddApplicationModule))] + public class AbpOssManagementApplicationContractsModule : AbpModule + { + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/BulkDeleteOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/BulkDeleteOssObjectInput.cs similarity index 88% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/BulkDeleteOssObjectInput.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/BulkDeleteOssObjectInput.cs index 0d940c3ef..01af4d86a 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/BulkDeleteOssObjectInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/BulkDeleteOssObjectInput.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class BulkDeleteOssObjectInput { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/CreateOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/CreateOssObjectInput.cs similarity index 93% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/CreateOssObjectInput.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/CreateOssObjectInput.cs index f96bd033a..260bf71a8 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/CreateOssObjectInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/CreateOssObjectInput.cs @@ -3,7 +3,7 @@ using System.IO; using Volo.Abp.Auditing; using Volo.Abp.Validation; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class CreateOssObjectInput { diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs new file mode 100644 index 000000000..15248d66b --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs @@ -0,0 +1,73 @@ +using LINGYUN.Abp.OssManagement.Localization; +using Volo.Abp.Features; +using Volo.Abp.Localization; +using Volo.Abp.Validation.StringValues; + +namespace LINGYUN.Abp.OssManagement.Features +{ + public class AbpOssManagementFeatureDefinitionProvider : FeatureDefinitionProvider + { + public override void Define(IFeatureDefinitionContext context) + { + var featureGroup = context.AddGroup( + name: AbpOssManagementFeatureNames.GroupName, + displayName: L("Features:OssManagement")); + + var ossFeature = featureGroup.AddFeature( + name: AbpOssManagementFeatureNames.OssObject.Default, + displayName: L("Features:DisplayName:OssObject"), + description: L("Features:Description:OssObject")); + + ossFeature.CreateChild( + name: AbpOssManagementFeatureNames.OssObject.DownloadFile, + defaultValue: false.ToString(), + displayName: L("Features:DisplayName:DownloadFile"), + description: L("Features:Description:DownloadFile"), + valueType: new ToggleStringValueType(new BooleanValueValidator())); + ossFeature.CreateChild( + name: AbpOssManagementFeatureNames.OssObject.DownloadLimit, + defaultValue: "1000", + displayName: L("Features:DisplayName:DownloadLimit"), + description: L("Features:Description:DownloadLimit"), + valueType: new FreeTextStringValueType(new NumericValueValidator(0, 100_0000))); // 上限100万次调用 + ossFeature.CreateChild( + name: AbpOssManagementFeatureNames.OssObject.DownloadInterval, + defaultValue: "1", + displayName: L("Features:DisplayName:DownloadInterval"), + description: L("Features:Description:DownloadInterval"), + valueType: new FreeTextStringValueType(new NumericValueValidator(1, 12))); // 上限12月 + + ossFeature.CreateChild( + name: AbpOssManagementFeatureNames.OssObject.UploadFile, + defaultValue: true.ToString(), + displayName: L("Features:DisplayName:UploadFile"), + description: L("Features:Description:UploadFile"), + valueType: new ToggleStringValueType(new BooleanValueValidator())); + ossFeature.CreateChild( + name: AbpOssManagementFeatureNames.OssObject.UploadLimit, + defaultValue: "1000", + displayName: L("Features:DisplayName:UploadLimit"), + description: L("Features:Description:UploadLimit"), + valueType: new FreeTextStringValueType(new NumericValueValidator(0, 100_0000))); // 上限100万次调用 + ossFeature.CreateChild( + name: AbpOssManagementFeatureNames.OssObject.UploadInterval, + defaultValue: "1", + displayName: L("Features:DisplayName:UploadInterval"), + description: L("Features:Description:UploadInterval"), + valueType: new FreeTextStringValueType(new NumericValueValidator(1, 12))); // 上限12月 + + // TODO: 此功能需要控制器协同,暂时不实现 + //fileSystemFeature.CreateChild( + // name: AbpOssManagementFeatureNames.OssObject.MaxUploadFileCount, + // defaultValue: 1.ToString(), + // displayName: L("Features:DisplayName:MaxUploadFileCount"), + // description: L("Features:Description:MaxUploadFileCount"), + // valueType: new FreeTextStringValueType(new NumericValueValidator(1, 10))); + } + + protected ILocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs new file mode 100644 index 000000000..9b8e93441 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs @@ -0,0 +1,41 @@ +namespace LINGYUN.Abp.OssManagement.Features +{ + public class AbpOssManagementFeatureNames + { + public const string GroupName = "AbpOssManagement"; + + + public class OssObject + { + public const string Default = GroupName + ".OssObject"; + /// + /// 下载文件功能 + /// + public const string DownloadFile = Default + ".DownloadFile"; + /// + /// 下载文件功能限制次数 + /// + public const string DownloadLimit = Default + ".DownloadLimit"; + /// + /// 下载文件功能限制次数周期 + /// + public const string DownloadInterval = Default + ".DownloadInterval"; + /// + /// 上传文件功能 + /// + public const string UploadFile = Default + ".UploadFile"; + /// + /// 上传文件功能限制次数 + /// + public const string UploadLimit = Default + ".UploadLimit"; + /// + /// 上传文件功能限制次数周期 + /// + public const string UploadInterval = Default + ".UploadInterval"; + /// + /// 最大上传文件 + /// + public const string MaxUploadFileCount = Default + ".MaxUploadFileCount"; + } + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssContainersInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssContainersInput.cs similarity index 85% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssContainersInput.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssContainersInput.cs index 3b97ca6fa..11cf0eb3f 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssContainersInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssContainersInput.cs @@ -1,6 +1,6 @@ using Volo.Abp.Application.Dtos; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssContainersInput : PagedAndSortedResultRequestDto { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs similarity index 87% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssObjectInput.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs index 25d12f78b..7422bfba0 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssObjectInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssObjectInput { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssObjectsInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectsInput.cs similarity index 90% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssObjectsInput.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectsInput.cs index d8d1b226b..234ba3a9c 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetOssObjectsInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectsInput.cs @@ -1,6 +1,6 @@ using Volo.Abp.Application.Dtos; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssObjectsInput : PagedAndSortedResultRequestDto { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetStaticFileInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs similarity index 88% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetStaticFileInput.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs index 71f925c03..833c1db11 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetStaticFileInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetStaticFileInput { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IOssContainerAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssContainerAppService.cs similarity index 92% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IOssContainerAppService.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssContainerAppService.cs index cfc17f6e2..130f85ae4 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IOssContainerAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssContainerAppService.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Volo.Abp.Application.Services; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public interface IOssContainerAppService: IApplicationService { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IOssObjectAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssObjectAppService.cs similarity index 91% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IOssObjectAppService.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssObjectAppService.cs index 5c192a0b0..bd4377e4f 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IOssObjectAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssObjectAppService.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Volo.Abp.Application.Services; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public interface IOssObjectAppService : IApplicationService { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IStaticFilesAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IStaticFilesAppService.cs similarity index 85% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IStaticFilesAppService.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IStaticFilesAppService.cs index 0a1fc06bf..50426c914 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IStaticFilesAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IStaticFilesAppService.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Volo.Abp.Application.Services; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public interface IStaticFilesAppService: IApplicationService { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssContainerDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainerDto.cs similarity index 90% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssContainerDto.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainerDto.cs index b7f82356c..c3606d569 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssContainerDto.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainerDto.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class OssContainerDto { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssContainersResultDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainersResultDto.cs similarity index 90% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssContainersResultDto.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainersResultDto.cs index 6617ee478..a64bf9cda 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssContainersResultDto.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainersResultDto.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class OssContainersResultDto { diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs new file mode 100644 index 000000000..fc8856b40 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs @@ -0,0 +1,7 @@ +namespace LINGYUN.Abp.OssManagement +{ + public static class OssManagementRemoteServiceConsts + { + public const string RemoteServiceName = "AbpOssManagement"; + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssObjectDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectDto.cs similarity index 92% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssObjectDto.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectDto.cs index dbacaef6a..80e41f896 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssObjectDto.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectDto.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class OssObjectDto { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssObjectsResultDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectsResultDto.cs similarity index 92% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssObjectsResultDto.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectsResultDto.cs index 0d8cc9c44..dd8f1f722 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/OssObjectsResultDto.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectsResultDto.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class OssObjectsResultDto { diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs new file mode 100644 index 000000000..10ce0f4eb --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs @@ -0,0 +1,27 @@ +using LINGYUN.Abp.OssManagement.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.OssManagement.Permissions +{ + public class AbpOssManagementPermissionDefinitionProvider : PermissionDefinitionProvider + { + public override void Define(IPermissionDefinitionContext context) + { + var ossManagement = context.AddGroup(AbpOssManagementPermissions.GroupName, L("Permission:OssManagement")); + + var container = ossManagement.AddPermission(AbpOssManagementPermissions.Container.Default, L("Permission:Container")); + container.AddChild(AbpOssManagementPermissions.Container.Create, L("Permission:Create")); + container.AddChild(AbpOssManagementPermissions.Container.Delete, L("Permission:Delete")); + + var ossobject = ossManagement.AddPermission(AbpOssManagementPermissions.OssObject.Default, L("Permission:OssObject")); + ossobject.AddChild(AbpOssManagementPermissions.OssObject.Create, L("Permission:Create")); + ossobject.AddChild(AbpOssManagementPermissions.OssObject.Delete, L("Permission:Delete")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissions.cs new file mode 100644 index 000000000..a0174d7c0 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissions.cs @@ -0,0 +1,27 @@ +namespace LINGYUN.Abp.OssManagement.Permissions +{ + public class AbpOssManagementPermissions + { + public const string GroupName = "AbpOssManagement"; + + public class Container + { + public const string Default = GroupName + ".Container"; + + public const string Create = Default + ".Create"; + + public const string Delete = Default + ".Delete"; + } + + public class OssObject + { + public const string Default = GroupName + ".OssObject"; + + public const string Create = Default + ".Create"; + + public const string Delete = Default + ".Delete"; + + public const string Download = Default + ".Download"; + } + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN.Abp.FileManagement.Application.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj similarity index 56% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN.Abp.FileManagement.Application.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj index aeea6658a..0f84edb86 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN.Abp.FileManagement.Application.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs new file mode 100644 index 000000000..41df61378 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs @@ -0,0 +1,23 @@ +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; +using Microsoft.Extensions.DependencyInjection; + +namespace LINGYUN.Abp.OssManagement +{ + [DependsOn( + typeof(AbpAutoMapperModule), + typeof(AbpOssManagementDomainModule), + typeof(AbpOssManagementApplicationContractsModule))] + public class AbpOssManagementApplicationModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAutoMapperObjectMapper(); + + Configure(options => + { + options.AddProfile(validate: true); + }); + } + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/OssContainerAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssContainerAppService.cs similarity index 82% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/OssContainerAppService.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssContainerAppService.cs index 0ac053e16..a51a72472 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/OssContainerAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssContainerAppService.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; +using LINGYUN.Abp.OssManagement.Permissions; +using Microsoft.AspNetCore.Authorization; using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - public class OssContainerAppService : FileManagementApplicationServiceBase, IOssContainerAppService + [Authorize(AbpOssManagementPermissions.Container.Default)] + public class OssContainerAppService : OssManagementApplicationServiceBase, IOssContainerAppService { protected IOssContainerFactory OssContainerFactory { get; } @@ -14,6 +15,7 @@ namespace LINGYUN.Abp.FileManagement OssContainerFactory = ossContainerFactory; } + [Authorize(AbpOssManagementPermissions.Container.Create)] public virtual async Task CreateAsync(string name) { var oss = CreateOssContainer(); @@ -22,6 +24,7 @@ namespace LINGYUN.Abp.FileManagement return ObjectMapper.Map(container); } + [Authorize(AbpOssManagementPermissions.Container.Delete)] public virtual async Task DeleteAsync(string name) { var oss = CreateOssContainer(); diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationAutoMapperProfile.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationAutoMapperProfile.cs similarity index 70% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationAutoMapperProfile.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationAutoMapperProfile.cs index 8bb61e63d..47441dd87 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationAutoMapperProfile.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationAutoMapperProfile.cs @@ -1,10 +1,10 @@ using AutoMapper; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - public class FileManagementApplicationAutoMapperProfile : Profile + public class OssManagementApplicationAutoMapperProfile : Profile { - public FileManagementApplicationAutoMapperProfile() + public OssManagementApplicationAutoMapperProfile() { CreateMap(); CreateMap() diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationServiceBase.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationServiceBase.cs new file mode 100644 index 000000000..32150b969 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationServiceBase.cs @@ -0,0 +1,14 @@ +using LINGYUN.Abp.OssManagement.Localization; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.OssManagement +{ + public class OssManagementApplicationServiceBase : ApplicationService + { + protected OssManagementApplicationServiceBase() + { + LocalizationResource = typeof(AbpOssManagementResource); + ObjectMapperContext = typeof(AbpOssManagementApplicationModule); + } + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/OssObjectAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssObjectAppService.cs similarity index 73% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/OssObjectAppService.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssObjectAppService.cs index 0e94ef924..4ef0219f3 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/OssObjectAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssObjectAppService.cs @@ -1,18 +1,23 @@ -using LINGYUN.Abp.FileManagement.Settings; +using LINGYUN.Abp.Features.LimitValidation; +using LINGYUN.Abp.OssManagement.Features; +using LINGYUN.Abp.OssManagement.Permissions; +using LINGYUN.Abp.OssManagement.Settings; +using Microsoft.AspNetCore.Authorization; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.IO; using System.Linq; using System.Threading.Tasks; -using Volo.Abp; +using Volo.Abp.Features; using Volo.Abp.IO; using Volo.Abp.Settings; using Volo.Abp.Validation; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - public class OssObjectAppService : FileManagementApplicationServiceBase, IOssObjectAppService + [Authorize(AbpOssManagementPermissions.OssObject.Default)] + public class OssObjectAppService : OssManagementApplicationServiceBase, IOssObjectAppService { protected IOssContainerFactory OssContainerFactory { get; } @@ -22,6 +27,12 @@ namespace LINGYUN.Abp.FileManagement OssContainerFactory = ossContainerFactory; } + [Authorize(AbpOssManagementPermissions.OssObject.Create)] + [RequiresFeature(AbpOssManagementFeatureNames.OssObject.UploadFile)] + [RequiresLimitFeature( + AbpOssManagementFeatureNames.OssObject.UploadLimit, + AbpOssManagementFeatureNames.OssObject.UploadInterval, + LimitPolicy.Month)] public virtual async Task CreateAsync(CreateOssObjectInput input) { if (!input.Content.IsNullOrEmpty()) @@ -29,8 +40,8 @@ namespace LINGYUN.Abp.FileManagement // 检查文件大小 var fileSizeLimited = await SettingProvider .GetAsync( - AbpFileManagementSettingNames.FileLimitLength, - AbpFileManagementSettingNames.DefaultFileLimitLength); + AbpOssManagementSettingNames.FileLimitLength, + AbpOssManagementSettingNames.DefaultFileLimitLength); if (fileSizeLimited * 1024 * 1024 < input.Content.Length) { ThrowValidationException(L["UploadFileSizeBeyondLimit", fileSizeLimited], nameof(input.Content)); @@ -38,7 +49,7 @@ namespace LINGYUN.Abp.FileManagement // 文件扩展名 var fileExtensionName = FileHelper.GetExtension(input.Object); - var fileAllowExtension = await SettingProvider.GetOrNullAsync(AbpFileManagementSettingNames.AllowFileExtensions); + var fileAllowExtension = await SettingProvider.GetOrNullAsync(AbpOssManagementSettingNames.AllowFileExtensions); // 检查文件扩展名 if (!fileAllowExtension.Split(',') .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase))) @@ -60,6 +71,7 @@ namespace LINGYUN.Abp.FileManagement return ObjectMapper.Map(ossObject); } + [Authorize(AbpOssManagementPermissions.OssObject.Delete)] public virtual async Task BulkDeleteAsync(BulkDeleteOssObjectInput input) { var oss = CreateOssContainer(); @@ -67,6 +79,7 @@ namespace LINGYUN.Abp.FileManagement await oss.BulkDeleteObjectsAsync(input.Bucket, input.Objects, input.Path); } + [Authorize(AbpOssManagementPermissions.OssObject.Delete)] public virtual async Task DeleteAsync(GetOssObjectInput input) { var oss = CreateOssContainer(); diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/StaticFilesAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/StaticFilesAppService.cs similarity index 61% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/StaticFilesAppService.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/StaticFilesAppService.cs index d5d3427e3..88062883d 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/StaticFilesAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/StaticFilesAppService.cs @@ -1,10 +1,13 @@ -using System.IO; +using LINGYUN.Abp.Features.LimitValidation; +using LINGYUN.Abp.OssManagement.Features; +using System.IO; using System.Threading.Tasks; using System.Web; +using Volo.Abp.Features; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - public class StaticFilesAppService : FileManagementApplicationServiceBase, IStaticFilesAppService + public class StaticFilesAppService : OssManagementApplicationServiceBase, IStaticFilesAppService { protected IOssContainerFactory OssContainerFactory { get; } @@ -14,6 +17,11 @@ namespace LINGYUN.Abp.FileManagement OssContainerFactory = ossContainerFactory; } + [RequiresFeature(AbpOssManagementFeatureNames.OssObject.DownloadFile)] + [RequiresLimitFeature( + AbpOssManagementFeatureNames.OssObject.DownloadLimit, + AbpOssManagementFeatureNames.OssObject.DownloadInterval, + LimitPolicy.Month)] public virtual async Task GetAsync(GetStaticFileInput input) { var ossObjectRequest = new GetOssObjectRequest( diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN.Abp.FileManagement.Domain.Shared.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj similarity index 50% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN.Abp.FileManagement.Domain.Shared.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj index 03eadc873..877fd2915 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN.Abp.FileManagement.Domain.Shared.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj @@ -8,13 +8,13 @@ - - + + - - + + diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/AbpFileManagementDomainSharedModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/AbpOssManagementDomainSharedModule.cs similarity index 60% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/AbpFileManagementDomainSharedModule.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/AbpOssManagementDomainSharedModule.cs index a95cf50f7..1479ef76c 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/AbpFileManagementDomainSharedModule.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/AbpOssManagementDomainSharedModule.cs @@ -1,4 +1,4 @@ -using LINGYUN.Abp.FileManagement.Localization; +using LINGYUN.Abp.OssManagement.Localization; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; @@ -6,30 +6,30 @@ using Volo.Abp.Validation; using Volo.Abp.Validation.Localization; using Volo.Abp.VirtualFileSystem; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { [DependsOn(typeof(AbpValidationModule))] - public class AbpFileManagementDomainSharedModule : AbpModule + public class AbpOssManagementDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { Configure(options => { - options.FileSets.AddEmbedded(); + options.FileSets.AddEmbedded(); }); Configure(options => { options.Resources - .Add("en") + .Add("en") .AddBaseTypes( typeof(AbpValidationResource) - ).AddVirtualJson("/LINGYUN/Abp/FileManagement/Localization/Resources"); + ).AddVirtualJson("/LINGYUN/Abp/OssManagement/Localization/Resources"); }); Configure(options => { - options.MapCodeNamespace(FileManagementErrorCodes.Namespace, typeof(AbpFileManagementResource)); + options.MapCodeNamespace(OssManagementErrorCodes.Namespace, typeof(AbpOssManagementResource)); }); } } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/AbpOssManagementResource.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/AbpOssManagementResource.cs new file mode 100644 index 000000000..fc4ddbeb7 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/AbpOssManagementResource.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.OssManagement.Localization +{ + [LocalizationResourceName("AbpOssManagement")] + public class AbpOssManagementResource + { + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/en.json similarity index 63% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/en.json index 9226adb40..e47101e09 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/en.json @@ -8,20 +8,13 @@ "Abp.FileManagement:020402": "The object name already exists!", "Abp.FileManagement:020404": "The queried object could not be found!", "Abp.FileManagement:000405": "The path object name has exceeded the allowable maximum length and cannot continue to create a new object!", - "Permission:FileManagement": "File management", - "Permission:FileSystem": "File system", - "Permission:FileManager": "Files", - "Permission:CreateFolder": "Create directory", - "Permission:DeleteFolder": "Delete directory", - "Permission:UpdateFolder": "Edit directory", - "Permission:MoveFolder": "Change directory", - "Permission:CopyFolder": "Copy directory", - "Permission:AppendFile": "Add files", - "Permission:UpdateFile": "Change file", - "Permission:DeleteFile": "Delete file", - "Permission:CopyFile": "Copy file", - "Permission:MoveFile": "Move file", - "Permission:DownloadFile": "Download file", + "Permission:OssManagement": "Object Storage", + "Permission:Container": "Containers", + "Permission:OssObject": "Objects", + "Permission:Create": "Create", + "Permission:Delete": "Delete", + "Permission:Upload": "Upload", + "Permission:Download": "Download", "FileNotFound": "The specified file does not exist!", "PathNotFound": "The specified directory does not exist!", "FilePathNotFound": "The file or directory does not exist!", @@ -30,6 +23,10 @@ "FilePathAlreadyExists": "The same file or directory already exists in the specified path!", "UploadFileSizeBeyondLimit": "Upload file size cannot exceed {0} MB!", "NotAllowedFileExtensionName": "Not allowed file extension: {0}!", + "DisplayName:OssManagement": "Object Storage", + "Description:OssManagement": "Object Storage", + "DisplayName:OssObject": "Objects", + "Description:OssObject": "Objects", "DisplayName:FileLimitLength": "File limit size", "Description:FileLimitLength": "Limit size of uploaded file in MB", "DisplayName:AllowFileExtensions": "File extension", @@ -38,8 +35,16 @@ "Features:DisplayName:FileSystem": "File system", "Features:DisplayName:DownloadFile": "Download file", "Features:Description:DownloadFile": "Whether to allow users to download files", + "Features:DisplayName:DownloadLimit": "Limit Of Downloads", + "Features:Description:DownloadLimit": "Limits the total number of times a file is downloaded within a specified period", + "Features:DisplayName:DownloadInterval": "Limit Downloads Interval", + "Features:Description:DownloadInterval": "The update period that limits the number of files downloaded. The time scale is: month. Default: 1", "Features:DisplayName:UploadFile": "Upload file", "Features:Description:UploadFile": "Whether to allow users to upload files", + "Features:DisplayName:UploadLimit": "Limit Of Uploads", + "Features:Description:UploadLimit": "Limits the total number of file uploads within a specified period", + "Features:DisplayName:UploadInterval": "Limit Uploads Interval", + "Features:Description:UploadInterval": "The update period that limits the number of files uploaded. The time scale is: month. Default: 1", "Features:DisplayName:MaxUploadFileCount": "Maximum number of upload files", "Features:Description:MaxUploadFileCount": "Limit the number of files a user uploads at a time" } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/zh-Hans.json similarity index 59% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/zh-Hans.json index a5ed73cd8..889d7b3cf 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/zh-Hans.json @@ -8,20 +8,13 @@ "Abp.FileManagement:020402": "对象名称已经存在!", "Abp.FileManagement:020404": "未能找到查询的对象!", "Abp.FileManagement:000405": "此路径对象名称已超出允许的最大长度,无法继续创建新对象!", - "Permission:FileManagement": "文件管理", - "Permission:FileSystem": "文件系统", - "Permission:FileManager": "文件", - "Permission:CreateFolder": "创建目录", - "Permission:DeleteFolder": "删除目录", - "Permission:UpdateFolder": "修改目录", - "Permission:MoveFolder": "变更目录", - "Permission:CopyFolder": "复制目录", - "Permission:AppendFile": "添加文件", - "Permission:UpdateFile": "变更文件", - "Permission:DeleteFile": "删除文件", - "Permission:CopyFile": "复制文件", - "Permission:MoveFile": "移动文件", - "Permission:DownloadFile": "下载文件", + "Permission:OssManagement": "对象存储", + "Permission:Container": "容器管理", + "Permission:OssObject": "对象管理", + "Permission:Create": "新增", + "Permission:Delete": "删除", + "Permission:Upload": "上传", + "Permission:Download": "下载", "FileNotFound": "指定的文件不存在!", "PathNotFound": "指定的目录不存在!", "FilePathNotFound": "文件或目录不存在!", @@ -30,16 +23,28 @@ "FilePathAlreadyExists": "指定的路径中已经有相同的文件或目录存在!", "UploadFileSizeBeyondLimit": "上传文件大小不能超过 {0} MB!", "NotAllowedFileExtensionName": "不被允许的文件扩展名: {0}!", + "DisplayName:OssManagement": "对象存储", + "Description:OssManagement": "对象存储", + "DisplayName:OssObject": "Oss对象", + "Description:OssObject": "Oss对象", "DisplayName:FileLimitLength": "文件限制大小", "Description:FileLimitLength": "上传文件的限制大小,单位(MB)", "DisplayName:AllowFileExtensions": "文件扩展名", "Description:AllowFileExtensions": "允许的上传文件扩展名列表,多个扩展名以,分隔,无需输入.符号", - "Features:FileManagement": "文件管理", - "Features:DisplayName:FileSystem": "文件系统", + "Features:OssManagement": "对象存储", + "Features:DisplayName:OssObject": "Oss管理", "Features:DisplayName:DownloadFile": "下载文件", "Features:Description:DownloadFile": "是否允许用户下载文件", + "Features:DisplayName:DownloadLimit": "限制下载文件次数", + "Features:Description:DownloadLimit": "在指定的周期内限制下载文件的总次数", + "Features:DisplayName:DownloadInterval": "限制下载文件周期", + "Features:Description:DownloadInterval": "限制下载文件次数的更新周期,时间刻度为:月,默认:1", "Features:DisplayName:UploadFile": "上传文件", "Features:Description:UploadFile": "是否允许用户上传文件", + "Features:DisplayName:UploadLimit": "限制上传文件次数", + "Features:Description:UploadLimit": "在指定的周期内限制上传文件的总次数", + "Features:DisplayName:UploadInterval": "限制上传文件周期", + "Features:Description:UploadInterval": "限制上传文件次数的更新周期,时间刻度为:月,默认:1", "Features:DisplayName:MaxUploadFileCount": "上传文件数量", "Features:Description:MaxUploadFileCount": "用户单次上传文件的限制数量" } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/OssManagementErrorCodes.cs similarity index 78% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/OssManagementErrorCodes.cs index bb141b8cc..6a4b57251 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/FileManagementErrorCodes.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/OssManagementErrorCodes.cs @@ -1,8 +1,8 @@ -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - public static class FileManagementErrorCodes + public static class OssManagementErrorCodes { - public const string Namespace = "Abp.FileManagement"; + public const string Namespace = "Abp.OssManagement"; public const string ContainerDeleteWithNotEmpty = Namespace + ":010001"; public const string ContainerAlreadyExists = Namespace + ":010402"; diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs similarity index 66% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingDefinitionProvider.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs index b93566816..6f01001a1 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingDefinitionProvider.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs @@ -1,10 +1,10 @@ -using LINGYUN.Abp.FileManagement.Localization; +using LINGYUN.Abp.OssManagement.Localization; using Volo.Abp.Localization; using Volo.Abp.Settings; -namespace LINGYUN.Abp.FileManagement.Settings +namespace LINGYUN.Abp.OssManagement.Settings { - public class AbpFileManagementSettingDefinitionProvider : SettingDefinitionProvider + public class AbpOssManagementSettingDefinitionProvider : SettingDefinitionProvider { public override void Define(ISettingDefinitionContext context) { @@ -16,8 +16,8 @@ namespace LINGYUN.Abp.FileManagement.Settings return new SettingDefinition[] { new SettingDefinition( - name: AbpFileManagementSettingNames.FileLimitLength, - defaultValue: AbpFileManagementSettingNames.DefaultFileLimitLength.ToString(), + name: AbpOssManagementSettingNames.FileLimitLength, + defaultValue: AbpOssManagementSettingNames.DefaultFileLimitLength.ToString(), displayName: L("DisplayName:FileLimitLength"), description: L("Description:FileLimitLength"), isVisibleToClients: true) @@ -25,8 +25,8 @@ namespace LINGYUN.Abp.FileManagement.Settings GlobalSettingValueProvider.ProviderName, TenantSettingValueProvider.ProviderName), new SettingDefinition( - name: AbpFileManagementSettingNames.AllowFileExtensions, - defaultValue: AbpFileManagementSettingNames.DefaultAllowFileExtensions, + name: AbpOssManagementSettingNames.AllowFileExtensions, + defaultValue: AbpOssManagementSettingNames.DefaultAllowFileExtensions, displayName: L("DisplayName:AllowFileExtensions"), description: L("Description:AllowFileExtensions"), isVisibleToClients: true) @@ -38,7 +38,7 @@ namespace LINGYUN.Abp.FileManagement.Settings protected LocalizableString L(string name) { - return LocalizableString.Create(name); + return LocalizableString.Create(name); } } } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingNames.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs similarity index 82% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingNames.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs index 56b5527da..89fa80d47 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingNames.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs @@ -1,8 +1,8 @@ -namespace LINGYUN.Abp.FileManagement.Settings +namespace LINGYUN.Abp.OssManagement.Settings { - public class AbpFileManagementSettingNames + public class AbpOssManagementSettingNames { - public const string GroupName = "Abp.FileManagement"; + public const string GroupName = "Abp.OssManagement"; /// /// 下载分包大小 /// diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/System/IO/StreamExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/System/IO/StreamExtensions.cs similarity index 100% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/System/IO/StreamExtensions.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/System/IO/StreamExtensions.cs diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj similarity index 61% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj index b71d697a1..0d309f74a 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj @@ -13,7 +13,8 @@ - + + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementContainer.cs new file mode 100644 index 000000000..44688e979 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementContainer.cs @@ -0,0 +1,9 @@ +using Volo.Abp.BlobStoring; + +namespace LINGYUN.Abp.OssManagement +{ + [BlobContainerName("abp-oss-management")] + public class AbpOssManagementContainer + { + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementDomainModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementDomainModule.cs new file mode 100644 index 000000000..660c38007 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementDomainModule.cs @@ -0,0 +1,17 @@ +using LINGYUN.Abp.Features.LimitValidation; +using Volo.Abp.Domain; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; + +namespace LINGYUN.Abp.OssManagement +{ + [DependsOn( + typeof(AbpDddDomainModule), + typeof(AbpMultiTenancyModule), + typeof(AbpFeaturesLimitValidationModule), + typeof(AbpOssManagementDomainSharedModule) + )] + public class AbpOssManagementDomainModule : AbpModule + { + } +} diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/BulkDeleteObjectRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/BulkDeleteObjectRequest.cs similarity index 94% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/BulkDeleteObjectRequest.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/BulkDeleteObjectRequest.cs index 84faba84b..021a56674 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/BulkDeleteObjectRequest.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/BulkDeleteObjectRequest.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Volo.Abp; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class BulkDeleteObjectRequest { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/CreateOssObjectRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/CreateOssObjectRequest.cs similarity index 96% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/CreateOssObjectRequest.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/CreateOssObjectRequest.cs index c05b1e78c..47507073e 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/CreateOssObjectRequest.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/CreateOssObjectRequest.cs @@ -3,7 +3,7 @@ using System; using System.IO; using Volo.Abp; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class CreateOssObjectRequest { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssContainersRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersRequest.cs similarity index 91% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssContainersRequest.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersRequest.cs index c57a24e0e..c89fa3764 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssContainersRequest.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersRequest.cs @@ -1,4 +1,4 @@ -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssContainersRequest { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssContainersResponse.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersResponse.cs similarity index 94% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssContainersResponse.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersResponse.cs index ef7e5257a..47a7ee28a 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssContainersResponse.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersResponse.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssContainersResponse { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectRequest.cs similarity index 95% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectRequest.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectRequest.cs index ae86b7491..6541d3bfd 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectRequest.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectRequest.cs @@ -1,7 +1,7 @@ using JetBrains.Annotations; using Volo.Abp; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssObjectRequest { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectsRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsRequest.cs similarity index 96% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectsRequest.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsRequest.cs index 2ec2f88eb..725b67c92 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectsRequest.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsRequest.cs @@ -1,7 +1,7 @@ using JetBrains.Annotations; using Volo.Abp; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssObjectsRequest { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectsResponse.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsResponse.cs similarity index 95% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectsResponse.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsResponse.cs index 2cdb7444e..577413ca2 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/GetOssObjectsResponse.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsResponse.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class GetOssObjectsResponse { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs similarity index 98% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainer.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs index 21c996b6d..d752ab284 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainer.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { /// /// Oss容器 diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainerExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerExtensions.cs similarity index 98% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainerExtensions.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerExtensions.cs index cf631031b..9bee73fba 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainerExtensions.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerExtensions.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public static class IOssContainerExtensions { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainerFactory.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerFactory.cs similarity index 89% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainerFactory.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerFactory.cs index 56472c8fb..90ade75c4 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/IOssContainerFactory.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerFactory.cs @@ -1,4 +1,4 @@ -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { /// /// Oss容器构建工厂 diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainer.cs similarity index 95% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssContainer.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainer.cs index 6bf1439e8..9ae82078f 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssContainer.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainer.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { /// /// 描述了一个容器的状态信息 diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssObject.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObject.cs similarity index 97% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssObject.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObject.cs index 1ffe5a212..26a7f1fb0 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssObject.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObject.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { /// /// 描述了一个对象的状态信息 diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssObjectComparer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObjectComparer.cs similarity index 93% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssObjectComparer.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObjectComparer.cs index 07f75d919..c75491aeb 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/OssObjectComparer.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObjectComparer.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class OssObjectComparer : IComparer { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj similarity index 71% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj index b529046bc..a6b41cb6c 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj @@ -10,7 +10,7 @@ - + diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement/FileSystem/ImageSharp/AbpFileManagementFileSystemImageSharpModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/AbpOssManagementFileSystemImageSharpModule.cs similarity index 62% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement/FileSystem/ImageSharp/AbpFileManagementFileSystemImageSharpModule.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/AbpOssManagementFileSystemImageSharpModule.cs index 78a790eaa..a8c25d81c 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement/FileSystem/ImageSharp/AbpFileManagementFileSystemImageSharpModule.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/AbpOssManagementFileSystemImageSharpModule.cs @@ -1,9 +1,9 @@ using Volo.Abp.Modularity; -namespace LINGYUN.Abp.FileManagement.FileSystem.ImageSharp +namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp { - [DependsOn(typeof(AbpFileManagementFileSystemModule))] - public class AbpFileManagementFileSystemImageSharpModule : AbpModule + [DependsOn(typeof(AbpOssManagementFileSystemModule))] + public class AbpOssManagementFileSystemImageSharpModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs similarity index 98% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs index e34c7474d..ab5573f29 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/LINGYUN/Abp/FileManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs @@ -10,7 +10,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; -namespace LINGYUN.Abp.FileManagement.FileSystem.ImageSharp +namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp { public class ImageSharpProcesserContributor : IFileSystemOssObjectProcesserContributor { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/README.md similarity index 59% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/README.md rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/README.md index 46c3c2686..c9af0aece 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem.ImageSharp/README.md +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/README.md @@ -1,4 +1,4 @@ -# LINGYUN.Abp.FileManagement.FileSystem.ImageSharp +# LINGYUN.Abp.OssManagement.FileSystem.ImageSharp 本地文件系统oss对象ImageSharp图形处理接口 @@ -7,7 +7,7 @@ 模块按需引用 ```csharp -[DependsOn(typeof(AbpFileManagementFileSystemImageSharpModule))] +[DependsOn(typeof(AbpOssManagementFileSystemImageSharpModule))] public class YouProjectModule : AbpModule { // other diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN.Abp.FileManagement.FileSystem.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj similarity index 74% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN.Abp.FileManagement.FileSystem.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj index dfea42079..8012ed114 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN.Abp.FileManagement.FileSystem.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj @@ -11,7 +11,7 @@ - + diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/AbpFileManagementFileSystemModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/AbpOssManagementFileSystemModule.cs similarity index 71% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/AbpFileManagementFileSystemModule.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/AbpOssManagementFileSystemModule.cs index 76421c779..5434bb019 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/AbpFileManagementFileSystemModule.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/AbpOssManagementFileSystemModule.cs @@ -2,12 +2,12 @@ using Volo.Abp.BlobStoring.FileSystem; using Volo.Abp.Modularity; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { [DependsOn( typeof(AbpBlobStoringFileSystemModule), - typeof(AbpFileManagementDomainModule))] - public class AbpFileManagementFileSystemModule : AbpModule + typeof(AbpOssManagementDomainModule))] + public class AbpOssManagementFileSystemModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs similarity index 94% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainer.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs index 8db2b4542..d82aee4e1 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainer.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs @@ -12,7 +12,7 @@ using Volo.Abp.BlobStoring.FileSystem; using Volo.Abp.IO; using Volo.Abp.MultiTenancy; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { /// /// Oss容器的本地文件系统实现 @@ -55,7 +55,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem { if (Directory.GetFileSystemEntries(file).Length > 0) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerDeleteWithNotEmpty); + throw new BusinessException(code: OssManagementErrorCodes.ContainerDeleteWithNotEmpty); // throw new ContainerDeleteWithNotEmptyException("00101", $"Can't not delete container {name}, because it is not empty!"); } Directory.Delete(file); @@ -108,7 +108,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem if (File.Exists(filePath)) { - throw new BusinessException(code: FileManagementErrorCodes.ObjectAlreadyExists); + throw new BusinessException(code: OssManagementErrorCodes.ObjectAlreadyExists); // throw new OssObjectAlreadyExistsException($"Can't not put object {objectName} in container {request.Bucket}, Because a file with the same name already exists in the directory!"); } @@ -144,7 +144,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem ThrowOfPathHasTooLong(filePath); if (Directory.Exists(filePath)) { - throw new BusinessException(code: FileManagementErrorCodes.ObjectAlreadyExists); + throw new BusinessException(code: OssManagementErrorCodes.ObjectAlreadyExists); // throw new OssObjectAlreadyExistsException($"Can't not put object {objectName} in container {request.Bucket}, Because a file with the same name already exists in the directory!"); } Directory.CreateDirectory(filePath); @@ -175,12 +175,12 @@ namespace LINGYUN.Abp.FileManagement.FileSystem var filePath = CalculateFilePath(name); if (!Directory.Exists(filePath)) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerNotFound); + throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound); } // 非空目录无法删除 if (Directory.GetFileSystemEntries(filePath).Length > 0) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerDeleteWithNotEmpty); + throw new BusinessException(code: OssManagementErrorCodes.ContainerDeleteWithNotEmpty); // throw new ContainerDeleteWithNotEmptyException("00101", $"Can't not delete container {name}, because it is not empty!"); } Directory.Delete(filePath); @@ -202,7 +202,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem { if (Directory.GetFileSystemEntries(filePath).Length > 0) { - throw new BusinessException(code: FileManagementErrorCodes.ObjectDeleteWithNotEmpty); + throw new BusinessException(code: OssManagementErrorCodes.ObjectDeleteWithNotEmpty); } Directory.Delete(filePath); } @@ -222,7 +222,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem var filePath = CalculateFilePath(name); if (!Directory.Exists(filePath)) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerNotFound); + throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound); // throw new ContainerNotFoundException($"Can't not found container {name} in file system"); } @@ -254,7 +254,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem { if (!Directory.Exists(filePath)) { - throw new BusinessException(code: FileManagementErrorCodes.ObjectNotFound); + throw new BusinessException(code: OssManagementErrorCodes.ObjectNotFound); // throw new ContainerNotFoundException($"Can't not found object {objectName} in container {request.Bucket} with file system"); } var directoryInfo = new DirectoryInfo(filePath); @@ -388,7 +388,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem var filePath = CalculateFilePath(request.BucketName, request.Prefix); if (!Directory.Exists(filePath)) { - throw new BusinessException(code: FileManagementErrorCodes.ContainerNotFound); + throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound); // throw new ContainerNotFoundException($"Can't not found container {request.BucketName} in file system"); } // 目录也属于Oss对象,需要抽象的文件系统集合来存储 @@ -494,7 +494,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem protected virtual FileSystemBlobProviderConfiguration GetFileSystemConfiguration() { - var configuration = ConfigurationProvider.Get(); + var configuration = ConfigurationProvider.Get(); var fileSystemConfiguration = configuration.GetFileSystemConfiguration(); return fileSystemConfiguration; } @@ -532,7 +532,7 @@ namespace LINGYUN.Abp.FileManagement.FileSystem // Linux 255 4096 //if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && path.Length >= 255) // 预留5位 //{ - // throw new BusinessException(code: FileManagementErrorCodes.OssNameHasTooLong); + // throw new BusinessException(code: OssManagementErrorCodes.OssNameHasTooLong); //} } } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainerFactory.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainerFactory.cs similarity index 97% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainerFactory.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainerFactory.cs index 7943486d9..2088a3476 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssContainerFactory.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainerFactory.cs @@ -5,7 +5,7 @@ using Volo.Abp.BlobStoring; using Volo.Abp.BlobStoring.FileSystem; using Volo.Abp.MultiTenancy; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { public class FileSystemOssContainerFactory : IOssContainerFactory { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssObjectContext.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssObjectContext.cs similarity index 94% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssObjectContext.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssObjectContext.cs index 0cf679f0e..8a41266f8 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssObjectContext.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssObjectContext.cs @@ -2,7 +2,7 @@ using System.IO; using Volo.Abp.DependencyInjection; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { public class FileSystemOssObjectContext : IServiceProviderAccessor { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssOptions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptions.cs similarity index 90% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssOptions.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptions.cs index 7acd79069..5d5fd4f6c 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssOptions.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptions.cs @@ -1,7 +1,7 @@ using JetBrains.Annotations; using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { public class FileSystemOssOptions { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssOptionsExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptionsExtensions.cs similarity index 90% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssOptionsExtensions.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptionsExtensions.cs index 0355abbf3..806052fbe 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/FileSystemOssOptionsExtensions.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptionsExtensions.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { public static class FileSystemOssOptionsExtensions { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs similarity index 59% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs index 0691634a5..9ac5df132 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs @@ -1,7 +1,6 @@ -using System.IO; -using System.Threading.Tasks; +using System.Threading.Tasks; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { public interface IFileSystemOssObjectProcesserContributor { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs similarity index 75% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs index 954f79105..2b337cf40 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/LINGYUN/Abp/FileManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs @@ -1,7 +1,6 @@ -using System.IO; -using System.Threading.Tasks; +using System.Threading.Tasks; -namespace LINGYUN.Abp.FileManagement.FileSystem +namespace LINGYUN.Abp.OssManagement.FileSystem { public class NoneFileSystemOssObjectProcesser : IFileSystemOssObjectProcesserContributor { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md similarity index 100% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.FileSystem/README.md rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN.Abp.FileManagement.HttpApi.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj similarity index 69% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN.Abp.FileManagement.HttpApi.csproj rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj index 66266371b..86f3df1fa 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN.Abp.FileManagement.HttpApi.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj @@ -1,4 +1,4 @@ - + @@ -13,7 +13,7 @@ - + diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/AbpFileManagementHttpApiModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiModule.cs similarity index 68% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/AbpFileManagementHttpApiModule.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiModule.cs index f8d61cf03..05b3ae7e7 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/AbpFileManagementHttpApiModule.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiModule.cs @@ -2,19 +2,19 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Modularity; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { [DependsOn( - typeof(AbpFileManagementApplicationContractsModule), + typeof(AbpOssManagementApplicationContractsModule), typeof(AbpAspNetCoreMvcModule) )] - public class AbpFileManagementHttpApiModule : AbpModule + public class AbpOssManagementHttpApiModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure(mvcBuilder => { - mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpFileManagementHttpApiModule).Assembly); + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpOssManagementHttpApiModule).Assembly); }); } } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileValidater.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs similarity index 87% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileValidater.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs index 4640a989a..308462e17 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileValidater.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs @@ -1,5 +1,7 @@ -using LINGYUN.Abp.FileManagement.Settings; +using LINGYUN.Abp.OssManagement.Localization; +using LINGYUN.Abp.OssManagement.Settings; using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Localization; using System; using System.Linq; using System.Threading.Tasks; @@ -7,10 +9,8 @@ using Volo.Abp; using Volo.Abp.DependencyInjection; using Volo.Abp.IO; using Volo.Abp.Settings; -using Microsoft.Extensions.Localization; -using LINGYUN.Abp.FileManagement.Localization; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class FileValidater : IFileValidater, ISingletonDependency { @@ -23,7 +23,7 @@ namespace LINGYUN.Abp.FileManagement IMemoryCache cache, ISettingProvider settingProvider, IServiceProvider serviceProvider, - IStringLocalizer stringLocalizer) + IStringLocalizer stringLocalizer) { _cache = cache; _settingProvider = settingProvider; @@ -66,10 +66,10 @@ namespace LINGYUN.Abp.FileManagement { var fileSizeLimited = await _settingProvider .GetAsync( - AbpFileManagementSettingNames.FileLimitLength, - AbpFileManagementSettingNames.DefaultFileLimitLength); + AbpOssManagementSettingNames.FileLimitLength, + AbpOssManagementSettingNames.DefaultFileLimitLength); var fileAllowExtension = await _settingProvider - .GetOrDefaultAsync(AbpFileManagementSettingNames.AllowFileExtensions, _serviceProvider); + .GetOrDefaultAsync(AbpOssManagementSettingNames.AllowFileExtensions, _serviceProvider); return new FileValidation(fileSizeLimited, fileAllowExtension.Split(',')); } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/IFileValidater.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/IFileValidater.cs similarity index 79% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/IFileValidater.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/IFileValidater.cs index c6bb68030..2f9446e26 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/IFileValidater.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/IFileValidater.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public interface IFileValidater { diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssContainerController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssContainerController.cs similarity index 88% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssContainerController.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssContainerController.cs index 7809a2ade..8bfe4092c 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssContainerController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssContainerController.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using Volo.Abp; -using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - [RemoteService(Name = "AbpFileManagement")] - [Area("file-management")] - [Route("api/file-management/containes")] + [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)] + [Area("oss-management")] + [Route("api/oss-management/containes")] public class OssContainerController : AbpController, IOssContainerAppService { protected IOssContainerAppService OssContainerAppService { get; } diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssObjectController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs similarity index 93% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssObjectController.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs index dcf865542..067757b5a 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/OssObjectController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs @@ -1,4 +1,5 @@ -using LINGYUN.Abp.FileManagement.Settings; +using LINGYUN.Abp.OssManagement.Permissions; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; @@ -10,14 +11,13 @@ using Volo.Abp; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Auditing; using Volo.Abp.IO; -using Volo.Abp.Settings; using Volo.Abp.Validation; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - [RemoteService(Name = "AbpFileManagement")] - [Area("file-management")] - [Route("api/file-management/objects")] + [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)] + [Area("oss-management")] + [Route("api/oss-management/objects")] public class OssObjectController : AbpController, IOssObjectAppService { protected IFileValidater FileValidater { get; } @@ -40,6 +40,7 @@ namespace LINGYUN.Abp.FileManagement [HttpPost] [Route("upload")] [DisableAuditing] + [Authorize(AbpOssManagementPermissions.OssObject.Create)] public virtual async Task UploadAsync([FromForm] UploadOssObjectInput input) { await FileValidater.ValidationAsync(input); diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/StaticFilesController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs similarity index 85% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/StaticFilesController.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs index 5d1284471..39a06e93b 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/StaticFilesController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs @@ -1,18 +1,21 @@ -using Microsoft.AspNetCore.Http; +using LINGYUN.Abp.OssManagement.Permissions; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.IO; using System.Threading.Tasks; +using System.Web; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Http; using Volo.Abp.Validation; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { - [RemoteService(Name = "AbpFileManagement")] - [Area("file-management")] + [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)] + [Area("oss-management")] [Route("api/files/static")] public class StaticFilesController : AbpController { @@ -30,6 +33,7 @@ namespace LINGYUN.Abp.FileManagement [HttpPost] [Route("{bucket}")] [Route("{bucket}/{path}")] + [Authorize(AbpOssManagementPermissions.OssObject.Create)] public virtual async Task UploadAsync(string bucket, string path, [FromForm] IFormFile file) { if (file == null || file.Length <= 0) @@ -39,8 +43,8 @@ namespace LINGYUN.Abp.FileManagement var createOssObjectInput = new CreateOssObjectInput { - Bucket = bucket, - Path = path, + Bucket = HttpUtility.UrlDecode(bucket), + Path = HttpUtility.UrlDecode(path), Object = file.FileName, Content = file.OpenReadStream() }; diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/UploadOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs similarity index 96% rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/UploadOssObjectInput.cs rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs index 972bf4510..711eca7be 100644 --- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/UploadOssObjectInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Http; using System.ComponentModel.DataAnnotations; -namespace LINGYUN.Abp.FileManagement +namespace LINGYUN.Abp.OssManagement { public class UploadOssObjectInput { diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/AbpOssManagementSettingManagementModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/AbpOssManagementSettingManagementModule.cs new file mode 100644 index 000000000..8d30e73f2 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/AbpOssManagementSettingManagementModule.cs @@ -0,0 +1,20 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Modularity; + +namespace LINGYUN.Abp.OssManagement.SettingManagement +{ + [DependsOn( + typeof(AbpOssManagementApplicationContractsModule), + typeof(AbpAspNetCoreMvcModule))] + public class AbpOssManagementSettingManagementModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpOssManagementSettingManagementModule).Assembly); + }); + } + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj new file mode 100644 index 000000000..121e9f824 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj @@ -0,0 +1,18 @@ + + + + net5.0 + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/IOssManagementSettingAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/IOssManagementSettingAppService.cs new file mode 100644 index 000000000..d58768920 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/IOssManagementSettingAppService.cs @@ -0,0 +1,13 @@ +using LINGYUN.Abp.SettingManagement; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.OssManagement.SettingManagement +{ + public interface IOssManagementSettingAppService + { + Task> GetAllForGlobalAsync(); + + Task> GetAllForCurrentTenantAsync(); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingAppService.cs new file mode 100644 index 000000000..d9f594a06 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingAppService.cs @@ -0,0 +1,73 @@ +using LINGYUN.Abp.OssManagement.Localization; +using LINGYUN.Abp.OssManagement.Permissions; +using LINGYUN.Abp.OssManagement.Settings; +using LINGYUN.Abp.SettingManagement; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.MultiTenancy; +using Volo.Abp.SettingManagement; +using Volo.Abp.Settings; +using ValueType = LINGYUN.Abp.SettingManagement.ValueType; + +namespace LINGYUN.Abp.OssManagement.SettingManagement +{ + public class OssManagementSettingAppService : ApplicationService, IOssManagementSettingAppService + { + protected ISettingManager SettingManager { get; } + protected IPermissionChecker PermissionChecker { get; } + protected ISettingDefinitionManager SettingDefinitionManager { get; } + + public OssManagementSettingAppService( + ISettingManager settingManager, + IPermissionChecker permissionChecker, + ISettingDefinitionManager settingDefinitionManager) + { + SettingManager = settingManager; + PermissionChecker = permissionChecker; + SettingDefinitionManager = settingDefinitionManager; + LocalizationResource = typeof(AbpOssManagementResource); + } + + public virtual async Task> GetAllForCurrentTenantAsync() + { + return await GetAllForProviderAsync(TenantSettingValueProvider.ProviderName, CurrentTenant.GetId().ToString()); + } + + public virtual async Task> GetAllForGlobalAsync() + { + return await GetAllForProviderAsync(GlobalSettingValueProvider.ProviderName, null); + } + + protected virtual async Task> GetAllForProviderAsync(string providerName, string providerKey) + { + var settingGroups = new List(); + + // 无权限返回空结果,直接报错的话,网关聚合会抛出异常 + if (await PermissionChecker.IsGrantedAsync(AbpOssManagementPermissions.OssObject.Default)) + { + + var ossSettingGroup = new SettingGroupDto(L["DisplayName:OssManagement"], L["Description:OssManagement"]); + + var ossObjectSetting = ossSettingGroup.AddSetting(L["DisplayName:OssObject"], L["Description:OssObject"]); + + ossObjectSetting.AddDetail( + SettingDefinitionManager.Get(AbpOssManagementSettingNames.FileLimitLength), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(AbpOssManagementSettingNames.FileLimitLength, providerName, providerKey), + ValueType.Number); + ossObjectSetting.AddDetail( + SettingDefinitionManager.Get(AbpOssManagementSettingNames.AllowFileExtensions), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(AbpOssManagementSettingNames.AllowFileExtensions, providerName, providerKey), + ValueType.String); + + settingGroups.Add(ossSettingGroup); + } + + return new ListResultDto(settingGroups); + } + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingController.cs new file mode 100644 index 000000000..3668216db --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingController.cs @@ -0,0 +1,37 @@ +using LINGYUN.Abp.SettingManagement; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.OssManagement.SettingManagement +{ + [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)] + [Area("settingManagement")] + [Route("api/setting-management/oss-management")] + public class OssManagementSettingController : AbpController, IOssManagementSettingAppService + { + protected IOssManagementSettingAppService WeChatSettingAppService { get; } + + public OssManagementSettingController( + IOssManagementSettingAppService weChatSettingAppService) + { + WeChatSettingAppService = weChatSettingAppService; + } + + [HttpGet] + [Route("by-current-tenant")] + public virtual async Task> GetAllForCurrentTenantAsync() + { + return await WeChatSettingAppService.GetAllForCurrentTenantAsync(); + } + + [HttpGet] + [Route("by-global")] + public virtual async Task> GetAllForGlobalAsync() + { + return await WeChatSettingAppService.GetAllForGlobalAsync(); + } + } +} diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN.Abp.SettingManagement.Application.csproj b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN.Abp.SettingManagement.Application.csproj index 1ffec0af5..9c8cd2e38 100644 --- a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN.Abp.SettingManagement.Application.csproj +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN.Abp.SettingManagement.Application.csproj @@ -13,7 +13,6 @@ - diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/SettingAppService.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/SettingAppService.cs index bf844ac2d..09b10dc63 100644 --- a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/SettingAppService.cs +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/SettingAppService.cs @@ -1,9 +1,6 @@ -using LINGYUN.Abp.FileManagement.Settings; -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Options; -using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; using System.Linq; using System.Threading.Tasks; using Volo.Abp.Account.Settings; @@ -357,25 +354,6 @@ namespace LINGYUN.Abp.SettingManagement #endregion - #region 文件设置 - - var fileSettingGroup = new SettingGroupDto(L["DisplayName:FileManagement"], L["Description:FileManagement"]); - var fileSystemSetting = fileSettingGroup.AddSetting(L["DisplayName:FileManagement.FileSystem"], L["Description:FileManagement.FileSystem"]); - fileSystemSetting.AddDetail( - SettingDefinitionManager.Get(AbpFileManagementSettingNames.FileLimitLength), - StringLocalizerFactory, - await SettingManager.GetOrNullAsync(AbpFileManagementSettingNames.FileLimitLength, providerName, providerKey), - ValueType.Number); - fileSystemSetting.AddDetail( - SettingDefinitionManager.Get(AbpFileManagementSettingNames.AllowFileExtensions), - StringLocalizerFactory, - await SettingManager.GetOrNullAsync(AbpFileManagementSettingNames.AllowFileExtensions, providerName, providerKey), - ValueType.String); - - settingGroups.Add(fileSettingGroup); - - #endregion - return new ListResultDto(settingGroups); } } diff --git a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs index 5c1558e1b..fe052e6c2 100644 --- a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs +++ b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs @@ -4,7 +4,7 @@ using LINGYUN.Abp.Auditing; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; -using LINGYUN.Abp.FileManagement; +using LINGYUN.Abp.OssManagement; using LINGYUN.Abp.MessageService; using LINGYUN.Abp.MultiTenancy.DbFinder; using LINGYUN.Abp.PermissionManagement.Identity; @@ -69,7 +69,7 @@ namespace LINGYUN.Abp.BackendAdmin typeof(AbpAspNetCoreMvcUiMultiTenancyModule), typeof(PlatformApplicationContractModule), typeof(ApiGatewayApplicationContractsModule), - typeof(AbpFileManagementApplicationContractsModule), + typeof(AbpOssManagementApplicationContractsModule), typeof(AbpMessageServiceApplicationContractsModule), typeof(LINGYUN.Abp.Account.AbpAccountApplicationContractsModule),// 引用类似的包主要用于聚合权限管理和设置 typeof(LINGYUN.Abp.Identity.AbpIdentityApplicationContractsModule), diff --git a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj index b343bbe67..c4ecd9c69 100644 --- a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj +++ b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj @@ -66,7 +66,7 @@ - + diff --git a/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db b/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db index 87d7d4360c7dda52c45684dbe6779f18a6b41ab6..189b6e2e2077e9c6a6faa8d3a96c4d4321e68ac1 100644 GIT binary patch literal 40960 zcmeHQU2GiH72dU-P3+j�i*ILTtB9Nz{09|7PaSN-Zpon?$i4<2a~MrQ(e}I17$# z>~#R4v@RHmRCqut4}B>r5`_oUMrx7z1QCz@Q6KtHsjAeMQlwUu`hZYT`_S*s%~Q0?(&<_m13ufAWQMrNZSUcfPP{OmAFXDz0B~7ixsQv6=Dw?09B2|IoyE zX09e}E^}-klbJiaFqgSpTr4h^GE?VgGgB8QCQhjDA92^#iz~}>nQMi$`74FBV~iZn zoEraT{^Eq6D>HU}VnP)@b$%>=Vch%CRN<-{{sn$gF0@(pv6bbLyIh*fEUhdrmfWXH zULiAXX|3q4&t*`jW0clj)yt7zSa4D8g+j?K6|cILYj}y{Pp=l&-1R()tz-z-+skyJ zR48q%*H%}wuI=>9*~$FOrOdhUOPON|w&MfGoxaq_0cV-|wX_etX~8*nPt@um9q^r~aL|MkmfroxXH&%E+%4PvZf2s_=|4ehp92LmTVr zyG8#yJX((x7ssv?mKR+w`Bb4)sQzU1%*uMnxJIANo^cBcc+|7GXR{#a=zL*m>2hKI ziP2>|%GuoV#?sOWFX8I?;%IRpo6Azp2y-~2mhEuLIWetlHH-hV>}RNCsIbyAtEfZv z{N=~p`BL!xI&M`x^!Oh2ASWp~$;=G3bJWTSJM%RnbA$wW=U3L&wyU(4XWe}g<&}S? zZgo*H8{aiTmc4!=`$%DF12uRy3sl|NYHda-8D-{dxi*F%jC04SR4Tu^dRAdLJAPqy zG(SC!dQQ5fD=X@|$(4oTW6$85t*yz_px^ZKs_73WUpN2w;bttF-f~QnNNQ4BTDD|1 zYl3vkJdH@-X2#Hy9GuDg?bkp2@RgT%j>()UYFV@6=BJ~Cg8{SD^ounJm5%9Hx7Pdt z+jH3&cV=ayYS>RGt{}NmyOsldue7a*GMkc|NJKEn*8H8~B7I$B~>kPKZx^b$t5j8?oY( za2#e!hd4q+@+l%u4Ee-mSNOyw+MGd`v(EELm2F$ZWO$?l)m7F{NOCxloQV*hdh7Uf zZ^?~Oe`ix7q_9kjvS|Gjktc?HVoq21#2kZ|68%mW_@v6Vq5T}%z$YY`#Gz=L5TAPL z_%!_2IO!+LGKonsl44Cqs^0i1Do+ggM7yJ(s5BU}9LzI1ub))e7@J#7_=F^zb2Y~a z@hMryr@ehgW2B!fDliX&0-sw+VITsnh}r$#LHw6WsSW<&^hhH8ar&e5pVPlj-%S59{j>Cs(=VsLmtIS|>2Iaa zrN5D;>93?m4!l<<@x=#8;vQV=FA!Eg zf-nN%4-g)F3BS1;!Uw}s|9bNk2zNnvcX;Zbcm4e)NgRRj_VCm{-hU3iIXu{#N*+$$ zkngygiQzyH??E^e2=upaZYB-}!o4p*NC(0fe)r*K;y@tWef;QVVki&}{S+yKfiUzj zg#Eto_C1Rb1_EK|M-cjb;jK@<4q;y){ORZJCMND)-TZynR3LbpXnO*|+X3kd1aJAe zHxRtF$DaMYseWwadJ9KGxNRKz*DsBLMnEH=5zq)|1T+E~0gZr0KqH_L&!&_W!%hrwH5r8a_qji6Nh~{r@iWDay7#%%`Y4G31lB|KDvsMcDS&@F^ls z4Egjqwg0dB{oBhh){rDH@+upH-|_JIWNld4#QOH*3BJ)bqF+$9$d{!WxVTt@l)E0-Vt3TgwF{M^9`P$wpCWR$A1D|c#`nClBn_!0fdOR~yIHr5Cn!DMx$ zy>;eD9hEj-JrN@+DVO00QerX$ED4=D+f6Fb7BRFuDmAHd_ozf|! z!wi(ErxJnyST@!wtx%AXGl%P_bm_=DF`|-X!T-OF1to-5i3OFgh+P*LqCqP)sdKle zq-uk`6k7_`p8x-CmXpF-$uApEGS-6YsDvcMCy`*8S>68+I`||$RXjlTRxSb5Tfgok z1h%H{33N))8|ehDG~=+aNF78+!Jfa0zhW_`vQE7_BOSzeWEn=iuzD@}r>IJISg9b! zBbzPP21*4x{E9e6{Ya@{rx0fO>$K57a3Zso*Jo8>H&le z4IHw@hEg0+cbFqoU$wj4RESb!J4!XFboVGlY!#ab!@~CZshv=pzRWPkuLLmVg z|L7t^L+I(dD}+*UXalFdu^|+K{MkeW-=T5QQ3yr59if_3x?6-&wJ|J=3T>;sz>&93 zDDM(BVgfsu#?(>@Nr?9+R6Nq^P#S@d5`KK!r~GcucMTmAO5s=%SH~A%M1lh&yE>Hi zbri`l6{og#kJY0~aKIPcUeiiSIDF;Yd7%60v(7w#)PW3Z)3`M?C5)Izbw6Zl zGF@Sl-`RP=o#MkLOo1HAB|ggQ0gY^m$P+s@v79h#N9P?;PO4b!%sU)Nby_+3WvdMd z7_QXP2}zcL^<*5!2rXGo9;oA!7auG(eBx4_6Gq5(*p)GCKpv(%Krm7PCJMI delta 2971 zcmeH}&x>1C6vuBeGihe>JDG~2IN5X(Vdl;K`R={h*fJpKWTxXZ3vp4~PD7oNB8nD7 z&_u#a!C##|hAJX-r3ku+LC}>E-P=0-6YRzjVK#yY#&hq>kC)U<5k)~BkMKPwTt4r- z^SisWl5=27-TrNvOfh4loII1aaY%QA!hL*p)85 zi;^%0V@|jZP?jfql)YjW4mNEu)240`GnZ*Xq@vtAd^MN0)eJ15Sh{KN!XQSGFiZ z;WZ!gpJ>s|!H0BjEoyASctYyKk?XzGSA&bB;7aZ#_u32jgXC-Q|M#A0`u4)J9cybBvIn2L@Rb~ zI_JA(tC0&I{of*e$Nq0xR!Me zsV-p|m^oHEl4B-B-_F+qti8OzT2eJ?lP0ActieG!AJ}BG93Ep;``*J_R}89v$tVeS z8R3E16O4|TIh7@DCuGK-kXAcbQO3MOuV7|Ru&}+fb}`JiF<5hw12aTZHT3jmIW!7u zzQBHAxxz%l(x5mE&<3N1Ha?t`lzHFPPWDk*i4aFnt%SF9X=T|rN@}Anlt40fj1W@P z!GuCN#h{$Vslu@hl=wKd(P}&vyRTV^_K=^qD~Rt$UVdvk&6t8NATTXChskN1AqmSw zAnG}_YgxKPNpDwTB~1K=c;YBsq@+TGA8`a`u*tv~nPXn};v*+bHb2Z#O$5>Y6F`dg zQ_v6`b^{h@h{};M;BQ{|Y~28-3>s`Z6iZloNN;Hx3!0_roy;gQE(z~eZDmLd0pbu1 z4~}6;@QIfO#5POKFsHq)7!cbO^dqbR?O&eDq%+2&jh!2RH%>m&Y8-~z)35)Qh=dX? eaOL)i{6`5e + - - - - - + + + + + + diff --git a/vueJs/src/api/oss-manager.ts b/vueJs/src/api/oss-manager.ts index 2a02a7af2..90db47452 100644 --- a/vueJs/src/api/oss-manager.ts +++ b/vueJs/src/api/oss-manager.ts @@ -3,8 +3,8 @@ import { PagedAndSortedResultRequestDto } from './types' import { urlStringify } from '@/utils/index' const serviceUrl = process.env.VUE_APP_BASE_API -const containerUrl = '/api/file-management/containes' -const objectUrl = '/api/file-management/objects' +const containerUrl = '/api/oss-management/containes' +const objectUrl = '/api/oss-management/objects' export const objectUploadUrl = serviceUrl + objectUrl + '/upload' export const staticUrl = '/api/files/static/' From e975704b9e73c1ed11bce158cf511c2adab35dbb Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Thu, 11 Mar 2021 15:44:01 +0800 Subject: [PATCH 5/8] update README.MD --- .../cloud-aliyun/LINGYUN.Abp.Aliyun/README.md | 45 ++++++++++--- .../README.md | 4 +- .../README.md | 4 +- .../Abp/OssManagement/FileValidater.cs | 2 +- .../LINGYUN.ApiGateway.Host/event-bus-cap.db | Bin 40960 -> 40960 bytes .../admin/components/FeatureManagement.vue | 60 ++++++++++++------ vueJs/src/views/oss-management/index.vue | 2 +- 7 files changed, 80 insertions(+), 37 deletions(-) diff --git a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md index a4c2dadb9..9bd5a6546 100644 --- a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md +++ b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/README.md @@ -2,23 +2,48 @@ File-Management更名为Oss-Management - ## 模块说明 ### 基础模块 -* LINGYUN.Abp.OssManagement.Domain.Shared 领域层公共模块,定义了错误代码、本地化、模块设置 -* LINGYUN.Abp.OssManagement.Domain 领域层模块,定义了抽象的Oss容器与对象管理接口 -* LINGYUN.Abp.OssManagement.Application.Contracts 应用服务层公共模块,定义了管理Oss的外部接口、权限、功能限制策略 -* LINGYUN.Abp.OssManagement.Application 应用服务层实现,实现了Oss管理接口 -* LINGYUN.Abp.OssManagement.HttpApi RestApi实现,实现了独立的对外RestApi接口 -* LINGYUN.Abp.OssManagement.SettingManagement 设置管理模块,对外暴露自身的设置管理,用于网关聚合 +* [LINGYUN.Abp.OssManagement.Domain.Shared](./LINGYUN.Abp.OssManagement.Domain.Shared) 领域层公共模块,定义了错误代码、本地化、模块设置 +* [LINGYUN.Abp.OssManagement.Domain](./LINGYUN.Abp.OssManagement.Domain) 领域层模块,定义了抽象的Oss容器与对象管理接口 +* [LINGYUN.Abp.OssManagement.Application.Contracts](./LINGYUN.Abp.OssManagement.Application.Contracts) 应用服务层公共模块,定义了管理Oss的外部接口、权限、功能限制策略 +* [LINGYUN.Abp.OssManagement.Application](./LINGYUN.Abp.OssManagement.Application) 应用服务层实现,实现了Oss管理接口 +* [LINGYUN.Abp.OssManagement.HttpApi](./LINGYUN.Abp.OssManagement.HttpApi) RestApi实现,实现了独立的对外RestApi接口 +* [LINGYUN.Abp.OssManagement.SettingManagement](./LINGYUN.Abp.OssManagement.SettingManagement) 设置管理模块,对外暴露自身的设置管理,用于网关聚合 ### 高阶模块 -* LINGYUN.Abp.OssManagement.Aliyun Oss管理的阿里云实现,实现了部分阿里云Oss服务的容器与对象管理 -* LINGYUN.Abp.OssManagement.FileSystem Oss管理的本地文件系统实现,实现了部分本地文件系统的容器(目录)与对象(文件/目录)管理 -* LINGYUN.Abp.OssManagement.FileSystem.ImageSharp Oss本地对象的ImageSharp扩展,当前端传递需求处理对象时,此模块用于实现基于图形文件流的处理 +* [LINGYUN.Abp.OssManagement.Aliyun](./LINGYUN.Abp.OssManagement.Aliyun) Oss管理的阿里云实现,实现了部分阿里云Oss服务的容器与对象管理 +* [LINGYUN.Abp.OssManagement.FileSystem](./LINGYUN.Abp.OssManagement.FileSystem) Oss管理的本地文件系统实现,实现了部分本地文件系统的容器(目录)与对象(文件/目录)管理 +* [LINGYUN.Abp.OssManagement.FileSystem.ImageSharp](./LINGYUN.Abp.OssManagement.FileSystem.ImageSharp) Oss本地对象的ImageSharp扩展,当前端传递需求处理对象时,此模块用于实现基于图形文件流的处理 + +### 权限定义 + +* AbpOssManagement.Container 授权对象是否允许访问容器(bucket) +* AbpOssManagement.Container.Create 授权对象是否允许创建容器(bucket) +* AbpOssManagement.Container.Delete 授权对象是否允许删除容器(bucket) +* AbpOssManagement.OssObject 授权对象是否允许访问Oss对象 +* AbpOssManagement.OssObject.Create 授权对象是否允许创建Oss对象 +* AbpOssManagement.OssObject.Delete 授权对象是否允许删除Oss对象 +* AbpOssManagement.OssObject.Download 授权对象是否允许下载Oss对象 + +### 功能定义 + +* AbpOssManagement.OssObject.DownloadFile 用户可以下载文件 +* AbpOssManagement.OssObject.DownloadLimit 用户在周期内允许下载文件的最大次数,范围0-1000000 +* AbpOssManagement.OssObject.DownloadInterval 用户限制下载文件次数的周期,时钟刻度:月,默认: 1,范围1-12 +* AbpOssManagement.OssObject.UploadFile 用户可以上传文件 +* AbpOssManagement.OssObject.UploadLimit 用户在周期内允许上传文件的最大次数,范围0-1000000 +* AbpOssManagement.OssObject.UploadInterval 用户限制上传文件次数的周期,时钟刻度:月,默认: 1,范围1-12 +* AbpOssManagement.OssObject.MaxUploadFileCount 单次上传文件的数量,未实现 + +### 配置定义 + +* Abp.OssManagement.DownloadPackageSize 下载分包大小,分块下载时单次传输的数据大小,未实现 +* Abp.OssManagement.FileLimitLength 上传文件限制大小,默认:100 +* Abp.OssManagement.AllowFileExtensions 允许的上传文件扩展名,多个扩展名以逗号分隔,默认:dll,zip,rar,txt,log,xml,config,json,jpeg,jpg,png,bmp,ico,xlsx,xltx,xls,xlt,docs,dots,doc,dot,pptx,potx,ppt,pot,chm ## 更新日志 diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md index 70ccb62d9..56a51290a 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md @@ -1,4 +1,4 @@ -# LINGYUN.Abp.FileManagement.Aliyun +# LINGYUN.Abp.OssManagement.Aliyun 阿里云oss容器接口 @@ -7,7 +7,7 @@ 模块按需引用 ```csharp -[DependsOn(typeof(AbpFileManagementAliyunModule))] +[DependsOn(typeof(AbpOssManagementAliyunModule))] public class YouProjectModule : AbpModule { // other diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md index 0d2276e8c..ae3c3c1bb 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md @@ -1,4 +1,4 @@ -# LINGYUN.Abp.FileManagement.FileSystem +# LINGYUN.Abp.OssManagement.FileSystem 本地文件系统oss容器接口 @@ -7,7 +7,7 @@ 模块按需引用 ```csharp -[DependsOn(typeof(AbpFileManagementFileSystemModule))] +[DependsOn(typeof(AbpOssManagementFileSystemModule))] public class YouProjectModule : AbpModule { // other diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs index 308462e17..4e3cccc16 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs @@ -77,7 +77,7 @@ namespace LINGYUN.Abp.OssManagement public class FileValidation { - public const string CacheKey = "Abp.FileManagement.FileValidation"; + public const string CacheKey = "Abp.OssManagement.FileValidation"; public int SizeLimit { get; set; } public string[] AllowedExtensions { get; set; } public FileValidation() diff --git a/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db b/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db index 189b6e2e2077e9c6a6faa8d3a96c4d4321e68ac1..3c60954cc5bcda97149d12ef106c03fc954ed1bc 100644 GIT binary patch delta 280 zcmZoTz|?SnX@WFk^F$eE#^#L)v*Zo<7#JAXIJx*YGw|?>Gw?6tpUL0DU(a8}pUNM> z@6B(=Z^*C0FOGnlwG=w}U4fc>g&F6YUVhrZzy{Q&Uq?Q+Pp+WD)_XOXTEY+rpBA-CGZrWagB2;m3_HY9 V%%r@rk)LU^@+4c%%?a5HSO5^BKrH|O diff --git a/vueJs/src/views/admin/components/FeatureManagement.vue b/vueJs/src/views/admin/components/FeatureManagement.vue index 49aa2c292..a61b9d7b7 100644 --- a/vueJs/src/views/admin/components/FeatureManagement.vue +++ b/vueJs/src/views/admin/components/FeatureManagement.vue @@ -46,7 +46,6 @@ @@ -106,6 +105,11 @@ import { ElForm } from 'element-ui/types/form' } return false } + }, + getNumericValue() { + return (value: any) => { + return Number(value) + } } }, filters: { @@ -116,17 +120,22 @@ import { ElForm } from 'element-ui/types/form' */ inputRuleFilter(validator: any, localizer: any) { const featureRules: {[key: string]: any}[] = new Array<{[key: string]: any}>() - if (validator.name === 'NUMERIC') { + if (validator.name === 'NUMERIC' && validator.properties) { const ruleRang: {[key: string]: any} = {} - ruleRang.pattern = RegExp('^(' + validator.minValue + '|[1-9]d?|' + validator.maxValue + ')$') - // ruleRang.pattern = /^(1|[1-9]\d?|10)$/ - // ruleRang.min = validator.minValue - // ruleRang.max = validator.maxValue + // TODO: 需要动态验证数值范围 + // 暂时不提交 + // 可行性一、对返回数据使用计算属性,在获取数据之后就组装好验证类,传递给对应的form-item的rules + // 可行性二、TODO... + ruleRang.pattern = RegExp('^[^' + validator.properties.MinValue + ']\\d{0,4}$|^' + validator.properties.MaxValue + '$') + // ruleRang.pattern = ^\d{0,11}$ + // ruleRang.type = 'number' + // ruleRang.min = validator.properties.MinValue + // ruleRang.max = validator.properties.MaxValue ruleRang.trigger = 'blur' - ruleRang.message = localizer('AbpFeatureManagement.ThisFieldMustBeBetween{0}And{1}', { 0: validator.minValue, 1: validator.maxValue }) + ruleRang.message = localizer('AbpFeatureManagement.ThisFieldMustBeBetween{0}And{1}', { 0: validator.properties.MinValue, 1: validator.properties.MaxValue }) featureRules.push(ruleRang) - } else if (validator.name === 'STRING') { - if (validator.allowNull && validator.allowNull.toLowerCase() === 'true') { + } else if (validator.name === 'STRING' && validator.properties) { + if (validator.properties.AllowNull && validator.properties.AllowNull.toLowerCase() === 'true') { const ruleRequired: {[key: string]: any} = {} ruleRequired.required = true ruleRequired.trigger = 'blur' @@ -134,10 +143,10 @@ import { ElForm } from 'element-ui/types/form' featureRules.push(ruleRequired) } const ruleString: {[key: string]: any} = {} - ruleString.min = validator.minLength - ruleString.max = validator.maxLength + ruleString.min = validator.properties.MinLength + ruleString.max = validator.properties.MaxLength ruleString.trigger = 'blur' - ruleString.message = localizer('AbpFeatureManagement.ThisFieldMustBeBetween{0}And{1}', { 0: validator.minValue, 1: validator.maxValue }) + ruleString.message = localizer('AbpFeatureManagement.ThisFieldMustBeBetween{0}And{1}', { 0: validator.properties.MinValue, 1: validator.properties.MaxValue }) featureRules.push(ruleString) } return featureRules @@ -149,6 +158,15 @@ import { ElForm } from 'element-ui/types/form' */ localizer(name: string, values?: any[]) { return this.$t(name, values) + }, + validatorNumberRange(rule: any, value: any, callback: any) { + if (value) { + const num = Number(value) + if (num < rule.min || + num > rule.max) { + callback(new Error(this.$t('AbpFeatureManagement.ThisFieldMustBeBetween{0}And{1}', { 0: rule.min, 1: rule.max }).toString())) + } + } } } }) @@ -176,8 +194,6 @@ export default class extends Vue { /** * 用于拼接动态表单的功能数据,需要把abp返回的数据做一次调整 */ - // private features = new FeatureItems() - private featureGroups = new FeatureGroups() mounted() { @@ -206,12 +222,14 @@ export default class extends Vue { */ private handleGetFeatures() { if (this.loadFeature) { - FeatureManagementService.getFeatures(this.providerName, this.providerKey).then(res => { - this.featureGroups = res - if (this.featureGroups.groups.length > 0) { - this.selectTab = this.featureGroups.groups[0].name - } - }) + FeatureManagementService + .getFeatures(this.providerName, this.providerKey) + .then(res => { + this.featureGroups = res + if (this.featureGroups.groups.length > 0) { + this.selectTab = this.featureGroups.groups[0].name + } + }) } } diff --git a/vueJs/src/views/oss-management/index.vue b/vueJs/src/views/oss-management/index.vue index 1edb0b9d4..65d7b145b 100644 --- a/vueJs/src/views/oss-management/index.vue +++ b/vueJs/src/views/oss-management/index.vue @@ -125,7 +125,7 @@ >