|
@@ -9,6 +9,7 @@ using MediatR;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using SqlSugar;
|
|
|
+using XF.Domain.Cache;
|
|
|
using XF.Domain.Filters;
|
|
|
using XF.Domain.Repository;
|
|
|
|
|
@@ -29,6 +30,7 @@ namespace DataSharing.Host.Controllers
|
|
|
private readonly IRepository<DsWebUserAuth> _webUserAuthRepository;
|
|
|
private readonly IChannelConfigurationManager _channelConfigurationManager;
|
|
|
private readonly IHotlineClient _hotlineClient;
|
|
|
+ private readonly ITypedCache<WriteLettersSendSmsDto> _writeLettersSendSms;
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
@@ -49,7 +51,8 @@ namespace DataSharing.Host.Controllers
|
|
|
IRepository<DsWebUserRegister> webUserRegisterRepository,
|
|
|
IRepository<DsWebUserAuth> webUserAuthRepository,
|
|
|
IChannelConfigurationManager channelConfigurationManager,
|
|
|
- IHotlineClient hotlineClient)
|
|
|
+ IHotlineClient hotlineClient,
|
|
|
+ ITypedCache<WriteLettersSendSmsDto> writeLettersSendSms)
|
|
|
{
|
|
|
_mapper = mapper;
|
|
|
_mediator = mediator;
|
|
@@ -61,6 +64,7 @@ namespace DataSharing.Host.Controllers
|
|
|
_webUserAuthRepository = webUserAuthRepository;
|
|
|
_channelConfigurationManager = channelConfigurationManager;
|
|
|
_hotlineClient = hotlineClient;
|
|
|
+ _writeLettersSendSms = writeLettersSendSms;
|
|
|
}
|
|
|
|
|
|
#region 通知
|
|
@@ -75,7 +79,7 @@ namespace DataSharing.Host.Controllers
|
|
|
RefAsync<int> total = 0;
|
|
|
var items = await _bulletinRepository.Queryable()
|
|
|
.Where(p => p.LoseEfficacyTime >= DateTime.Now)
|
|
|
- .Where(d=> SqlFunc.JsonListObjectAny(d.PushRanges, "Key", "2"))
|
|
|
+ .Where(d => SqlFunc.JsonListObjectAny(d.PushRanges, "Key", "2"))
|
|
|
.Where(p => p.BulletinTypeId == dto.NoticeType)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Condition), p => p.Title.Contains(dto.Condition))
|
|
|
.OrderByDescending(p => p.BulletinTime)
|
|
@@ -414,7 +418,7 @@ namespace DataSharing.Host.Controllers
|
|
|
|
|
|
//调用工单创建接口
|
|
|
var result = await _hotlineClient.ReceiveOrderAsync(data, HttpContext.RequestAborted);
|
|
|
-
|
|
|
+
|
|
|
OrderAcceptanceReturnDto returnDto = new();
|
|
|
if (result.IsSuccess)
|
|
|
{
|
|
@@ -623,6 +627,79 @@ namespace DataSharing.Host.Controllers
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 短信验证码发送
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [AllowAnonymous]
|
|
|
+ [HttpPost("writeletterssendsms")]
|
|
|
+ public async Task<OpenResponse> WriteLettersSendSms([FromBody] SendSmsModelDto dto)
|
|
|
+ {
|
|
|
+ string keyToken = "SmsUserWriteKey_" + dto.TelNum + "_" + DateTime.Now.ToString("yyyyMMdd");
|
|
|
+
|
|
|
+ var data = await _writeLettersSendSms.GetAsync(keyToken, HttpContext.RequestAborted);
|
|
|
+ if (data != null)//已经发过短信
|
|
|
+ {
|
|
|
+ //是否可以继续发送短信(10次)
|
|
|
+ if (data.SendCount > 10)
|
|
|
+ //短信发送超过10条
|
|
|
+ return OpenResponse.Ok(WebPortalDeResponse<string>.Success("-2"));
|
|
|
+
|
|
|
+ // 验证是否在两分钟之内
|
|
|
+ TimeSpan duration = DateTime.Now - data.AddTime; // 计算时间差
|
|
|
+ if ((int)duration.TotalSeconds < 120)
|
|
|
+ // 距离上次发送时间不足两分钟
|
|
|
+ return OpenResponse.Ok(WebPortalDeResponse<string>.Success("-4"));
|
|
|
+
|
|
|
+ //修改缓存信息
|
|
|
+ data.SendCount++;
|
|
|
+ data.SmsCode = dto.SmsCode;
|
|
|
+ data.AddTime = DateTime.Now;
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //没有发过短信,直接写入数据
|
|
|
+ data = new WriteLettersSendSmsDto
|
|
|
+ {
|
|
|
+ AddTime = DateTime.Now,
|
|
|
+ SmsCode = dto.SmsCode,
|
|
|
+ MobileNum = dto.TelNum,
|
|
|
+ SendCount = 1
|
|
|
+ };
|
|
|
+ }
|
|
|
+ //这里发送短信
|
|
|
+
|
|
|
+
|
|
|
+ //修改缓存
|
|
|
+ await _writeLettersSendSms.SetAsync(keyToken, data, TimeSpan.FromDays(1));
|
|
|
+
|
|
|
+ return OpenResponse.Ok(WebPortalDeResponse<string>.Success("1"));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 验证短信验证码是否正确 正确返回1,错误返回-1
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [AllowAnonymous]
|
|
|
+ [HttpPost("checksmscode")]
|
|
|
+ public async Task<OpenResponse> CheckSmsCode([FromBody] SendSmsModelDto dto)
|
|
|
+ {
|
|
|
+ string keyToken = "SmsUserWriteKey_" + dto.TelNum + "_" + DateTime.Now.ToString("yyyyMMdd");
|
|
|
+
|
|
|
+ var data = await _writeLettersSendSms.GetAsync(keyToken, HttpContext.RequestAborted);
|
|
|
+ //检测是否存在
|
|
|
+ if (data != null)
|
|
|
+ return OpenResponse.Ok(WebPortalDeResponse<string>.Success(data.SmsCode));
|
|
|
+
|
|
|
+ //不存在
|
|
|
+ return OpenResponse.Ok(WebPortalDeResponse<string>.Success("-1"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 系统主题颜色
|
|
|
/// </summary>
|