50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
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();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
} |