From 67a3fe0f1bd9dd4f2f4eb79741cd11fa3f46ceef Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 22 Apr 2025 11:40:28 +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 | 115 +++++++++--------- 1 file changed, 60 insertions(+), 55 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs index 17f65dbc4..ff815a869 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs @@ -41,71 +41,76 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring { DateTime now = DateTime.Now; - - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - var systemDocQuery = - from sysDoc in _systemDocumentRepository.AsQueryable(false) - from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) - join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = identityUser.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc - from confirm in cc.DefaultIfEmpty() - select new UnionDocumentWithConfirmInfoView() + Console.WriteLine("发送定时过期提醒"); + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var systemDocQuery = + from sysDoc in _systemDocumentRepository.AsQueryable(false) + from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) + join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = identityUser.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc + from confirm in cc.DefaultIfEmpty() + 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, + ConfirmTime = confirm.ConfirmTime, + + RealName = identityUser.FullName, + UserName = identityUser.UserName, + + + IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter), + FullFilePath = sysDoc.Path + }; + var datalist = await systemDocQuery.IgnoreQueryFilters().Where(t => !(t.IsDeleted == true && t.ConfirmTime == null)) + .Where(x => x.IsNeedSendEmial).Where(x => x.ConfirmTime != null).ToListAsync(); + datalist = datalist.Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date).ToList(); + var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); + var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); + + Console.WriteLine("发送定时过期提醒:人员数量"+ userinfoList.Count); + int index = 1; + foreach (var userinfo in userinfoList) + { + Console.WriteLine($"{index}发送定时过期提醒,邮箱:{userinfo.EMail},姓名{userinfo.UserName}"); + index++; + var messageToSend = new MimeMessage(); + //发件地址 + messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); + messageToSend.To.Add(new MailboxAddress(String.Empty, userinfo.EMail)); + + + + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { - 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, - ConfirmTime = confirm.ConfirmTime, + var topicStr = string.Format(input.topicStr, companyName); - RealName = identityUser.FullName, - UserName = identityUser.UserName, + var htmlBodyStr = string.Format( + CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), + userinfo.UserName // 用户名 {0} + ); - IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter), - FullFilePath = sysDoc.Path + return (topicStr, htmlBodyStr); }; - var datalist = await systemDocQuery.IgnoreQueryFilters().Where(t => !(t.IsDeleted == true && t.ConfirmTime == null)) - .Where(x => x.IsNeedSendEmial).Where(x => x.ConfirmTime != null).ToListAsync(); - datalist = datalist.Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date).ToList(); - var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); - var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); - foreach (var userinfo in userinfoList) - { - var messageToSend = new MimeMessage(); - //发件地址 - messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); - messageToSend.To.Add(new MailboxAddress(String.Empty, userinfo.EMail)); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, + EmailBusinessScenario.GeneralTraining_ExpirationNotification, - var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; - Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => - { - var topicStr = string.Format(input.topicStr, companyName); + messageToSend, emailConfigFunc); - var htmlBodyStr = string.Format( - CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), - userinfo.UserName // 用户名 {0} + await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); + } - ); - - return (topicStr, htmlBodyStr); - }; - - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, - - EmailBusinessScenario.GeneralTraining_ExpirationNotification, - - messageToSend, emailConfigFunc); - - await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); - } - } }