Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is running Details

Uat_IRC_Net8
hang 2026-05-15 13:54:43 +08:00
commit ee9152bbc4
1 changed files with 80 additions and 47 deletions

View File

@ -5,6 +5,7 @@ using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.MassTransit.Consumer; using IRaCIS.Core.Application.MassTransit.Consumer;
using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using MassTransit; using MassTransit;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -108,46 +109,65 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync();
Console.WriteLine("发送定时项目过期提醒:人员数量" + userinfoList.Count); Console.WriteLine("发送定时项目过期提醒:人员数量" + userinfoList.Count);
int index = 1;
foreach (var userinfo in userinfoList) var scenario = EmailBusinessScenario.TrialTraining_ExpirationNotification;
var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault();
if (emailConfig == null)
{
return;
}
var userTrialIdList = datalist.Select(t => new { t.ConfirmUserId, t.TrialId }).Distinct().ToList();
var userWithTrialList = (from ut in userTrialIdList
join u in userinfoList on ut.ConfirmUserId equals u.Id
select new { ut.TrialId, User = u }).ToList();
var groupedList = userWithTrialList.GroupBy(x => new { x.TrialId, x.User.UserWorkLanguage }).ToList();
foreach (var groupItem in groupedList)
{ {
try try
{ {
Console.WriteLine($"{index}发送定时过期提醒,邮箱:{userinfo.EMail},姓名{userinfo.UserName}"); var langUserInfoList = groupItem.Select(x => x.User).Distinct().ToList();
index++; if (!langUserInfoList.Any())
var trialInfo = _trialRepository.Where(x => x.Id == userinfo.TrialId).FirstOrDefault(); {
continue;
}
Console.WriteLine($"发送定时过期提醒,数量:{langUserInfoList.Count}");
var trialInfo = await _trialRepository.Where(x => x.Id == groupItem.Key.TrialId).FirstOrDefaultAsync();
if (trialInfo == null)
{
continue;
}
var workLanguage = groupItem.Key.UserWorkLanguage;
var userIsEn_US = workLanguage == UserWorkLanguage.US;
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
//发件地址
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
messageToSend.To.Add(new MailboxAddress(userinfo.FullName, userinfo.EMail));
foreach (var userinfo in langUserInfoList)
{
messageToSend.To.Add(new MailboxAddress(userinfo.FullName, userinfo.EMail));
}
var companyName = userIsEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN;
var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; var userNames = langUserInfoList.Select(x => x.UserName).ToList();
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
{ {
var topicStr = string.Format(input.topicStr, companyName); var topicStr = string.Format(input.topicStr, companyName);
var htmlBodyStr = string.Format( var htmlBodyStr = string.Format(
CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage),
userinfo.UserName, // 用户名 {0} string.Join(',', userNames),
_systemEmailConfig.SiteUrl _systemEmailConfig.SiteUrl
); );
return (topicStr, htmlBodyStr); return (topicStr, htmlBodyStr);
}; };
var scenario = EmailBusinessScenario.TrialTraining_ExpirationNotification; await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc, workLanguage);
await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo);
var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault();
if (emailConfig != null)
{
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo);
}
} }
catch (Exception) catch (Exception)
@ -264,52 +284,65 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList();
var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync();
int index = 1;
foreach (var userinfo in userinfoList) var scenario = EmailBusinessScenario.TrialTraining_EffectiveNotification;
var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
if (emailConfig == null)
{ {
string msg = $"{index}项目生效通知,邮箱:{userinfo.EMail},姓名{userinfo.UserName},"; return;
index++; }
var userTrialIdList = datalist.Select(t => new { t.ConfirmUserId, t.TrialId }).Distinct().ToList();
var userWithTrialList = (from ut in userTrialIdList
join u in userinfoList on ut.ConfirmUserId equals u.Id
select new { ut.TrialId, User = u }).ToList();
var groupedList = userWithTrialList.GroupBy(x => new { x.TrialId, x.User.UserWorkLanguage }).ToList();
foreach (var groupItem in groupedList)
{
var langUserInfoList = groupItem.Select(x => x.User).Distinct().ToList();
if (!langUserInfoList.Any())
{
continue;
}
string msg = $"{langUserInfoList.Count}项目生效通知,";
try try
{ {
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
//发件地址
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
messageToSend.To.Add(new MailboxAddress(userinfo.FullName, userinfo.EMail));
foreach (var userinfo in langUserInfoList)
{
messageToSend.To.Add(new MailboxAddress(userinfo.FullName, userinfo.EMail));
}
var workLanguage = groupItem.Key.UserWorkLanguage;
var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; var userIsEn_US = workLanguage == UserWorkLanguage.US;
var companyName = userIsEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN;
var userNames = langUserInfoList.Select(x => x.UserName).ToList();
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
{ {
var topicStr = string.Format(input.topicStr, companyName); var topicStr = string.Format(input.topicStr, companyName);
var htmlBodyStr = string.Format( var htmlBodyStr = string.Format(
CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage),
userinfo.UserName, // 用户名 {0} string.Join(',', userNames),
_systemEmailConfig.SiteUrl _systemEmailConfig.SiteUrl
); );
return (topicStr, htmlBodyStr); return (topicStr, htmlBodyStr);
}; };
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc, workLanguage);
var scenario = EmailBusinessScenario.TrialTraining_EffectiveNotification; var trialInfo = await _trialRepository.Where(x => x.Id == groupItem.Key.TrialId).FirstOrDefaultAsync();
if (trialInfo == null)
var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
if (emailConfig != null)
{ {
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc); continue;
var trial = datalist.Where(x => x.ConfirmUserId == userinfo.Id).FirstOrDefault();
var trialInfo = await _trialRepository.Where(x=>x.Id==trial.TrialId).FirstNotNullAsync();
await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo);
msg += "发送成功";
} }
await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo);
msg += "发送成功";
} }
catch (Exception) catch (Exception)