From d853b7fd64d8748cefb7cc06830919cdd534955b Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Sun, 31 Oct 2021 18:33:44 +0800 Subject: [PATCH] split the connection string change event data. --- .../ConnectionStringChangedEventHandler.cs | 31 ++++++++++++++--- .../ConnectionStringChangedEventHandler.cs | 16 +++++++-- ...cs => ConnectionStringCreatedEventData.cs} | 4 +-- .../ConnectionStringDeletedEventData.cs | 11 ++++++ .../Abp/MultiTenancy/CreateEventData.cs | 34 +++++++++---------- .../Abp/TenantManagement/TenantAppService.cs | 24 +++++++------ .../Localization/Resources/zh-Hans.json | 34 +++++++++---------- 7 files changed, 100 insertions(+), 54 deletions(-) rename aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/{ConnectionStringChangedEventData.cs => ConnectionStringCreatedEventData.cs} (57%) create mode 100644 aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringDeletedEventData.cs diff --git a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.DbFinder/LINGYUN/Abp/MultiTenancy/DbFinder/EventBus/Distributed/ConnectionStringChangedEventHandler.cs b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.DbFinder/LINGYUN/Abp/MultiTenancy/DbFinder/EventBus/Distributed/ConnectionStringChangedEventHandler.cs index e3a954400..81263f7c5 100644 --- a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.DbFinder/LINGYUN/Abp/MultiTenancy/DbFinder/EventBus/Distributed/ConnectionStringChangedEventHandler.cs +++ b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.DbFinder/LINGYUN/Abp/MultiTenancy/DbFinder/EventBus/Distributed/ConnectionStringChangedEventHandler.cs @@ -1,5 +1,4 @@ -using LINGYUN.Abp.MultiTenancy.DbFinder; -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; using Volo.Abp.Caching; @@ -10,9 +9,12 @@ using Volo.Abp.MultiTenancy; using Volo.Abp.TenantManagement; using Volo.Abp.Uow; -namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed +namespace LINGYUN.Abp.MultiTenancy.DbFinder.EventBus.Distributed { - public class ConnectionStringChangedEventHandler : IDistributedEventHandler, ITransientDependency + public class ConnectionStringChangedEventHandler : + IDistributedEventHandler, + IDistributedEventHandler, + ITransientDependency { private readonly ILogger _logger; private readonly ICurrentTenant _currentTenant; @@ -32,7 +34,7 @@ namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed } [UnitOfWork] - public virtual async Task HandleEventAsync(ConnectionStringChangedEventData eventData) + public virtual async Task HandleEventAsync(ConnectionStringCreatedEventData eventData) { try { @@ -64,5 +66,24 @@ namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed _logger.LogException(ex); } } + + public virtual async Task HandleEventAsync(ConnectionStringDeletedEventData eventData) + { + try + { + using (_currentTenant.Change(null)) + { + await _cache.RemoveManyAsync( + new string[] { + TenantConfigurationCacheItem.CalculateCacheKey(eventData.Id.ToString()), + TenantConfigurationCacheItem.CalculateCacheKey(eventData.Name) + }); + } + } + catch (Exception ex) + { + _logger.LogException(ex); + } + } } } diff --git a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.RemoteService/LINGYUN/Abp/MultiTenancy/RemoteService/EventBus/Distributed/ConnectionStringChangedEventHandler.cs b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.RemoteService/LINGYUN/Abp/MultiTenancy/RemoteService/EventBus/Distributed/ConnectionStringChangedEventHandler.cs index 73365afa0..f0f791717 100644 --- a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.RemoteService/LINGYUN/Abp/MultiTenancy/RemoteService/EventBus/Distributed/ConnectionStringChangedEventHandler.cs +++ b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy.RemoteService/LINGYUN/Abp/MultiTenancy/RemoteService/EventBus/Distributed/ConnectionStringChangedEventHandler.cs @@ -7,7 +7,10 @@ using Volo.Abp.EventBus.Distributed; namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed { - public class ConnectionStringChangedEventHandler : IDistributedEventHandler, ITransientDependency + public class ConnectionStringChangedEventHandler : + IDistributedEventHandler, + IDistributedEventHandler, + ITransientDependency { private readonly ITenantAppService _tenantAppService; private readonly IDistributedCache _cache; @@ -21,7 +24,7 @@ namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed } - public virtual async Task HandleEventAsync(ConnectionStringChangedEventData eventData) + public virtual async Task HandleEventAsync(ConnectionStringCreatedEventData eventData) { var tenantDto = await _tenantAppService.GetAsync(eventData.Id); var tenantConnectionStringsDto = await _tenantAppService.GetConnectionStringAsync(eventData.Id); @@ -40,5 +43,14 @@ namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed TenantConfigurationCacheItem.CalculateCacheKey(tenantDto.Name), cacheItem); } + + public virtual async Task HandleEventAsync(ConnectionStringDeletedEventData eventData) + { + await _cache.RemoveManyAsync( + new string[] { + TenantConfigurationCacheItem.CalculateCacheKey(eventData.Id.ToString()), + TenantConfigurationCacheItem.CalculateCacheKey(eventData.Name) + }); + } } } diff --git a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringChangedEventData.cs b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringCreatedEventData.cs similarity index 57% rename from aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringChangedEventData.cs rename to aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringCreatedEventData.cs index d12d41518..b7bd16461 100644 --- a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringChangedEventData.cs +++ b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringCreatedEventData.cs @@ -2,12 +2,10 @@ namespace LINGYUN.Abp.MultiTenancy { - public class ConnectionStringChangedEventData + public class ConnectionStringCreatedEventData { public Guid Id { get; set; } - public string OriginName { get; set; } - public string Name { get; set; } } } diff --git a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringDeletedEventData.cs b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringDeletedEventData.cs new file mode 100644 index 000000000..6890049c1 --- /dev/null +++ b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/ConnectionStringDeletedEventData.cs @@ -0,0 +1,11 @@ +using System; + +namespace LINGYUN.Abp.MultiTenancy +{ + public class ConnectionStringDeletedEventData + { + public Guid Id { get; set; } + + public string Name { get; set; } + } +} diff --git a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/CreateEventData.cs b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/CreateEventData.cs index a3d62eb2f..cb2088b5d 100644 --- a/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/CreateEventData.cs +++ b/aspnet-core/modules/tenants/LINGYUN.Abp.MultiTenancy/LINGYUN/Abp/MultiTenancy/CreateEventData.cs @@ -1,17 +1,17 @@ -using System; - -namespace LINGYUN.Abp.MultiTenancy -{ - public class CreateEventData - { - public Guid Id { get; set; } - - public string Name { get; set; } - - public Guid AdminUserId { get; set; } - - public string AdminEmailAddress { get; set; } - - public string AdminPassword { get; set; } - } -} +using System; + +namespace LINGYUN.Abp.MultiTenancy +{ + public class CreateEventData + { + public Guid Id { get; set; } + + public string Name { get; set; } + + public Guid AdminUserId { get; set; } + + public string AdminEmailAddress { get; set; } + + public string AdminPassword { get; set; } + } +} diff --git a/aspnet-core/modules/tenants/LINGYUN.Abp.TenantManagement.Application/LINGYUN/Abp/TenantManagement/TenantAppService.cs b/aspnet-core/modules/tenants/LINGYUN.Abp.TenantManagement.Application/LINGYUN/Abp/TenantManagement/TenantAppService.cs index 9baf48677..b0457bf09 100644 --- a/aspnet-core/modules/tenants/LINGYUN.Abp.TenantManagement.Application/LINGYUN/Abp/TenantManagement/TenantAppService.cs +++ b/aspnet-core/modules/tenants/LINGYUN.Abp.TenantManagement.Application/LINGYUN/Abp/TenantManagement/TenantAppService.cs @@ -145,15 +145,20 @@ namespace LINGYUN.Abp.TenantManagement public virtual async Task SetConnectionStringAsync(Guid id, TenantConnectionStringCreateOrUpdateDto tenantConnectionStringCreateOrUpdate) { var tenant = await TenantRepository.GetAsync(id); - tenant.SetConnectionString(tenantConnectionStringCreateOrUpdate.Name, tenantConnectionStringCreateOrUpdate.Value); - - var eventData = new ConnectionStringChangedEventData + if (tenant.FindConnectionString(tenantConnectionStringCreateOrUpdate.Name) == null) { - Id = tenant.Id, - OriginName = tenantConnectionStringCreateOrUpdate.Name, - Name = tenantConnectionStringCreateOrUpdate.Name - }; - await EventBus.PublishAsync(eventData); + CurrentUnitOfWork.OnCompleted(async () => + { + var eventData = new ConnectionStringCreatedEventData + { + Id = tenant.Id, + Name = tenantConnectionStringCreateOrUpdate.Name + }; + + await EventBus.PublishAsync(eventData); + }); + } + tenant.SetConnectionString(tenantConnectionStringCreateOrUpdate.Name, tenantConnectionStringCreateOrUpdate.Value); return new TenantConnectionStringDto { @@ -169,10 +174,9 @@ namespace LINGYUN.Abp.TenantManagement tenant.RemoveConnectionString(name); - var eventData = new ConnectionStringChangedEventData + var eventData = new ConnectionStringDeletedEventData { Id = tenant.Id, - OriginName = name, Name = name }; await EventBus.PublishAsync(eventData); diff --git a/aspnet-core/services/account/AuthServer.Host/Localization/Resources/zh-Hans.json b/aspnet-core/services/account/AuthServer.Host/Localization/Resources/zh-Hans.json index 450d791e7..0396e0bde 100644 --- a/aspnet-core/services/account/AuthServer.Host/Localization/Resources/zh-Hans.json +++ b/aspnet-core/services/account/AuthServer.Host/Localization/Resources/zh-Hans.json @@ -1,18 +1,18 @@ -{ - "culture": "zh-Hans", - "texts": { - "TwoFactor": "双因素身份验证", - "SelectedProvider": "选择验证方式", - "SendVerifyCode": "发送验证码", - "VerifyCode": "验证码", - "VerifyAuthenticatorCode": "验证身份代码", - "RememberBrowser": "在浏览器中记住我", - "TwoFactorAuthenticationInvaidUser": "认证失败,您的会话已失效,请程序登录!", - "InvaidGenerateTwoFactorToken": "验证码生成失败,请联系管理员!", - "TextTemplate:Abp.Account.MailSecurityVerifyLink": "邮件安全验证模板", - "MailSecurityVerify": "邮件安全验证", - "VerifyMyEmailAddress": "亲爱的 {0},您好

您此次邮件安全验证码如下,请输入验证码进行下一步操作。

如非你本人操作,请忽略此邮件。

", - "MailSecurityVerifyRemarks": "此邮件为系统所发,请勿直接回复。", - "ClickToValidation": "点击进行验证" - } +{ + "culture": "zh-Hans", + "texts": { + "TwoFactor": "双因素身份验证", + "SelectedProvider": "选择验证方式", + "SendVerifyCode": "发送验证码", + "VerifyCode": "验证码", + "VerifyAuthenticatorCode": "验证身份代码", + "RememberBrowser": "在浏览器中记住我", + "TwoFactorAuthenticationInvaidUser": "认证失败,您的会话已失效,请程序登录!", + "InvaidGenerateTwoFactorToken": "验证码生成失败,请联系管理员!", + "TextTemplate:Abp.Account.MailSecurityVerifyLink": "邮件安全验证模板", + "MailSecurityVerify": "邮件安全验证", + "VerifyMyEmailAddress": "您好

您此次邮件安全验证码如下,请输入验证码进行下一步操作。

如非你本人操作,请忽略此邮件。

", + "MailSecurityVerifyRemarks": "此邮件为系统所发,请勿直接回复。", + "ClickToValidation": "点击进行验证" + } } \ No newline at end of file