From 95f708da581cb6393c62189841c41b8f22c515af Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 7 May 2025 14:53:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MassTransit/Consumer/CommonEmailHelper.cs | 41 ------------- .../MassTransit/Consumer/ImageConsumer.cs | 58 +++++++++---------- 2 files changed, 29 insertions(+), 70 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs index 276cd2eec..aa7f44b6b 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs @@ -14,45 +14,6 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer; public static class CommonEmailHelper { - public static async Task GetEmailSubejctAndHtmlInfoAndBuildAsync(IRepository _emailNoticeConfigrepository, EmailBusinessScenario scenario, MimeMessage messageToSend, - Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc) - { - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - - var configInfo = await _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario).FirstOrDefaultAsync(); - - if (configInfo == null) - { - //"系统未找到当前场景邮件配置信息,请联系运维人员核查" - throw new BusinessValidationFailedException(I18n.T("CommonEmail_NotFoundConfig")); - } - - - var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN); - - try - { - //每个场景修改主题 和body的逻辑不一样 - (topicStr, htmlBodyStr) = emailFunc((topicStr, htmlBodyStr)); - } - catch (Exception ex) - { - //"邮件模板内容有误,填充内容出现问题,请联系运维人员核查" - - throw new BusinessValidationFailedException(I18n.T("CommonEmail_ConfigError")); - } - - - messageToSend.Subject = topicStr; - - var builder = new BodyBuilder(); - - builder.HtmlBody = htmlBodyStr; - - messageToSend.Body = builder.ToMessageBody(); - - return configInfo; - } /// /// 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送) @@ -67,8 +28,6 @@ Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - - var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN); try diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs index 2c55411dd..8f4b9aa44 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs @@ -99,13 +99,13 @@ public class ImageConsumer( } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId, @@ -143,17 +143,17 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId, - RequestBackStateEnum= context.Message.RequestBackState, + RequestBackStateEnum = context.Message.RequestBackState, }; await SendImageReuploadEmail(inDto); } @@ -185,13 +185,13 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId @@ -210,13 +210,13 @@ public class ImageConsumer( var visitTaskId = context.Message.VisitTaskId; // 获取VisitTask关联的SubjectVisit - var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x=>x.SourceSubjectVisit).FirstNotNullAsync(); + var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.SourceSubjectVisit).FirstNotNullAsync(); var subjectVisit = new SubjectVisit() { }; if (visitTask.SourceSubjectVisitId != null) { subjectVisit = visitTask.SourceSubjectVisit; } - else if(visitTask.SouceReadModuleId!=null) + else if (visitTask.SouceReadModuleId != null) { var readModule = await _readModuleRepository.Where(x => x.Id == visitTask.SouceReadModuleId).Include(x => x.SubjectVisit).FirstOrDefaultAsync(); subjectVisit = readModule.SubjectVisit; @@ -239,13 +239,13 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId @@ -272,15 +272,15 @@ public class ImageConsumer( List ccUserList = new List(); var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == inDto.EmailNoticeConfig.Id).ToListAsync(); - var userTypeEnum= emailNoticeUserList.Select(x => x.UserType).ToList(); + var userTypeEnum = emailNoticeUserList.Select(x => x.UserType).ToList(); if (inDto.UserTypes != null) { userTypeEnum = inDto.UserTypes; } - var crcUserList =new List(){ }; + var crcUserList = new List() { }; if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator)) { - crcUserList=await _trialSiteRepository.Where(x=>x.Id== inDto.SubjectVisit.TrialSiteId).SelectMany(x=>x.CRCUserList.Select(y => y.UserRole)).ToListAsync(); + crcUserList = await _trialSiteRepository.Where(x => x.Id == inDto.SubjectVisit.TrialSiteId).SelectMany(x => x.CRCUserList.Select(y => y.UserRole)).ToListAsync(); } if (inDto.UserTypes == null) @@ -307,7 +307,7 @@ public class ImageConsumer( } - var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); + var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); ccUserList = trialUser.Where(x => ccList.Contains(x.UserTypeEnum)).ToList(); @@ -375,7 +375,7 @@ public class ImageConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, inDto.Scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(inDto.EmailNoticeConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -404,11 +404,11 @@ public class ImageConsumer( // 设置邮件场景 var scenario = EmailBusinessScenario.ReviewerSelection_PMApplyApproving; // 69 - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { - await SendReviewerSelectionEmail(trialEmailConfig, scenario, trialId, enrollIdList); + await SendReviewerSelectionEmail(emailConfig, trialId, enrollIdList); } } @@ -435,18 +435,18 @@ public class ImageConsumer( // 设置邮件场景 var scenario = EmailBusinessScenario.ReviewerSelection_SPMCPMApproval; // 70 - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { - await SendReviewerSelectionEmail(trialEmailConfig, scenario, trialId, enrollIdList); + await SendReviewerSelectionEmail(emailConfig, trialId, enrollIdList); } } /// /// 发送阅片人筛选相关邮件的通用方法 /// - private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, Guid trialId, List enrollIdList) + private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, Guid trialId, List enrollIdList) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; @@ -454,7 +454,7 @@ public class ImageConsumer( var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); // 根据不同场景获取不同角色的用户 - var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == trialId &&!x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); + var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == trialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); // 根据场景确定收件人 List toUserList = new List(); @@ -508,7 +508,7 @@ public class ImageConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailNoticeConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); }