| | |
| | | using Azure.Core; |
| | | using Furion; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.FriendlyException; |
| | | using Furion.UnifyResult; |
| | | using Mapster; |
| | | using MediatR; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using Microsoft.Extensions.Hosting; |
| | | using Microsoft.Extensions.Options; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | |
| | | /// </summary> |
| | | public class SmsUtils |
| | | { |
| | | private readonly IRepository<SmsLog> rep; |
| | | private readonly IRepository<SmsLog, LogDbContextLocator> rep; |
| | | private readonly IOptions<AliyunOptions> options; |
| | | private readonly AliyunSmsUtils aliyunSmsUtils; |
| | | |
| | | public SmsUtils( |
| | | IRepository<SmsLog> rep, |
| | | IRepository<SmsLog, LogDbContextLocator> rep, |
| | | IOptions<AliyunOptions> options, |
| | | AliyunSmsUtils aliyunSmsUtils) |
| | | { |
| | | this.rep = rep; |
| | | this.options = options; |
| | | this.aliyunSmsUtils = aliyunSmsUtils; |
| | | } |
| | | |
| | | public async Task<Guid> Send(SendSmsModel model, object templateParam, CancellationToken cancellationToken = default) |
| | | { |
| | | var entity = new SmsLog(); |
| | | model.Adapt(entity); |
| | | entity.Expiry = DateTime.Now.AddMinutes(10); |
| | | entity.TemplateParam = templateParam.ToJson(); |
| | | await aliyunSmsUtils.SendAsync(model.PhoneNumber, model.TemplateCode, entity.TemplateParam, cancellationToken); |
| | | await rep.InsertAsync(entity); |
| | | return entity.Id; |
| | | } |
| | | |
| | | public async Task<Guid> SendVerifyCode(SendVerifyCodeModel model, CancellationToken cancellationToken = default) |
| | |
| | | entity.TemplateParam = new { code }.ToJson(); |
| | | await aliyunSmsUtils.SendAsync(model.PhoneNumber, model.TemplateCode, entity.TemplateParam, cancellationToken); |
| | | await rep.InsertAsync(entity); |
| | | if (options.Value.SMS.WithoutVerifyCode) |
| | | { |
| | | UnifyContext.Fill(new |
| | | { |
| | | Code = code |
| | | }); |
| | | } |
| | | return entity.Id; |
| | | } |
| | | |