From 711aa157e2d476d201ff4e83a723a107a5c17189 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Mon, 2 Dec 2024 14:56:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=89=A9=E5=B1=95=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Shentun.Peis.Domain/CacheService.cs | 119 ++++++++++++++++-------- 1 file changed, 80 insertions(+), 39 deletions(-) diff --git a/src/Shentun.Peis.Domain/CacheService.cs b/src/Shentun.Peis.Domain/CacheService.cs index 319f79b..84d7024 100644 --- a/src/Shentun.Peis.Domain/CacheService.cs +++ b/src/Shentun.Peis.Domain/CacheService.cs @@ -1,5 +1,4 @@ -using AutoMapper.Internal.Mappers; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Caching.Memory; using NPOI.SS.Formula.Functions; @@ -23,7 +22,7 @@ namespace Shentun.Peis { public class CacheService : ISingletonDependency { - private readonly IDistributedCache _userCache; + private readonly IDistributedCache _userCache; private readonly IMemoryCache _customerOrgCache; //private readonly IDistributedCache _customerOrgCache; private readonly IDistributedCache _customerOrgTopNameCache; @@ -61,8 +60,10 @@ namespace Shentun.Peis private readonly IDistributedCache _customerOrgDisplayModeCache; + private readonly IMemoryCache _userExtensionCache; + public CacheService( - IDistributedCache userCache, + IDistributedCache userCache, IMemoryCache customerOrgCache, IDistributedCache nationCache, IRepository userRepository, @@ -90,7 +91,8 @@ namespace Shentun.Peis SysParmValueManager sysParmValueManager, IDistributedCache customerOrgDisplayModeCache, IDistributedCache diagnosisLevelCache, - IRepository diagnosisLevelRepository) + IRepository diagnosisLevelRepository, + IMemoryCache userExtensionCache) { _userCache = userCache; _userRepository = userRepository; @@ -131,9 +133,10 @@ namespace Shentun.Peis _customerOrgDisplayModeCache = customerOrgDisplayModeCache; _diagnosisLevelCache = diagnosisLevelCache; _diagnosisLevelRepository = diagnosisLevelRepository; + _userExtensionCache = userExtensionCache; } - private async Task GetUserAsync(Guid id) + private async Task GetUserAsync(Guid id) { var entity = await _userCache.GetOrAddAsync( @@ -142,34 +145,34 @@ namespace Shentun.Peis { var dataEntity = await _userRepository.FirstOrDefaultAsync(m => m.Id == id); - var userSign = dataEntity.GetProperty("user_sign"); - var userPhoto = dataEntity.GetProperty("user_photo"); - var entDto = new IdentityUserWithExtensionDto - { - ConcurrencyStamp = dataEntity.ConcurrencyStamp, - CreationTime = dataEntity.CreationTime, - CreatorId = dataEntity.CreatorId, - DeleterId = dataEntity.DeleterId, - DeletionTime = dataEntity.DeletionTime, - Email = dataEntity.Email, - EmailConfirmed = dataEntity.EmailConfirmed, - Id = dataEntity.Id, - IsActive = dataEntity.IsActive, - IsDeleted = dataEntity.IsDeleted, - LastModificationTime = dataEntity.LastModificationTime, - LastModifierId = dataEntity.LastModifierId, - LockoutEnabled = dataEntity.LockoutEnabled, - LockoutEnd = dataEntity.LockoutEnd, - Name = dataEntity.Name, - PhoneNumber = dataEntity.PhoneNumber, - PhoneNumberConfirmed = dataEntity.PhoneNumberConfirmed, - Surname = dataEntity.Surname, - TenantId = dataEntity.TenantId, - UserName = dataEntity.UserName, - UserPhoto = userPhoto, - UserSign = userSign - }; - return entDto; + //var userSign = dataEntity.GetProperty("user_sign"); + //var userPhoto = dataEntity.GetProperty("user_photo"); + //var entDto = new IdentityUserWithExtensionDto + //{ + // ConcurrencyStamp = dataEntity.ConcurrencyStamp, + // CreationTime = dataEntity.CreationTime, + // CreatorId = dataEntity.CreatorId, + // DeleterId = dataEntity.DeleterId, + // DeletionTime = dataEntity.DeletionTime, + // Email = dataEntity.Email, + // EmailConfirmed = dataEntity.EmailConfirmed, + // Id = dataEntity.Id, + // IsActive = dataEntity.IsActive, + // IsDeleted = dataEntity.IsDeleted, + // LastModificationTime = dataEntity.LastModificationTime, + // LastModifierId = dataEntity.LastModifierId, + // LockoutEnabled = dataEntity.LockoutEnabled, + // LockoutEnd = dataEntity.LockoutEnd, + // Name = dataEntity.Name, + // PhoneNumber = dataEntity.PhoneNumber, + // PhoneNumberConfirmed = dataEntity.PhoneNumberConfirmed, + // Surname = dataEntity.Surname, + // TenantId = dataEntity.TenantId, + // UserName = dataEntity.UserName, + // UserPhoto = userPhoto, + // UserSign = userSign + //}; + return dataEntity; } ); return entity; @@ -189,19 +192,57 @@ namespace Shentun.Peis } public async Task GetUserSignAsync(Guid? id) - { + { if (id == null || id == default(Guid) || !id.HasValue) { return ""; } - var entity = await GetUserAsync((Guid)id); - if (entity != null) + + string cacheKey = $"userExtension_{id.ToString()}"; + + var userExtension = (IdentityUserWithExtensionDto)_userExtensionCache.Get(cacheKey); + if (userExtension == null) { - return entity.UserSign; + var userEntity = await _userRepository.GetAsync(o => o.Id == id); + var userSign = userEntity.GetProperty("user_sign"); + var userPhoto = userEntity.GetProperty("user_photo"); + userExtension = new IdentityUserWithExtensionDto + { + ConcurrencyStamp = userEntity.ConcurrencyStamp, + CreationTime = userEntity.CreationTime, + CreatorId = userEntity.CreatorId, + DeleterId = userEntity.DeleterId, + DeletionTime = userEntity.DeletionTime, + Email = userEntity.Email, + EmailConfirmed = userEntity.EmailConfirmed, + Id = userEntity.Id, + IsActive = userEntity.IsActive, + IsDeleted = userEntity.IsDeleted, + LastModificationTime = userEntity.LastModificationTime, + LastModifierId = userEntity.LastModifierId, + LockoutEnabled = userEntity.LockoutEnabled, + LockoutEnd = userEntity.LockoutEnd, + Name = userEntity.Name, + PhoneNumber = userEntity.PhoneNumber, + PhoneNumberConfirmed = userEntity.PhoneNumberConfirmed, + Surname = userEntity.Surname, + TenantId = userEntity.TenantId, + UserName = userEntity.UserName, + UserPhoto = userPhoto, + UserSign = userSign + }; + _userExtensionCache.Set(cacheKey, userExtension); + } - else + if (userExtension == null) + { return ""; + } + else + { + return userExtension.UserSign; + } } private async Task GetSexAsync(char id) {