From 793cf1b570ad80acb72d659002861159deccbd93 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Mon, 19 May 2025 16:22:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Recurring/SystemDocumentConsumer.cs | 86 +++++++++++++------ 1 file changed, 62 insertions(+), 24 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs index 11f18dcc2..0c8027efb 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs @@ -151,32 +151,70 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring public async Task Consume(ConsumeContext context) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - var systemDocQuery = - from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) - from identityUser in _identityUserRepository.AsQueryable(false) - .Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false) - .Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) - .WhereIf(context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any(), t => t.UserRoleList.Any(z => context.Message.NewUserTypeIds.Contains(z.UserTypeId))) - select new UnionDocumentWithConfirmInfoView() + + // 记录是否只发送给新增角色的日志 + if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any()) { - IsSystemDoc = true, - Id = sysDoc.Id, - CreateTime = sysDoc.CreateTime, - IsDeleted = sysDoc.IsDeleted, - SignViewMinimumMinutes = sysDoc.SignViewMinimumMinutes, - Name = sysDoc.Name, - Path = sysDoc.Path, - FileTypeId = sysDoc.FileTypeId, - UpdateTime = sysDoc.UpdateTime, - ConfirmUserId = identityUser.Id, + Console.WriteLine($"只发送给新增的角色,角色数量: {context.Message.NewUserTypeIds.Count}"); + } + // 构建查询 + IQueryable systemDocQuery; - RealName = identityUser.FullName, - UserName = identityUser.UserName, - IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter), - - - FullFilePath = sysDoc.Path - }; + if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any()) + { + // 只查询新增角色的用户 + systemDocQuery = + from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) + from identityUser in _identityUserRepository.AsQueryable(false) + .Where(t => t.Status == UserStateEnum.Enable && + t.UserRoleList.Where(t => t.IsUserRoleDisabled == false) + .Any(t => context.Message.NewUserTypeIds.Contains(t.UserTypeId) && + sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) + select new UnionDocumentWithConfirmInfoView() + { + IsSystemDoc = true, + Id = sysDoc.Id, + CreateTime = sysDoc.CreateTime, + IsDeleted = sysDoc.IsDeleted, + SignViewMinimumMinutes = sysDoc.SignViewMinimumMinutes, + Name = sysDoc.Name, + Path = sysDoc.Path, + FileTypeId = sysDoc.FileTypeId, + UpdateTime = sysDoc.UpdateTime, + ConfirmUserId = identityUser.Id, + RealName = identityUser.FullName, + UserName = identityUser.UserName, + IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter), + FullFilePath = sysDoc.Path + }; + } + else + { + // 查询所有相关角色的用户 + systemDocQuery = + from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) + from identityUser in _identityUserRepository.AsQueryable(false) + .Where(t => t.Status == UserStateEnum.Enable && + t.UserRoleList.Where(t => t.IsUserRoleDisabled == false) + .Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) + select new UnionDocumentWithConfirmInfoView() + { + IsSystemDoc = true, + Id = sysDoc.Id, + CreateTime = sysDoc.CreateTime, + IsDeleted = sysDoc.IsDeleted, + SignViewMinimumMinutes = sysDoc.SignViewMinimumMinutes, + Name = sysDoc.Name, + Path = sysDoc.Path, + FileTypeId = sysDoc.FileTypeId, + UpdateTime = sysDoc.UpdateTime, + ConfirmUserId = identityUser.Id, + RealName = identityUser.FullName, + UserName = identityUser.UserName, + IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter), + FullFilePath = sysDoc.Path + }; + } var datalist = await systemDocQuery.IgnoreQueryFilters().Where(x => x.IsNeedSendEmial).ToListAsync(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList();