修改邮件发送

Uat_Study
hang 2022-05-30 09:00:44 +08:00
parent a1e06f6536
commit d3af4696c2
7 changed files with 10 additions and 132 deletions

View File

@ -1,6 +1,5 @@
using Autofac; using Autofac;
using Autofac.Extras.DynamicProxy; using Autofac.Extras.DynamicProxy;
using IRaCIS.Core.API.Utility.AOP;
using IRaCIS.Core.Application; using IRaCIS.Core.Application;
using IRaCIS.Core.Application.AOP; using IRaCIS.Core.Application.AOP;
using IRaCIS.Core.Application.BackGroundJob; using IRaCIS.Core.Application.BackGroundJob;

View File

@ -1,50 +0,0 @@
using Castle.DynamicProxy;
using IRaCIS.Application.Services;
using IRaCIS.Application.Contracts;
using Microsoft.Extensions.Logging;
using IRaCIS.Core.Infrastructure.Extention;
namespace IRaCIS.Core.API.Utility.AOP
{
/// <summary>
///服务动态生成api AOP 此时会失效
/// </summary>
public class UserAddAOP : IInterceptor
{
private readonly IMailVerificationService _mailVerificationService;
private readonly ILogger<UserAddAOP> _logger;
public UserAddAOP(IMailVerificationService mailVerificationService, ILogger<UserAddAOP> logger)
{
_mailVerificationService = mailVerificationService;
_logger = logger;
}
public void Intercept(IInvocation invocation)
{
var userInfo = (invocation.Arguments[0] as UserCommand).IfNullThrowConvertException();
//处理拦截的方法
invocation.Proceed();
//在此 发送邮件
dynamic result = invocation.ReturnValue;
if (result.IsSuccess)
{
var userId = result.Data.Id;
var verificationCode = result.Data.VerificationCode;
_logger.LogInformation($"Sent to {userInfo.UserName} email {userInfo.EMail} init password {verificationCode}");
_mailVerificationService.SendMail(userId, userInfo.UserName, userInfo.EMail, verificationCode).GetAwaiter().GetResult();
}
}
}
}

View File

@ -1,7 +1,4 @@
using System; using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.Filters;
using System.Threading.Tasks;
using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace IRaCIS.Application.Services.BusinessFilter namespace IRaCIS.Application.Services.BusinessFilter

View File

@ -919,7 +919,7 @@
TrialSiteSurveyService TrialSiteSurveyService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.SendVerifyCode(IRaCIS.Core.Application.Contracts.SiteSurveySendVerifyCode,IRaCIS.Application.Services.IMailVerificationService)"> <member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.SendVerifyCode(IRaCIS.Core.Application.Contracts.SiteSurveySendVerifyCode)">
<summary> <summary>
发送验证码 发送验证码
</summary> </summary>
@ -1786,11 +1786,6 @@
构造函数注入 构造函数注入
</summary> </summary>
</member> </member>
<member name="T:IRaCIS.Core.API.Utility.AOP.UserAddAOP">
<summary>
服务动态生成api AOP 此时会失效
</summary>
</member>
<member name="T:IRaCIS.Application.Services.BusinessFilter.UnifiedApiResultFilter"> <member name="T:IRaCIS.Application.Services.BusinessFilter.UnifiedApiResultFilter">
<summary> <summary>
统一返回前端数据包装之前在控制器包装现在修改为动态Api 在ResultFilter这里包装减少重复冗余代码 统一返回前端数据包装之前在控制器包装现在修改为动态Api 在ResultFilter这里包装减少重复冗余代码

View File

@ -11,7 +11,6 @@ namespace IRaCIS.Application.Services
{ {
public interface IMailVerificationService public interface IMailVerificationService
{ {
Task SendMail(Guid userId, string userName, string emailAddress, int verificationCode);
Task AnolymousSendEmail(string researchProgramNo, string emailAddress, int verificationCode); Task AnolymousSendEmail(string researchProgramNo, string emailAddress, int verificationCode);
@ -458,72 +457,6 @@ namespace IRaCIS.Application.Services
//废弃 添加用户发送邮件
public async Task SendMail(Guid userId, string userName, string emailAddress, int verificationCode)
{
var messageToSend = new MimeMessage();
//发件地址
messageToSend.From.Add(new MailboxAddress("GRR", "iracis_grr@163.com"));
//收件地址
messageToSend.To.Add(new MailboxAddress(userName, emailAddress));
//主题
messageToSend.Subject = "[来自展影IRC] 关于重置邮箱的提醒";
var builder = new BodyBuilder();
builder.HtmlBody = @$"<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
<div style='padding-left: 40px;background: #f6f6f6'>
<div style='padding-top: 20px;padding-bottom:40px'>
<div style='line-height: 40px;font-size: 18px'>
</div>
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
使
</div>
<div>
: {verificationCode}3
</div>
<div>
</div>
<div>
/Best Regards
</div>
<div>
</div>
</div>
</div>
</body>";
messageToSend.Body = builder.ToMessageBody();
EventHandler<MessageSentEventArgs> sucessHandle = (sender, args) =>
{
// args.Response
var code = verificationCode.ToString();
_ = _verificationCodeRepository.AddAsync(new VerificationCode()
{
CodeType = 0,
HasSend = true,
Code = code,
UserId = userId,
ExpirationTime = DateTime.Now.AddMinutes(3)
}).Result;
_ = _verificationCodeRepository.SaveChangesAsync().Result;
};
await SendEmailHelper.SendEmailAsync(messageToSend, sucessHandle);
}
} }
} }

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Contracts
Task<LoginReturnDTO> GetSiteSurveyInfo(Guid trialSiteSurveyId, Guid trialId); Task<LoginReturnDTO> GetSiteSurveyInfo(Guid trialSiteSurveyId, Guid trialId);
Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO); Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO);
Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId); Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId);
Task<IResponseOutput> SendVerifyCode(SiteSurveySendVerifyCode userInfo, [FromServices] IMailVerificationService _mailVerificationService); Task<IResponseOutput> SendVerifyCode(SiteSurveySendVerifyCode userInfo);
//Task<IResponseOutput> TrialSurveyLock(Guid trialSiteSurveyId, bool isLock); //Task<IResponseOutput> TrialSurveyLock(Guid trialSiteSurveyId, bool isLock);
//IResponseOutput TrialSurveySubmmit(Guid trialId, Guid trialSiteSurveyId); //IResponseOutput TrialSurveySubmmit(Guid trialId, Guid trialSiteSurveyId);
Task<IResponseOutput> VerifySendCode(LoginDto userInfo, [FromServices] ITokenService _tokenService); Task<IResponseOutput> VerifySendCode(LoginDto userInfo, [FromServices] ITokenService _tokenService);

View File

@ -30,9 +30,12 @@ namespace IRaCIS.Core.Application.Contracts
private readonly IRepository<TrialUser> _trialUserRepository; private readonly IRepository<TrialUser> _trialUserRepository;
private readonly ITokenService _tokenService; private readonly ITokenService _tokenService;
private readonly IMailVerificationService _mailVerificationService;
public TrialSiteSurveyService(IRepository<TrialSiteSurvey> trialSiteSurveyRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialSiteUserSurvey> trialSiteUserSurveyRepository, public TrialSiteSurveyService(IRepository<TrialSiteSurvey> trialSiteSurveyRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialSiteUserSurvey> trialSiteUserSurveyRepository,
IRepository<User> userRepository, IRepository<TrialSite> trialSiteRepository, ITokenService tokenService) IRepository<User> userRepository, IRepository<TrialSite> trialSiteRepository,
ITokenService tokenService,
IMailVerificationService mailVerificationService)
{ {
_trialSiteSurveyRepository = trialSiteSurveyRepository; _trialSiteSurveyRepository = trialSiteSurveyRepository;
_trialSiteUserSurveyRepository = trialSiteUserSurveyRepository; _trialSiteUserSurveyRepository = trialSiteUserSurveyRepository;
@ -40,6 +43,7 @@ namespace IRaCIS.Core.Application.Contracts
_trialUserRepository = trialUserRepository; _trialUserRepository = trialUserRepository;
_trialSiteRepository = trialSiteRepository; _trialSiteRepository = trialSiteRepository;
_tokenService = tokenService; _tokenService = tokenService;
_mailVerificationService = mailVerificationService;
} }
private object lockObj { get; set; } = new object(); private object lockObj { get; set; } = new object();
@ -51,7 +55,7 @@ namespace IRaCIS.Core.Application.Contracts
/// <param name="_mailVerificationService"></param> /// <param name="_mailVerificationService"></param>
/// <returns></returns> /// <returns></returns>
[AllowAnonymous] [AllowAnonymous]
public async Task<IResponseOutput> SendVerifyCode(SiteSurveySendVerifyCode userInfo, [FromServices] IMailVerificationService _mailVerificationService) public async Task<IResponseOutput> SendVerifyCode(SiteSurveySendVerifyCode userInfo)
{ {
var verificationType = VerifyType.Email; var verificationType = VerifyType.Email;
//检查手机或者邮箱是否有效 //检查手机或者邮箱是否有效
@ -745,7 +749,7 @@ namespace IRaCIS.Core.Application.Contracts
} }
public async Task<IResponseOutput> SendSiteSurveyUserJoinEmail(TrialSiteUserSurveyJoinCommand joinCommand, [FromServices] IMailVerificationService _mailVerificationService) public async Task<IResponseOutput> SendSiteSurveyUserJoinEmail(TrialSiteUserSurveyJoinCommand joinCommand)
{ {
var trialSiteSurvey = (await _trialSiteSurveyRepository.Where(t => t.Id == joinCommand.TrialSiteSurveyId).FirstOrDefaultAsync()).IfNullThrowException(); var trialSiteSurvey = (await _trialSiteSurveyRepository.Where(t => t.Id == joinCommand.TrialSiteSurveyId).FirstOrDefaultAsync()).IfNullThrowException();