中心调研邮件初步修改
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net8
hang 2024-12-25 16:02:49 +08:00
parent 7535d49844
commit 25116a9f0e
4 changed files with 25 additions and 21 deletions

View File

@ -1,6 +1,7 @@
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.Auth;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
using MailKit;
@ -31,7 +32,7 @@ namespace IRaCIS.Core.Application.Service
Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl);
Task ExternalUserJoinEmail(Guid trialId, Guid userId, Guid userTypeId, string baseUrl, string rootUrl);
Task ExternalUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl);
Task<Guid> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl);
@ -428,13 +429,13 @@ namespace IRaCIS.Core.Application.Service
}
//外部用户 加入项目
public async Task ExternalUserJoinEmail(Guid trialId, Guid userId, Guid userTypeId, string baseUrl, string rootUrl)
public async Task ExternalUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl)
{
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId)).IfNullThrowException();
var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException();
var userType = await _userTypeRepository.FirstAsync(t => t.Id == userTypeId);
var userTypes = await _userRoleRepository.Where(t => t.IdentityUserId == sysUserInfo.Id).Select(t => t.UserTypeRole.UserTypeShortName).ToListAsync();
var messageToSend = new MimeMessage();
//发件地址
@ -454,7 +455,7 @@ namespace IRaCIS.Core.Application.Service
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
var redirectUrl = $"{domain}/api/User/UserRedirect?url={System.Web.HttpUtility.UrlEncode(routeUrl)}";
@ -472,7 +473,7 @@ namespace IRaCIS.Core.Application.Service
trialInfo.ResearchProgramNo,
trialInfo.TrialCode,
sysUserInfo.UserName,
userType.UserTypeShortName,
string.Join(',', userTypes),
sysUserInfo.IsFirstAdd ? redirectUrl : baseUrl
);
@ -487,16 +488,13 @@ namespace IRaCIS.Core.Application.Service
}
#endregion
//Site调研 用户加入项目
public async Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl)
{
var sysUserInfo = (await _userRoleRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException();
var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException();
var userTypes = await _userRoleRepository.Where(t => t.IdentityUserId == sysUserInfo.Id).Select(t => t.UserTypeRole.UserTypeShortName).ToListAsync();
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
@ -513,10 +511,10 @@ namespace IRaCIS.Core.Application.Service
if (sysUserInfo.IsFirstAdd)
{
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new UserRole() { EmailToken = token });
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new Domain.Models.IdentityUser() { EmailToken = token });
}
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&UserType=" + sysUserInfo.UserTypeRole.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
@ -535,8 +533,8 @@ namespace IRaCIS.Core.Application.Service
trialInfo.ExperimentName,
trialInfo.ResearchProgramNo,
trialInfo.TrialCode,
sysUserInfo.UserName,
sysUserInfo.UserTypeRole.UserTypeShortName,
sysUserInfo.UserName,
string.Join(',', userTypes),
sysUserInfo.IsFirstAdd ? redirectUrl : baseUrl
);
@ -553,6 +551,7 @@ namespace IRaCIS.Core.Application.Service
}
#endregion
//医生生成账号加入 或者已存在账号加入到项目中

View File

@ -205,6 +205,8 @@ namespace IRaCIS.Application.Contracts
public string FullName { get; set; } = String.Empty;
public string UserTypeShortName { get; set; }
public bool IsSelect { get; set; }
}

View File

@ -13,6 +13,8 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
using Medallion.Threading;
using Microsoft.AspNetCore.Mvc;
using DocumentFormat.OpenXml.Spreadsheet;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application.Service
{
@ -276,15 +278,16 @@ namespace IRaCIS.Core.Application.Service
}
}
//判断TrialUser中是否存在 不存在就插入 注意退出了,也不能再加进来
}
await _mailVerificationService.ExternalUserJoinEmail(trialId, userId,userTypeId, sendEmail.BaseUrl, sendEmail.RouteUrl);
foreach (var item in sendEmail.SendUsers.GroupBy(t=>t.SystemUserId))
{
await _mailVerificationService.ExternalUserJoinEmail(trialId, item.Key, sendEmail.BaseUrl, sendEmail.RouteUrl);
}
return ResponseOutput.Ok();
return ResponseOutput.Ok();
}

View File

@ -150,7 +150,7 @@ namespace IRaCIS.Core.Application.Service
OrganizationName = t.IdentityUser.OrganizationName,
Phone = t.IdentityUser.Phone,
UserName = t.IdentityUser.UserName,
UserTypeShortName=t.UserTypeRole.UserTypeShortName,
IsSelect = t.UserRoleTrials.Any(t => t.TrialId == inQuery.TrialId),
});