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 failing Details

IRC_NewDev
he 2024-06-14 10:52:02 +08:00
commit 644fe1bd3c
8 changed files with 71 additions and 33 deletions

View File

@ -21,7 +21,7 @@ namespace IRaCIS.Application.Services
Task SiteSurveyRejectEmail(MimeMessage messageToSend); Task SiteSurveyRejectEmail(MimeMessage messageToSend);
Task SenMFAVerifyEmail(Guid userId, string userName, string emailAddress, int verificationCode); Task SenMFAVerifyEmail(Guid userId, string userName, string emailAddress, int verificationCode, UserMFAType mfaType = UserMFAType.Login);
Task SendMailEditEmail(Guid userId, string userName, string emailAddress, int verificationCode); Task SendMailEditEmail(Guid userId, string userName, string emailAddress, int verificationCode);
@ -94,7 +94,7 @@ namespace IRaCIS.Application.Services
} }
//MFA //MFA
public async Task SenMFAVerifyEmail(Guid userId, string userName, string emailAddress, int verificationCode) public async Task SenMFAVerifyEmail(Guid userId, string userName, string emailAddress, int verificationCode, UserMFAType mfaType = UserMFAType.Login)
{ {
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
//发件地址 //发件地址
@ -103,7 +103,7 @@ namespace IRaCIS.Application.Services
messageToSend.To.Add(new MailboxAddress(userName, emailAddress)); messageToSend.To.Add(new MailboxAddress(userName, emailAddress));
//主题 //主题
//---[来自{0}] 关于MFA邮箱验证的提醒 //---[来自{0}] 关于MFA邮箱验证的提醒
messageToSend.Subject = _localizer["Mail_EmailMFATopic", _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN]; messageToSend.Subject = _localizer[mfaType == UserMFAType.Login? "Mail_EmailMFALoginTopic":"Mail_EmailMFAUnlockTopic", _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN];
var builder = new BodyBuilder(); var builder = new BodyBuilder();
@ -123,7 +123,7 @@ namespace IRaCIS.Application.Services
builder.HtmlBody = string.Format(ReplaceCompanyName(templateInfo), builder.HtmlBody = string.Format(ReplaceCompanyName(templateInfo),
userName, userName,
_localizer["Mail_MFAEmail"], _localizer[mfaType == UserMFAType.Login ? "Mail_EmailMFALoginEmail": "Mail_EmailMFAUnlockEmail"],
verificationCode verificationCode
); );
} }

View File

@ -12,7 +12,7 @@ namespace IRaCIS.Application.Services
Task<IResponseOutput<LoginReturnDTO>> Login(string userName, string password); Task<IResponseOutput<LoginReturnDTO>> Login(string userName, string password);
Task<IResponseOutput> VerifyMFACodeAsync(Guid userId, string Code); Task<IResponseOutput> VerifyMFACodeAsync(Guid userId, string Code);
Task<IResponseOutput> SendMFAEmail(Guid userId); Task<IResponseOutput> SendMFAEmail(Guid userId, UserMFAType mfaType);
Task<UserBasicInfo> GetUserBasicInfo(Guid userId,string pwd); Task<UserBasicInfo> GetUserBasicInfo(Guid userId,string pwd);
Task<IResponseOutput> ModifyPassword(EditPasswordCommand editPwModel); Task<IResponseOutput> ModifyPassword(EditPasswordCommand editPwModel);
Task<IResponseOutput> ResetPassword(Guid userId); Task<IResponseOutput> ResetPassword(Guid userId);

View File

