zhengyiming
1 天以前 193fa41f6419b80f33dabad90ed65ed1e310add8
FlexJobApi.Core/Utils/SmsUtils/SmsUtils.cs
@@ -1,9 +1,13 @@
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;
@@ -19,14 +23,28 @@
    public class SmsUtils
    {
        private readonly IRepository<SmsLog, LogDbContextLocator> rep;
        private readonly IOptions<AliyunOptions> options;
        private readonly AliyunSmsUtils aliyunSmsUtils;
        public SmsUtils(
            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)
@@ -38,6 +56,13 @@
            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;
        }