From 9c933a05db4268dcd47ffe859d4955d3104c4713 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Sat, 11 Dec 2021 09:23:22 +0800 Subject: [PATCH] enhanced Settings Management --- .../AliyunSettingAppService.cs | 59 +++-- .../AliyunSettingController.cs | 4 +- .../IAliyunSettingAppService.cs | 7 +- .../Aliyun/Settings/AliyunSettingProvider.cs | 48 +++- .../Settings/AliyunSmsSettingProvider.cs | 40 ++- ...MessageServiceSettingDefinitionProvider.cs | 5 +- ...pOssManagementSettingDefinitionProvider.cs | 2 + .../IOssManagementSettingAppService.cs | 7 +- .../OssManagementSettingAppService.cs | 15 +- .../OssManagementSettingController.cs | 5 +- .../PlatformSettingDefinitionProvider.cs | 2 + .../Dto/SettingDetailsDto.cs | 2 + .../Abp/SettingManagement/Dto/SettingDto.cs | 26 +- .../Dto/SettingGroupResult.cs | 23 ++ .../IReadonlySettingAppService.cs | 12 + .../SettingManagement/ISettingAppService.cs | 8 +- .../IUserSettingAppService.cs | 12 + ...N.Abp.SettingManagement.Application.csproj | 1 + .../SettingManagement/SettingAppService.cs | 129 +++++---- .../UserSettingAppService.cs | 247 ++++++++++++++++++ .../SettingManagement/SettingController.cs | 5 +- .../UserSettingController.cs | 35 +++ ...hatMiniProgramSettingDefinitionProvider.cs | 22 +- ...WeChatOfficialSettingDefinitionProvider.cs | 28 +- .../IWeChatSettingAppService.cs | 7 +- .../WeChatSettingAppService.cs | 45 ++-- .../WeChatSettingController.cs | 5 +- .../WeChatSettingDefinitionProvider.cs | 4 + .../AccountSettingDefinitionProvider.cs | 14 +- 29 files changed, 656 insertions(+), 163 deletions(-) create mode 100644 aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingGroupResult.cs create mode 100644 aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IReadonlySettingAppService.cs create mode 100644 aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IUserSettingAppService.cs create mode 100644 aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/UserSettingAppService.cs create mode 100644 aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/UserSettingController.cs diff --git a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingAppService.cs b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingAppService.cs index 585d659f0..945b68a9f 100644 --- a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingAppService.cs +++ b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingAppService.cs @@ -2,9 +2,7 @@ using LINGYUN.Abp.Aliyun.Settings; using LINGYUN.Abp.SettingManagement; using LINGYUN.Abp.Sms.Aliyun.Settings; -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; @@ -31,19 +29,19 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement LocalizationResource = typeof(AliyunResource); } - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await GetAllForProviderAsync(TenantSettingValueProvider.ProviderName, CurrentTenant.GetId().ToString()); } - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await GetAllForProviderAsync(GlobalSettingValueProvider.ProviderName, null); } - protected virtual async Task> GetAllForProviderAsync(string providerName, string providerKey) + protected virtual async Task GetAllForProviderAsync(string providerName, string providerKey) { - var settingGroups = new List(); + var settingGroups = new SettingGroupResult(); // 无权限返回空结果,直接报错的话,网关聚合会抛出异常 if (await PermissionChecker.IsGrantedAsync(AliyunSettingPermissionNames.Settings)) @@ -57,42 +55,50 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement SettingDefinitionManager.Get(AliyunSettingNames.Authorization.RegionId), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.RegionId, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); ramSetting.AddDetail( SettingDefinitionManager.Get(AliyunSettingNames.Authorization.AccessKeyId), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.AccessKeyId, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); ramSetting.AddDetail( SettingDefinitionManager.Get(AliyunSettingNames.Authorization.AccessKeySecret), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.AccessKeySecret, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); ramSetting.AddDetail( SettingDefinitionManager.Get(AliyunSettingNames.Authorization.RamRoleArn), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.RamRoleArn, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); ramSetting.AddDetail( SettingDefinitionManager.Get(AliyunSettingNames.Authorization.RoleSessionName), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.RoleSessionName, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); ramSetting.AddDetail( SettingDefinitionManager.Get(AliyunSettingNames.Authorization.Policy), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.Policy, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); ramSetting.AddDetail( SettingDefinitionManager.Get(AliyunSettingNames.Authorization.UseSecurityTokenService), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.UseSecurityTokenService, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); ramSetting.AddDetail( SettingDefinitionManager.Get(AliyunSettingNames.Authorization.DurationSeconds), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSettingNames.Authorization.DurationSeconds, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); #endregion @@ -103,44 +109,51 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement SettingDefinitionManager.Get(AliyunSmsSettingNames.Sms.Domain), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSmsSettingNames.Sms.Domain, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smsSetting.AddDetail( SettingDefinitionManager.Get(AliyunSmsSettingNames.Sms.Version), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSmsSettingNames.Sms.Version, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smsSetting.AddDetail( SettingDefinitionManager.Get(AliyunSmsSettingNames.Sms.ActionName), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSmsSettingNames.Sms.ActionName, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smsSetting.AddDetail( SettingDefinitionManager.Get(AliyunSmsSettingNames.Sms.DefaultPhoneNumber), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSmsSettingNames.Sms.DefaultPhoneNumber, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smsSetting.AddDetail( SettingDefinitionManager.Get(AliyunSmsSettingNames.Sms.DefaultSignName), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSmsSettingNames.Sms.DefaultSignName, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smsSetting.AddDetail( SettingDefinitionManager.Get(AliyunSmsSettingNames.Sms.DefaultTemplateCode), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSmsSettingNames.Sms.DefaultTemplateCode, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smsSetting.AddDetail( SettingDefinitionManager.Get(AliyunSmsSettingNames.Sms.VisableErrorToClient), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AliyunSmsSettingNames.Sms.VisableErrorToClient, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); #endregion - settingGroups.Add(aliyunSettingGroup); + settingGroups.AddGroup(aliyunSettingGroup); } - return new ListResultDto(settingGroups); + return settingGroups; } } } diff --git a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingController.cs b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingController.cs index a811fbdc3..59d5cd24c 100644 --- a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingController.cs +++ b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingController.cs @@ -22,14 +22,14 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement [HttpGet] [Route("by-current-tenant")] - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await AppService.GetAllForCurrentTenantAsync(); } [HttpGet] [Route("by-global")] - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await AppService.GetAllForGlobalAsync(); } diff --git a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/IAliyunSettingAppService.cs b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/IAliyunSettingAppService.cs index d312249be..1a2756a42 100644 --- a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/IAliyunSettingAppService.cs +++ b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/IAliyunSettingAppService.cs @@ -1,13 +1,8 @@ using LINGYUN.Abp.SettingManagement; -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; namespace LINGYUN.Abp.Aliyun.SettingManagement { - public interface IAliyunSettingAppService + public interface IAliyunSettingAppService : IReadonlySettingAppService { - Task> GetAllForGlobalAsync(); - - Task> GetAllForCurrentTenantAsync(); } } diff --git a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingProvider.cs b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingProvider.cs index d4f06b6d4..5ae07c6df 100644 --- a/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingProvider.cs +++ b/aspnet-core/modules/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingProvider.cs @@ -21,55 +21,87 @@ namespace LINGYUN.Abp.Aliyun.Settings description: L("Description:AccessKeyId"), isVisibleToClients: false, isEncrypted: true - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSettingNames.Authorization.AccessKeySecret, displayName: L("DisplayName:AccessKeySecret"), description: L("Description:AccessKeySecret"), isVisibleToClients: false, isEncrypted: true - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSettingNames.Authorization.DurationSeconds, defaultValue: "3600", displayName: L("DisplayName:DurationSeconds"), description: L("Description:DurationSeconds"), isVisibleToClients: false - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSettingNames.Authorization.Policy, displayName: L("DisplayName:Policy"), description: L("Description:Policy"), isVisibleToClients: false, isEncrypted: true - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSettingNames.Authorization.RamRoleArn, displayName: L("DisplayName:RamRoleArn"), description: L("Description:RamRoleArn"), isVisibleToClients: false, isEncrypted: true - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSettingNames.Authorization.RegionId, displayName: L("DisplayName:RegionId"), description: L("Description:RegionId"), isVisibleToClients: false - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSettingNames.Authorization.RoleSessionName, displayName: L("DisplayName:RoleSessionName"), description: L("Description:RoleSessionName"), isVisibleToClients: false, isEncrypted: true - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSettingNames.Authorization.UseSecurityTokenService, defaultValue: true.ToString(), displayName: L("DisplayName:UseSecurityTokenService"), description: L("Description:UseSecurityTokenService"), isVisibleToClients: false - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), }; } diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/Settings/AliyunSmsSettingProvider.cs b/aspnet-core/modules/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/Settings/AliyunSmsSettingProvider.cs index f7aff8d6e..c248abd80 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/Settings/AliyunSmsSettingProvider.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN/Abp/Sms/Aliyun/Settings/AliyunSmsSettingProvider.cs @@ -21,41 +21,65 @@ namespace LINGYUN.Abp.Sms.Aliyun.Settings displayName: L("DisplayName:ActionName"), description: L("Description:ActionName"), isVisibleToClients: false - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSmsSettingNames.Sms.DefaultSignName, displayName: L("DisplayName:DefaultSignName"), description: L("Description:DefaultSignName"), isVisibleToClients: false, isEncrypted: true - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSmsSettingNames.Sms.DefaultTemplateCode, displayName: L("DisplayName:DefaultTemplateCode"), description: L("Description:DefaultTemplateCode"), isVisibleToClients: false, isEncrypted: true - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSmsSettingNames.Sms.DefaultPhoneNumber, displayName: L("DisplayName:DefaultPhoneNumber"), description: L("Description:DefaultPhoneNumber"), isVisibleToClients: false - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSmsSettingNames.Sms.Domain, defaultValue: "dysmsapi.aliyuncs.com", displayName: L("DisplayName:Domain"), description: L("Description:Domain"), isVisibleToClients: false - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSmsSettingNames.Sms.Version, defaultValue: "2017-05-25", displayName: L("DisplayName:Version"), description: L("Description:Version"), isVisibleToClients: false - ), + ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( AliyunSmsSettingNames.Sms.VisableErrorToClient, defaultValue: false.ToString(), @@ -63,6 +87,10 @@ namespace LINGYUN.Abp.Sms.Aliyun.Settings description: L("Description:VisableErrorToClient"), isVisibleToClients: false ) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) }; } diff --git a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain.Shared/LINGYUN/Abp/MessageService/Settings/MessageServiceSettingDefinitionProvider.cs b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain.Shared/LINGYUN/Abp/MessageService/Settings/MessageServiceSettingDefinitionProvider.cs index 208c993db..232088bf3 100644 --- a/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain.Shared/LINGYUN/Abp/MessageService/Settings/MessageServiceSettingDefinitionProvider.cs +++ b/aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain.Shared/LINGYUN/Abp/MessageService/Settings/MessageServiceSettingDefinitionProvider.cs @@ -17,8 +17,9 @@ namespace LINGYUN.Abp.MessageService.Settings isVisibleToClients: false, isEncrypted: false) .WithProviders( - GlobalSettingValueProvider.ProviderName, - TenantSettingValueProvider.ProviderName) + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) ); } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs index 364f0806f..fcec77225 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs @@ -22,6 +22,7 @@ namespace LINGYUN.Abp.OssManagement.Settings description: L("Description:FileLimitLength"), isVisibleToClients: true) .WithProviders( + DefaultValueSettingValueProvider.ProviderName, GlobalSettingValueProvider.ProviderName, TenantSettingValueProvider.ProviderName), new SettingDefinition( @@ -31,6 +32,7 @@ namespace LINGYUN.Abp.OssManagement.Settings description: L("Description:AllowFileExtensions"), isVisibleToClients: true) .WithProviders( + DefaultValueSettingValueProvider.ProviderName, GlobalSettingValueProvider.ProviderName, TenantSettingValueProvider.ProviderName), }; 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 index d58768920..b22edcb04 100644 --- 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 @@ -1,13 +1,8 @@ using LINGYUN.Abp.SettingManagement; -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; namespace LINGYUN.Abp.OssManagement.SettingManagement { - public interface IOssManagementSettingAppService + public interface IOssManagementSettingAppService : IReadonlySettingAppService { - 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 index d9f594a06..53e2decb8 100644 --- 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 @@ -2,9 +2,7 @@ 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; @@ -31,24 +29,23 @@ namespace LINGYUN.Abp.OssManagement.SettingManagement LocalizationResource = typeof(AbpOssManagementResource); } - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await GetAllForProviderAsync(TenantSettingValueProvider.ProviderName, CurrentTenant.GetId().ToString()); } - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await GetAllForProviderAsync(GlobalSettingValueProvider.ProviderName, null); } - protected virtual async Task> GetAllForProviderAsync(string providerName, string providerKey) + protected virtual async Task GetAllForProviderAsync(string providerName, string providerKey) { - var settingGroups = new List(); + var settingGroups = new SettingGroupResult(); // 无权限返回空结果,直接报错的话,网关聚合会抛出异常 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"]); @@ -64,10 +61,10 @@ namespace LINGYUN.Abp.OssManagement.SettingManagement await SettingManager.GetOrNullAsync(AbpOssManagementSettingNames.AllowFileExtensions, providerName, providerKey), ValueType.String); - settingGroups.Add(ossSettingGroup); + settingGroups.AddGroup(ossSettingGroup); } - return new ListResultDto(settingGroups); + return 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 index 3668216db..93d151b9b 100644 --- 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 @@ -2,7 +2,6 @@ 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 @@ -22,14 +21,14 @@ namespace LINGYUN.Abp.OssManagement.SettingManagement [HttpGet] [Route("by-current-tenant")] - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await WeChatSettingAppService.GetAllForCurrentTenantAsync(); } [HttpGet] [Route("by-global")] - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await WeChatSettingAppService.GetAllForGlobalAsync(); } diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Settings/PlatformSettingDefinitionProvider.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Settings/PlatformSettingDefinitionProvider.cs index 09fc0b180..08410d3c8 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Settings/PlatformSettingDefinitionProvider.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Settings/PlatformSettingDefinitionProvider.cs @@ -23,6 +23,7 @@ namespace LINGYUN.Platform.Settings description: L("Description:VersionFileLimitLength"), isVisibleToClients: true) .WithProviders( + DefaultValueSettingValueProvider.ProviderName, GlobalSettingValueProvider.ProviderName, TenantSettingValueProvider.ProviderName), new SettingDefinition( @@ -32,6 +33,7 @@ namespace LINGYUN.Platform.Settings description: L("Description:AllowVersionFileExtensions"), isVisibleToClients: true) .WithProviders( + DefaultValueSettingValueProvider.ProviderName, GlobalSettingValueProvider.ProviderName, TenantSettingValueProvider.ProviderName), }; diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDetailsDto.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDetailsDto.cs index 56c47a192..720c0b095 100644 --- a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDetailsDto.cs +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDetailsDto.cs @@ -26,6 +26,8 @@ namespace LINGYUN.Abp.SettingManagement /// public List Options { get; set; } = new List(); + public List Providers { get; set; } = new List(); + public SettingDetailsDto WithSlot(string slot) { Slot = slot; diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDto.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDto.cs index c88ba4fe9..f83330f4d 100644 --- a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDto.cs +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingDto.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Localization; +using System; using System.Collections.Generic; +using System.Linq; using Volo.Abp.Settings; namespace LINGYUN.Abp.SettingManagement @@ -12,6 +14,8 @@ namespace LINGYUN.Abp.SettingManagement public List Details { get; set; } = new List(); + + public SettingDto() { @@ -21,10 +25,22 @@ namespace LINGYUN.Abp.SettingManagement { DisplayName = displayName; Description = description; - } - - public SettingDetailsDto AddDetail(SettingDefinition setting, IStringLocalizerFactory factory, string value, ValueType type) + } + +#nullable enable + public SettingDetailsDto? AddDetail( + SettingDefinition setting, + IStringLocalizerFactory factory, + string value, + ValueType type, + string keepProvider = "") { + if (setting.Providers.Any() && + !keepProvider.IsNullOrWhiteSpace() && + !setting.Providers.Any(p => p.Equals(keepProvider))) + { + return null; + } var detail = new SettingDetailsDto() { DefaultValue = setting.DefaultValue, @@ -35,9 +51,11 @@ namespace LINGYUN.Abp.SettingManagement Value = value, ValueType = type }; + detail.Providers.AddRange(setting.Providers); Details.Add(detail); return detail; } - } + } +#nullable disable } diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingGroupResult.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingGroupResult.cs new file mode 100644 index 000000000..e003c6e2c --- /dev/null +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/Dto/SettingGroupResult.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using System.Linq; + +namespace LINGYUN.Abp.SettingManagement +{ + public class SettingGroupResult + { + public IList Items { get; } + + public SettingGroupResult() + { + Items = new List(); + } + + public void AddGroup(SettingGroupDto group) + { + if (group.Settings.Any(g => g.Details.Any())) + { + Items.Add(group); + } + } + } +} diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IReadonlySettingAppService.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IReadonlySettingAppService.cs new file mode 100644 index 000000000..65f704707 --- /dev/null +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IReadonlySettingAppService.cs @@ -0,0 +1,12 @@ +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.SettingManagement +{ + public interface IReadonlySettingAppService : IApplicationService + { + Task GetAllForGlobalAsync(); + + Task GetAllForCurrentTenantAsync(); + } +} diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/ISettingAppService.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/ISettingAppService.cs index 1a49ad46a..cccab79aa 100644 --- a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/ISettingAppService.cs +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/ISettingAppService.cs @@ -1,17 +1,11 @@ using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; namespace LINGYUN.Abp.SettingManagement { - public interface ISettingAppService : IApplicationService + public interface ISettingAppService : IReadonlySettingAppService { Task SetGlobalAsync(UpdateSettingsDto input); Task SetCurrentTenantAsync(UpdateSettingsDto input); - - Task> GetAllForGlobalAsync(); - - Task> GetAllForCurrentTenantAsync(); } } diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IUserSettingAppService.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IUserSettingAppService.cs new file mode 100644 index 000000000..f4f0a7664 --- /dev/null +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN/Abp/SettingManagement/IUserSettingAppService.cs @@ -0,0 +1,12 @@ +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.SettingManagement +{ + public interface IUserSettingAppService : IApplicationService + { + Task SetCurrentUserAsync(UpdateSettingsDto input); + + Task GetAllForCurrentUserAsync(); + } +} 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 59a18c7ca..b490c767d 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 @@ -5,6 +5,7 @@ netstandard2.0 + 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 518df2bba..9263ae8b5 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,13 +1,14 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Options; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Volo.Abp.Account.Settings; -using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.Caching; using Volo.Abp.Emailing; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Features; using Volo.Abp.Identity.Settings; using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; @@ -16,9 +17,6 @@ using Volo.Abp.SettingManagement.Localization; using Volo.Abp.Settings; using Volo.Abp.Timing; using Volo.Abp.Users; -using Volo.Abp.EventBus.Distributed; -using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; -using Volo.Abp.Features; namespace LINGYUN.Abp.SettingManagement { @@ -92,18 +90,18 @@ namespace LINGYUN.Abp.SettingManagement //[Authorize] [AllowAnonymous] - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await GetAllForProviderAsync(TenantSettingValueProvider.ProviderName, CurrentTenant.GetId().ToString()); } [AllowAnonymous] - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await GetAllForProviderAsync(GlobalSettingValueProvider.ProviderName, null); } - protected virtual async Task> GetAllForProviderAsync(string providerName, string providerKey) + protected virtual async Task GetAllForProviderAsync(string providerName, string providerKey) { /* * 2020-11-19 @@ -117,7 +115,9 @@ namespace LINGYUN.Abp.SettingManagement * 最初的设计才是不合理的,前端不能硬编码设置管理界面,这应该是后端的事情 */ - var settingGroups = new List(); + // 2021-12-11 重新约定返回格式, 当用户明确只需要对应提供者设置才返回,否则为空数组 + + var settingGroups = new SettingGroupResult(); #region 系统设置 @@ -128,16 +128,18 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(LocalizationSettingNames.DefaultLanguage), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage, providerName, providerKey), - ValueType.Option) - .AddOptions(LocalizationOptions.Languages.Select(l => new OptionDto(l.DisplayName, l.CultureName))); + ValueType.Option, + providerName) + ?.AddOptions(LocalizationOptions.Languages.Select(l => new OptionDto(l.DisplayName, l.CultureName))); // 时区 var timingSetting = sysSettingGroup.AddSetting(L["DisplayName:System.Timing"], L["Description:System.Timing"]); timingSetting.AddDetail( SettingDefinitionManager.Get(TimingSettingNames.TimeZone), StringLocalizerFactory, await SettingManager.GetOrNullAsync(TimingSettingNames.TimeZone, providerName, providerKey), - ValueType.String); - settingGroups.Add(sysSettingGroup); + ValueType.String, + providerName); + settingGroups.AddGroup(sysSettingGroup); #endregion @@ -152,14 +154,16 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(AccountSettingNames.EnableLocalLogin), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AccountSettingNames.EnableLocalLogin, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); accountSetting.AddDetail( SettingDefinitionManager.Get(AccountSettingNames.IsSelfRegistrationEnabled), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AccountSettingNames.IsSelfRegistrationEnabled, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); - settingGroups.Add(securitySettingGroup); + settingGroups.AddGroup(securitySettingGroup); #endregion @@ -175,17 +179,20 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(IdentitySettingNames.Lockout.AllowedForNewUsers), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Lockout.AllowedForNewUsers, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); lockoutSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Lockout.LockoutDuration), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Lockout.LockoutDuration, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); lockoutSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Lockout.MaxFailedAccessAttempts), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Lockout.MaxFailedAccessAttempts, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); #endregion @@ -196,37 +203,44 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(IdentitySettingNames.User.IsEmailUpdateEnabled), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsEmailUpdateEnabled, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); userSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.User.IsUserNameUpdateEnabled), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsNewUserRegister), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsNewUserRegister, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsResetPassword), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsResetPassword, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsUserSignin), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsUserSignin, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsPhoneNumberConfirmed), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsPhoneNumberConfirmed, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsRepetInterval), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsRepetInterval, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); #endregion @@ -237,17 +251,20 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(IdentitySettingNames.SignIn.EnablePhoneNumberConfirmation), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.EnablePhoneNumberConfirmation, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); signinSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.SignIn.RequireConfirmedEmail), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.RequireConfirmedEmail, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); signinSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); #endregion @@ -258,32 +275,38 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireDigit), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireDigit, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequiredLength), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequiredLength, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequiredUniqueChars), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequiredUniqueChars, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireLowercase), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireLowercase, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireUppercase), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireUppercase, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireNonAlphanumeric), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireNonAlphanumeric, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); #endregion @@ -314,9 +337,10 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(IdentitySettingNames.OrganizationUnit.MaxUserMembershipCount), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.OrganizationUnit.MaxUserMembershipCount, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); - settingGroups.Add(identitySetting); + settingGroups.AddGroup(identitySetting); #endregion @@ -330,55 +354,64 @@ namespace LINGYUN.Abp.SettingManagement SettingDefinitionManager.Get(EmailSettingNames.DefaultFromAddress), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.DefaultFromAddress, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); defaultMailSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.DefaultFromDisplayName), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.DefaultFromDisplayName, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); var smtpSetting = emailSettingGroup.AddSetting(L["DisplayName:Emailing.Smtp"], L["Description:Emailing.Smtp"]); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.EnableSsl), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.EnableSsl, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.UseDefaultCredentials), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.UseDefaultCredentials, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Domain), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Domain, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Host), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Host, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Port), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Port, providerName, providerKey), - ValueType.Number); + ValueType.Number, + providerName); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.UserName), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.UserName, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Password), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Password, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); - settingGroups.Add(emailSettingGroup); + settingGroups.AddGroup(emailSettingGroup); #endregion - return new ListResultDto(settingGroups); + return settingGroups; } protected virtual async Task CheckFeatureAsync() diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/UserSettingAppService.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/UserSettingAppService.cs new file mode 100644 index 000000000..7316e44d5 --- /dev/null +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/UserSettingAppService.cs @@ -0,0 +1,247 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Options; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; +using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; +using Volo.Abp.Caching; +using Volo.Abp.Emailing; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Features; +using Volo.Abp.Identity.Settings; +using Volo.Abp.Localization; +using Volo.Abp.SettingManagement; +using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.Settings; +using Volo.Abp.Timing; +using Volo.Abp.Users; + +namespace LINGYUN.Abp.SettingManagement +{ + [Authorize] + public class UserSettingAppService : ApplicationService, IUserSettingAppService + { + protected AbpLocalizationOptions LocalizationOptions { get; } + + protected IDistributedEventBus EventBus { get; } + protected ISettingManager SettingManager { get; } + protected ISettingDefinitionManager SettingDefinitionManager { get; } + + protected IDistributedCache Cache { get; } + public UserSettingAppService( + IDistributedEventBus eventBus, + ISettingManager settingManager, + IDistributedCache cache, + IOptions localizationOptions, + ISettingDefinitionManager settingDefinitionManager) + { + Cache = cache; + EventBus = eventBus; + SettingManager = settingManager; + SettingDefinitionManager = settingDefinitionManager; + LocalizationOptions = localizationOptions.Value; + LocalizationResource = typeof(AbpSettingManagementResource); + } + + public virtual async Task SetCurrentUserAsync(UpdateSettingsDto input) + { + // 增加特性检查 + await CheckFeatureAsync(); + + foreach (var setting in input.Settings) + { + await SettingManager.SetForCurrentUserAsync(setting.Name, setting.Value); + } + + CurrentUnitOfWork.OnCompleted(async () => + { + // 发送刷新用户缓存事件 + await EventBus.PublishAsync(new CurrentApplicationConfigurationCacheResetEventData()); + }); + + await CurrentUnitOfWork.SaveChangesAsync(); + } + + public virtual async Task GetAllForCurrentUserAsync() + { + return await GetAllForProviderAsync(UserSettingValueProvider.ProviderName, CurrentUser.GetId().ToString()); + } + + protected virtual async Task GetAllForProviderAsync(string providerName, string providerKey) + { + var settingGroups = new SettingGroupResult(); + + #region 系统设置 + + var sysSettingGroup = new SettingGroupDto(L["DisplayName:System"], L["Description:System"]); + // 语言 + var languageSetting = sysSettingGroup.AddSetting(L["DisplayName:System.Language"], L["Description:System.Language"]); + languageSetting.AddDetail( + SettingDefinitionManager.Get(LocalizationSettingNames.DefaultLanguage), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage, providerName, providerKey), + ValueType.Option, + providerName) + ?.AddOptions(LocalizationOptions.Languages.Select(l => new OptionDto(l.DisplayName, l.CultureName))); + // 时区 + var timingSetting = sysSettingGroup.AddSetting(L["DisplayName:System.Timing"], L["Description:System.Timing"]); + timingSetting.AddDetail( + SettingDefinitionManager.Get(TimingSettingNames.TimeZone), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(TimingSettingNames.TimeZone, providerName, providerKey), + ValueType.String, + providerName); + settingGroups.AddGroup(sysSettingGroup); + + #endregion + + #region 身份标识设置 + + // 身份标识设置 + var identitySetting = new SettingGroupDto(L["DisplayName:Identity"], L["Description:Identity"]); + + + #region 登录 + + var signinSetting = identitySetting.AddSetting(L["DisplayName:Identity.SignIn"], L["Description:Identity.SignIn"]); + signinSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.SignIn.EnablePhoneNumberConfirmation), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.EnablePhoneNumberConfirmation, providerName, providerKey), + ValueType.Boolean, + providerName); + signinSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.SignIn.RequireConfirmedEmail), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.RequireConfirmedEmail, providerName, providerKey), + ValueType.Boolean, + providerName); + signinSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber, providerName, providerKey), + ValueType.Boolean, + providerName); + + #endregion + + #region 密码 + + var passwordSetting = identitySetting.AddSetting(L["DisplayName:Identity.Password"], L["Description:Identity.Password"]); + passwordSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireDigit), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireDigit, providerName, providerKey), + ValueType.Boolean, + providerName); + passwordSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.Password.RequiredLength), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequiredLength, providerName, providerKey), + ValueType.Number, + providerName); + passwordSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.Password.RequiredUniqueChars), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequiredUniqueChars, providerName, providerKey), + ValueType.Number, + providerName); + passwordSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireLowercase), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireLowercase, providerName, providerKey), + ValueType.Boolean, + providerName); + passwordSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireUppercase), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireUppercase, providerName, providerKey), + ValueType.Boolean, + providerName); + passwordSetting.AddDetail( + SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireNonAlphanumeric), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireNonAlphanumeric, providerName, providerKey), + ValueType.Boolean, + providerName); + + #endregion + + settingGroups.AddGroup(identitySetting); + + #endregion + + #region 邮件设置 + + var emailSettingGroup = new SettingGroupDto(L["DisplayName:Emailing"], L["Description:Emailing"]); + var defaultMailSetting = emailSettingGroup.AddSetting(L["DisplayName:Emailing.Default"], L["Description:Emailing.Default"]); + defaultMailSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.DefaultFromAddress), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.DefaultFromAddress, providerName, providerKey), + ValueType.String, + providerName); + defaultMailSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.DefaultFromDisplayName), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.DefaultFromDisplayName, providerName, providerKey), + ValueType.String, + providerName); + + var smtpSetting = emailSettingGroup.AddSetting(L["DisplayName:Emailing.Smtp"], L["Description:Emailing.Smtp"]); + smtpSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.Smtp.EnableSsl), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.EnableSsl, providerName, providerKey), + ValueType.Boolean, + providerName); + smtpSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.Smtp.UseDefaultCredentials), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.UseDefaultCredentials, providerName, providerKey), + ValueType.Boolean, + providerName); + smtpSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.Smtp.Domain), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Domain, providerName, providerKey), + ValueType.String, + providerName); + smtpSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.Smtp.Host), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Host, providerName, providerKey), + ValueType.String, + providerName); + smtpSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.Smtp.Port), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Port, providerName, providerKey), + ValueType.Number, + providerName); + smtpSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.Smtp.UserName), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.UserName, providerName, providerKey), + ValueType.String, + providerName); + smtpSetting.AddDetail( + SettingDefinitionManager.Get(EmailSettingNames.Smtp.Password), + StringLocalizerFactory, + await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Password, providerName, providerKey), + ValueType.String, + providerName); + + settingGroups.AddGroup(emailSettingGroup); + + #endregion + + return settingGroups; + } + + protected virtual async Task CheckFeatureAsync() + { + await FeatureChecker.CheckEnabledAsync(SettingManagementFeatures.Enable); + } + } +} diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/SettingController.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/SettingController.cs index 8a8d10e50..c720a8854 100644 --- a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/SettingController.cs +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/SettingController.cs @@ -1,7 +1,6 @@ using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using Volo.Abp; -using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; namespace LINGYUN.Abp.SettingManagement @@ -33,14 +32,14 @@ namespace LINGYUN.Abp.SettingManagement [HttpGet] [Route("by-global")] - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await _settingAppService.GetAllForGlobalAsync(); } [HttpGet] [Route("by-current-tenant")] - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await _settingAppService.GetAllForCurrentTenantAsync(); } diff --git a/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/UserSettingController.cs b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/UserSettingController.cs new file mode 100644 index 000000000..4db5e24fd --- /dev/null +++ b/aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/UserSettingController.cs @@ -0,0 +1,35 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.SettingManagement +{ + [RemoteService(Name = AbpSettingManagementRemoteServiceConsts.RemoteServiceName)] + [Area("settingManagement")] + [Route("api/setting-management/settings")] + public class UserSettingController : AbpController, IUserSettingAppService + { + private readonly IUserSettingAppService _service; + + public UserSettingController( + IUserSettingAppService service) + { + _service = service; + } + + [HttpGet] + [Route("by-current-user")] + public virtual async Task GetAllForCurrentUserAsync() + { + return await _service.GetAllForCurrentUserAsync(); + } + + [HttpPut] + [Route("change-current-user")] + public virtual async Task SetCurrentUserAsync(UpdateSettingsDto input) + { + await _service.SetCurrentUserAsync(input); + } + } +} diff --git a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN/Abp/WeChat/MiniProgram/Settings/WeChatMiniProgramSettingDefinitionProvider.cs b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN/Abp/WeChat/MiniProgram/Settings/WeChatMiniProgramSettingDefinitionProvider.cs index 1cb3b49a1..79c5e95aa 100644 --- a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN/Abp/WeChat/MiniProgram/Settings/WeChatMiniProgramSettingDefinitionProvider.cs +++ b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN/Abp/WeChat/MiniProgram/Settings/WeChatMiniProgramSettingDefinitionProvider.cs @@ -14,25 +14,41 @@ namespace LINGYUN.Abp.WeChat.MiniProgram.Settings L("DisplayName:WeChat.MiniProgram.AppId"), L("Description:WeChat.MiniProgram.AppId"), isVisibleToClients: false, - isEncrypted: true), + isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( WeChatMiniProgramSettingNames.AppSecret, "", L("DisplayName:WeChat.MiniProgram.AppSecret"), L("Description:WeChat.MiniProgram.AppSecret"), isVisibleToClients: false, - isEncrypted: true), + isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( WeChatMiniProgramSettingNames.Token, "", L("DisplayName:WeChat.MiniProgram.Token"), L("Description:WeChat.MiniProgram.Token"), isVisibleToClients: false, - isEncrypted: true), + isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( WeChatMiniProgramSettingNames.EncodingAESKey, "", L("DisplayName:WeChat.MiniProgram.EncodingAESKey"), L("Description:WeChat.MiniProgram.EncodingAESKey"), isVisibleToClients: false, isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) ); } diff --git a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Settings/WeChatOfficialSettingDefinitionProvider.cs b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Settings/WeChatOfficialSettingDefinitionProvider.cs index f65d2c2b7..3b6131f62 100644 --- a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Settings/WeChatOfficialSettingDefinitionProvider.cs +++ b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Settings/WeChatOfficialSettingDefinitionProvider.cs @@ -14,31 +14,51 @@ namespace LINGYUN.Abp.WeChat.Official.Settings L("DisplayName:WeChat.Official.AppId"), L("Description:WeChat.Official.AppId"), isVisibleToClients: false, - isEncrypted: true), + isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( WeChatOfficialSettingNames.AppSecret, "", L("DisplayName:WeChat.Official.AppSecret"), L("Description:WeChat.Official.AppSecret"), isVisibleToClients: false, - isEncrypted: true), + isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( WeChatOfficialSettingNames.Url, "", L("DisplayName:WeChat.Official.Url"), L("Description:WeChat.Official.Url"), isVisibleToClients: false, - isEncrypted: false), + isEncrypted: false) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( WeChatOfficialSettingNames.Token, "", L("DisplayName:WeChat.Official.Token"), L("Description:WeChat.Official.Token"), isVisibleToClients: false, - isEncrypted: true), + isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName), new SettingDefinition( WeChatOfficialSettingNames.EncodingAESKey, "", L("DisplayName:WeChat.Official.EncodingAESKey"), L("Description:WeChat.Official.EncodingAESKey"), isVisibleToClients: false, isEncrypted: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) ); } diff --git a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/IWeChatSettingAppService.cs b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/IWeChatSettingAppService.cs index 3d76a7f3e..5abc87f4c 100644 --- a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/IWeChatSettingAppService.cs +++ b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/IWeChatSettingAppService.cs @@ -1,13 +1,8 @@ using LINGYUN.Abp.SettingManagement; -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; namespace LINGYUN.Abp.WeChat.SettingManagement { - public interface IWeChatSettingAppService + public interface IWeChatSettingAppService : IReadonlySettingAppService { - Task> GetAllForGlobalAsync(); - - Task> GetAllForCurrentTenantAsync(); } } diff --git a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingAppService.cs b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingAppService.cs index 5b6b4263c..90a3a0474 100644 --- a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingAppService.cs +++ b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingAppService.cs @@ -3,9 +3,7 @@ using LINGYUN.Abp.WeChat.Localization; using LINGYUN.Abp.WeChat.MiniProgram.Settings; using LINGYUN.Abp.WeChat.Official.Settings; using LINGYUN.Abp.WeChat.Settings; -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; @@ -31,19 +29,19 @@ namespace LINGYUN.Abp.WeChat.SettingManagement LocalizationResource = typeof(WeChatResource); } - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await GetAllForProviderAsync(TenantSettingValueProvider.ProviderName, CurrentTenant.GetId().ToString()); } - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await GetAllForProviderAsync(GlobalSettingValueProvider.ProviderName, null); } - protected virtual async Task> GetAllForProviderAsync(string providerName, string providerKey) + protected virtual async Task GetAllForProviderAsync(string providerName, string providerKey) { - var settingGroups = new List(); + var settingGroups = new SettingGroupResult(); var wechatSettingGroup = new SettingGroupDto(L["DisplayName:WeChat"], L["Description:WeChat"]); var loginSetting = wechatSettingGroup.AddSetting(L["UserLogin"], L["UserLogin"]); @@ -51,7 +49,8 @@ namespace LINGYUN.Abp.WeChat.SettingManagement SettingDefinitionManager.Get(WeChatSettingNames.EnabledQuickLogin), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatSettingNames.EnabledQuickLogin, providerName, providerKey), - ValueType.Boolean); + ValueType.Boolean, + providerName); // 无权限返回空结果,直接报错的话,网关聚合会抛出异常 if (await PermissionChecker.IsGrantedAsync(WeChatSettingPermissionNames.Official)) @@ -63,27 +62,32 @@ namespace LINGYUN.Abp.WeChat.SettingManagement SettingDefinitionManager.Get(WeChatOfficialSettingNames.AppId), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatOfficialSettingNames.AppId, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); officialSetting.AddDetail( SettingDefinitionManager.Get(WeChatOfficialSettingNames.AppSecret), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatOfficialSettingNames.AppSecret, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); officialSetting.AddDetail( SettingDefinitionManager.Get(WeChatOfficialSettingNames.Url), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatOfficialSettingNames.Url, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); officialSetting.AddDetail( SettingDefinitionManager.Get(WeChatOfficialSettingNames.Token), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatOfficialSettingNames.Token, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); officialSetting.AddDetail( SettingDefinitionManager.Get(WeChatOfficialSettingNames.EncodingAESKey), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatOfficialSettingNames.EncodingAESKey, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); #endregion } @@ -97,28 +101,33 @@ namespace LINGYUN.Abp.WeChat.SettingManagement SettingDefinitionManager.Get(WeChatMiniProgramSettingNames.AppId), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatMiniProgramSettingNames.AppId, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); miniProgramSetting.AddDetail( SettingDefinitionManager.Get(WeChatMiniProgramSettingNames.AppSecret), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatMiniProgramSettingNames.AppSecret, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); miniProgramSetting.AddDetail( SettingDefinitionManager.Get(WeChatMiniProgramSettingNames.Token), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatMiniProgramSettingNames.Token, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); miniProgramSetting.AddDetail( SettingDefinitionManager.Get(WeChatMiniProgramSettingNames.EncodingAESKey), StringLocalizerFactory, await SettingManager.GetOrNullAsync(WeChatMiniProgramSettingNames.EncodingAESKey, providerName, providerKey), - ValueType.String); + ValueType.String, + providerName); #endregion } - settingGroups.Add(wechatSettingGroup); - return new ListResultDto(settingGroups); + settingGroups.AddGroup(wechatSettingGroup); + + return settingGroups; } } } diff --git a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingController.cs b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingController.cs index 2fe1983aa..aa1246e40 100644 --- a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingController.cs +++ b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN/Abp/WeChat/SettingManagement/WeChatSettingController.cs @@ -2,7 +2,6 @@ using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using Volo.Abp; -using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; namespace LINGYUN.Abp.WeChat.SettingManagement @@ -22,14 +21,14 @@ namespace LINGYUN.Abp.WeChat.SettingManagement [HttpGet] [Route("by-current-tenant")] - public virtual async Task> GetAllForCurrentTenantAsync() + public virtual async Task GetAllForCurrentTenantAsync() { return await WeChatSettingAppService.GetAllForCurrentTenantAsync(); } [HttpGet] [Route("by-global")] - public virtual async Task> GetAllForGlobalAsync() + public virtual async Task GetAllForGlobalAsync() { return await WeChatSettingAppService.GetAllForGlobalAsync(); } diff --git a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat/LINGYUN/Abp/WeChat/Settings/WeChatSettingDefinitionProvider.cs b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat/LINGYUN/Abp/WeChat/Settings/WeChatSettingDefinitionProvider.cs index 44b2731c4..7638a6f9d 100644 --- a/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat/LINGYUN/Abp/WeChat/Settings/WeChatSettingDefinitionProvider.cs +++ b/aspnet-core/modules/wechat/LINGYUN.Abp.WeChat/LINGYUN/Abp/WeChat/Settings/WeChatSettingDefinitionProvider.cs @@ -17,6 +17,10 @@ namespace LINGYUN.Abp.WeChat.Settings L("Description:WeChat.EnabledQuickLogin"), isVisibleToClients: true, isEncrypted: false) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) ); } diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs index ec4418ad7..fd9cf3bbb 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs @@ -15,7 +15,12 @@ public class AccountSettingDefinitionProvider : SettingDefinitionProvider AccountSettingNames.IsSelfRegistrationEnabled, "true", L("DisplayName:Abp.Account.IsSelfRegistrationEnabled"), - L("Description:Abp.Account.IsSelfRegistrationEnabled"), isVisibleToClients: true) + L("Description:Abp.Account.IsSelfRegistrationEnabled"), + isVisibleToClients: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) ); context.Add( @@ -23,7 +28,12 @@ public class AccountSettingDefinitionProvider : SettingDefinitionProvider AccountSettingNames.EnableLocalLogin, "true", L("DisplayName:Abp.Account.EnableLocalLogin"), - L("Description:Abp.Account.EnableLocalLogin"), isVisibleToClients: true) + L("Description:Abp.Account.EnableLocalLogin"), + isVisibleToClients: true) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) ); }