From 4a774fc9babdc08b54d4d5b79535172eb0864449 Mon Sep 17 00:00:00 2001 From: colin Date: Thu, 18 Jun 2026 16:54:56 +0800 Subject: [PATCH] feat: Optimize the microservice module --- ....Abp.Elsa.EntityFrameworkCore.MySql.csproj | 2 +- .../appsettings.Development.json | 8 + .../AbpApplicationConfigurationAppService.cs | 142 ++++++++++++++++++ .../appsettings.Development.json | 4 + ...onManagementHttpApiHostModule.Configure.cs | 1 + 5 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj index 0f9009a45..9bdee0c7a 100644 --- a/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj @@ -22,7 +22,7 @@ - + diff --git a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json index 7ba739320..bf1b51f3a 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json @@ -80,6 +80,14 @@ "InstanceName": "LINGYUN.Abp.Application" }, "RemoteServices": { + "Default": { + "BaseUrl": "http://localhost:30000", + "UseCurrentAccessToken": false + }, + "BlobManagement": { + "BaseUrl": "http://localhost:30025", + "UseCurrentAccessToken": false + }, "Platform": { "BaseUrl": "http://localhost:30025", "UseCurrentAccessToken": false diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs new file mode 100644 index 000000000..5dfe92789 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs @@ -0,0 +1,142 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.RequestLocalization; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; +using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; +using Volo.Abp.Authorization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Features; +using Volo.Abp.Localization; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Settings; +using Volo.Abp.Timing; +using Volo.Abp.Users; + +namespace LY.MicroService.BackendAdmin.ApplicationConfigurations; + +[Dependency(ReplaceServices = true)] +public class AbpApplicationConfigurationAppService : Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationAppService +{ + private readonly IServiceProvider _serviceProvider; + private readonly AbpApplicationConfigurationOptions _options; + private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService; + + private readonly ISettingProvider _settingProvider; + private readonly ISettingDefinitionManager _settingDefinitionManager; + + public AbpApplicationConfigurationAppService( + IOptions localizationOptions, + IOptions requestLocalizationOptions, + IOptions multiTenancyOptions, + IServiceProvider serviceProvider, + IAbpAuthorizationPolicyProvider abpAuthorizationPolicyProvider, + IPermissionDefinitionManager permissionDefinitionManager, + DefaultAuthorizationPolicyProvider defaultAuthorizationPolicyProvider, + IPermissionChecker permissionChecker, + IAuthorizationService authorizationService, + ICurrentUser currentUser, + ISettingProvider settingProvider, + ISettingDefinitionManager settingDefinitionManager, + IFeatureDefinitionManager featureDefinitionManager, + ILanguageProvider languageProvider, + ITimezoneProvider timezoneProvider, + IOptions abpClockOptions, + ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService, + IOptions options) + : base( + localizationOptions, + requestLocalizationOptions, + multiTenancyOptions, + serviceProvider, + abpAuthorizationPolicyProvider, + permissionDefinitionManager, + defaultAuthorizationPolicyProvider, + permissionChecker, + authorizationService, + currentUser, + settingProvider, + settingDefinitionManager, + featureDefinitionManager, + languageProvider, + timezoneProvider, + abpClockOptions, + cachedObjectExtensionsDtoService, + options) + { + _options = options.Value; + _serviceProvider = serviceProvider; + _cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService; + + _settingProvider = settingProvider; + _settingDefinitionManager = settingDefinitionManager; + } + + public override async Task GetAsync(ApplicationConfigurationRequestOptions options) + { + //TODO: Optimize & cache..? + + Logger.LogDebug("Executing AbpApplicationConfigurationAppService.GetAsync()..."); + + var result = new ApplicationConfigurationDto + { + Auth = await GetAuthConfigAsync(), + Features = await GetFeaturesConfigAsync(), + GlobalFeatures = await GetGlobalFeaturesConfigAsync(), + Localization = await GetLocalizationConfigAsync(options), + CurrentUser = GetCurrentUser(), + Setting = await GetSettingConfigAsync(), + MultiTenancy = GetMultiTenancy(), + CurrentTenant = GetCurrentTenant(), + Timing = await GetTimingConfigAsync(), + Clock = GetClockConfig(), + ObjectExtensions = _cachedObjectExtensionsDtoService.Get(), + ExtraProperties = new ExtraPropertyDictionary() + }; + + if (_options.Contributors.Any()) + { + using (var scope = _serviceProvider.CreateScope()) + { + var context = new ApplicationConfigurationContributorContext(scope.ServiceProvider, result); + foreach (var contributor in _options.Contributors) + { + await contributor.ContributeAsync(context); + } + } + } + + Logger.LogDebug("Executed AbpApplicationConfigurationAppService.GetAsync()."); + + return result; + } + + protected async virtual Task GetSettingConfigAsync() + { + var result = new ApplicationSettingConfigurationDto + { + Values = new Dictionary() + }; + + var settingDefinitions = (await _settingDefinitionManager.GetAllAsync()).Where(x => x.IsVisibleToClients); + var settingNames = settingDefinitions.Select(x => x.Name).ToArray(); + if (settingNames.Length > 0) + { + var settingValues = await _settingProvider.GetAllAsync(settingNames); + + foreach (var settingValue in settingValues) + { + result.Values[settingValue.Name] = settingValue.Value; + } + } + + return result; + } +} diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json index 4bec08201..fc5dcae85 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json @@ -68,6 +68,10 @@ "SwaggerClientId": "vue-oauth-client" }, "RemoteServices": { + "Default": { + "BaseUrl": "http://localhost:30000", + "UseCurrentAccessToken": false + }, "Platform": { "BaseUrl": "http://localhost:30025", "UseCurrentAccessToken": false diff --git a/aspnet-core/services/LY.MicroService.LocalizationManagement.HttpApi.Host/LocalizationManagementHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.LocalizationManagement.HttpApi.Host/LocalizationManagementHttpApiHostModule.Configure.cs index c8ce634e8..eb95b3baf 100644 --- a/aspnet-core/services/LY.MicroService.LocalizationManagement.HttpApi.Host/LocalizationManagementHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.LocalizationManagement.HttpApi.Host/LocalizationManagementHttpApiHostModule.Configure.cs @@ -307,6 +307,7 @@ public partial class LocalizationManagementHttpApiHostModule Configure(options => { options.SaveStaticLocalizationsToDatabase = true; + options.IsDynamicLocalizationInitializerHost = true; }); }