修改邮件配置
continuous-integration/drone/push Build is passing Details

Test_IRC_Net8
hang 2025-05-07 14:53:49 +08:00
parent ce47776f19
commit 95f708da58
2 changed files with 29 additions and 70 deletions

View File

@ -14,45 +14,6 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
public static class CommonEmailHelper
{
public static async Task<EmailNoticeConfig> GetEmailSubejctAndHtmlInfoAndBuildAsync(IRepository<EmailNoticeConfig> _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;
}
/// <summary>
/// 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送)
@ -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

View File

@ -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<UserRole> ccUserList = new List<UserRole>();
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<UserRole>(){ };
var crcUserList = new List<UserRole>() { };
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)
@ -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);
}
}
/// <summary>
/// 发送阅片人筛选相关邮件的通用方法
/// </summary>
private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, Guid trialId, List<Guid> enrollIdList)
private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, Guid trialId, List<Guid> 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<UserRole> toUserList = new List<UserRole>();
@ -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);
}