@ -653,15 +653,16 @@ namespace IRaCIS.Application.Services
/// 发送MFA 验证邮件 /// 发送MFA 验证邮件
/// </summary> /// </summary>
/// <param name="userId"></param> /// <param name="userId"></param>
/// <param name="mfaType"></param>
/// <returns></returns> /// <returns></returns>
[AllowAnonymous] [AllowAnonymous]
public async Task<IResponseOutput> SendMFAEmail(Guid userId) public async Task<IResponseOutput> SendMFAEmail(Guid userId, UserMFAType mfaType = UserMFAType.Login)
{ {
var userInfo = await _userRepository.Where(u => u.Id == userId).Select(t => new { t.FullName, t.EMail }).FirstOrDefaultAsync(); var userInfo = await _userRepository.Where(u => u.Id == userId).Select(t => new { t.FullName, t.EMail }).FirstOrDefaultAsync();
int verificationCode = new Random().Next(100000, 1000000); int verificationCode = new Random().Next(100000, 1000000);
await _mailVerificationService.SenMFAVerifyEmail(userId, userInfo.FullName, userInfo.EMail, verificationCode); await _mailVerificationService.SenMFAVerifyEmail(userId, userInfo.FullName, userInfo.EMail, verificationCode, mfaType);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -5,6 +5,7 @@
//-------------------------------------------------------------------- //--------------------------------------------------------------------
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Application.Contracts namespace IRaCIS.Core.Application.Contracts
{ {
@ -67,6 +68,9 @@ namespace IRaCIS.Core.Application.Contracts
public List<TrialSiteEquipmentSurveyView> TrialSiteEquipmentSurveyList { get; set; } = new List<TrialSiteEquipmentSurveyView>(); public List<TrialSiteEquipmentSurveyView> TrialSiteEquipmentSurveyList { get; set; } = new List<TrialSiteEquipmentSurveyView>();
public List<TrialSiteUserSurveyView> TrialSiteUserSurveyList { get; set; } = new List<TrialSiteUserSurveyView>(); public List<TrialSiteUserSurveyView> TrialSiteUserSurveyList { get; set; } = new List<TrialSiteUserSurveyView>();
public SiteSurveyFiledConfig SiteSurveyFiledConfig { get; set; }
} }
public class TrialSiteUserSurveyAllDTO : TrialSiteUserSurveyView public class TrialSiteUserSurveyAllDTO : TrialSiteUserSurveyView

View File

@ -22,6 +22,8 @@ using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Application.ViewModel;
using Medallion.Threading; using Medallion.Threading;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using NPOI.SS.Formula.Functions;
using Newtonsoft.Json;
namespace IRaCIS.Core.Application.Contracts namespace IRaCIS.Core.Application.Contracts
{ {
@ -386,10 +388,12 @@ namespace IRaCIS.Core.Application.Contracts
} }
var result = await _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId && t.TrialId == trialId).IgnoreQueryFilters() var result = await _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId && t.TrialId == trialId).IgnoreQueryFilters()
.ProjectTo<LoginReturnDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); .ProjectTo<LoginReturnDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
var siteSurveryConfig = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).Select(t => t.Trial.SiteSurveyConfigJsonStr).FirstOrDefault();
result.SiteSurveyFiledConfig = JsonConvert.DeserializeObject<SiteSurveyFiledConfig>(siteSurveryConfig) ?? new SiteSurveyFiledConfig();
return result; return result;
} }

View File

@ -1,4 +1,6 @@
namespace IRaCIS.Core.Domain.Share using System.Collections.Generic;
namespace IRaCIS.Core.Domain.Share
{ {
public enum TrialExpedited public enum TrialExpedited
{ {
@ -39,6 +41,23 @@
} }
public class SiteSurveyFiledConfig
{
public List<string> NotShowFieldList { get; set; }=new List<string>();
public List<SiteSurveyModifyFiled> ModifyFiledList { get; set; }=new List<SiteSurveyModifyFiled>();
}
public class SiteSurveyModifyFiled
{
public string NeedModifyFiled { get; set; }
public string ReplaceContent { get; set; }
public string ReplaceContentCN { get; set; }
}
public enum DeclarationType public enum DeclarationType
{ {
Other = 3, Other = 3,

View File

@ -90,6 +90,13 @@
EnrollOrPD_EMailCopy=5, EnrollOrPD_EMailCopy=5,
} }
public enum UserMFAType
{
Login=0,
Unlock=1,
}
} }

View File

@ -182,6 +182,9 @@ namespace IRaCIS.Core.Domain.Models
//public List<SiteSurveyFiledConfig>
public string SiteSurveyConfigJsonStr { get; set; } = string.Empty;
public bool VisitPlanConfirmed { get; set; } public bool VisitPlanConfirmed { get; set; }