PushMessageController.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. using Hotline.Permissions;
  2. using Hotline.Push;
  3. using Hotline.Push.FWMessage;
  4. using Hotline.Repository.SqlSugar.Extensions;
  5. using Hotline.Share.Dtos;
  6. using Hotline.Share.Dtos.Push;
  7. using Hotline.Share.Dtos.Push.FWMessage;
  8. using Hotline.Share.Enums.Push;
  9. using MapsterMapper;
  10. using Microsoft.AspNetCore.Authorization;
  11. using Microsoft.AspNetCore.Mvc;
  12. using Microsoft.IdentityModel.Tokens;
  13. using XF.Domain.Repository;
  14. using XF.Utility.EnumExtensions;
  15. namespace Hotline.Api.Controllers
  16. {
  17. public class PushMessageController : OriginController
  18. {
  19. #region 注入
  20. private readonly IRepository<Message> _messageRepository;
  21. private readonly IMapper _mapper;
  22. private readonly IPushDomainService _pushDomainService;
  23. private readonly IMessageCodeDomainService _messageCodeDomainService;
  24. /// <summary>
  25. ///
  26. /// </summary>
  27. /// <param name="messageRepository"></param>
  28. /// <param name="mapper"></param>
  29. /// <param name="pushDomainService"></param>
  30. /// <param name="messageCodeDomainService"></param>
  31. public PushMessageController(IRepository<Message> messageRepository,
  32. IMapper mapper,
  33. IPushDomainService pushDomainService,
  34. IMessageCodeDomainService messageCodeDomainService)
  35. {
  36. _messageRepository = messageRepository;
  37. _mapper = mapper;
  38. _pushDomainService = pushDomainService;
  39. _messageCodeDomainService = messageCodeDomainService;
  40. }
  41. #endregion
  42. /// <summary>
  43. /// 发送登录验证码
  44. /// </summary>
  45. /// <param name="UserName"></param>
  46. /// <returns></returns>
  47. [HttpGet("send_login_message_code")]
  48. [AllowAnonymous]
  49. public async Task<string> SendLoginMessageCode(string UserName)
  50. {
  51. return await _messageCodeDomainService.GenerateVerificationCode(UserName, HttpContext.RequestAborted);
  52. }
  53. /// <summary>
  54. /// 验证白名单
  55. /// </summary>
  56. /// <param name="UserName"></param>
  57. /// <returns></returns>
  58. [HttpGet("get_verify_whitelist")]
  59. [AllowAnonymous]
  60. public async Task<bool> VerifyWhitelist(string UserName)
  61. {
  62. return await _messageCodeDomainService.VerifyWhitelistAsync(UserName);
  63. }
  64. /// <summary>
  65. /// 修改短信状态
  66. /// </summary>
  67. /// <param name="messageDto"></param>
  68. /// <param name="cancellation"></param>
  69. /// <returns></returns>
  70. [HttpPost("update-send-sms-state")]
  71. [AllowAnonymous]
  72. public async Task UpdateSendSmsState(PushReceiveMessageDto messageDto, CancellationToken cancellation)
  73. {
  74. await _pushDomainService.PushMsgUpdateStateNewAsync(messageDto, cancellation);
  75. }
  76. //[HttpGet("checkdcode")]
  77. //public async Task CheckdCode(string UserName, string phoneNum, string Code)
  78. //{
  79. // await _messageCodeDomainService.CheckdCode(UserName, phoneNum, Code, HttpContext.RequestAborted);
  80. //}
  81. #region 新增
  82. /// <summary>
  83. /// 新增
  84. /// </summary>
  85. /// <param name="dto"></param>
  86. /// <returns></returns>
  87. [HttpPut("add")]
  88. [AllowAnonymous]
  89. public async Task AddMessage([FromBody] MessageDto dto)
  90. {
  91. // await _pushDomainService.PushAsync(dto, HttpContext.RequestAborted);
  92. await _pushDomainService.PushMsgAsync(dto, HttpContext.RequestAborted);
  93. }
  94. #endregion
  95. #region 查询短信
  96. /// <summary>
  97. /// 查询短信
  98. /// </summary>
  99. /// <param name="pagedDto"></param>
  100. /// <returns></returns>
  101. [Permission(EPermission.AllMessage)]
  102. [HttpGet("getlist")]
  103. public async Task<PagedDto<MessageDataDto>> AllMessage([FromQuery] MessagePagedDto pagedDto)
  104. {
  105. var (total, items) = await _messageRepository
  106. .Queryable()
  107. .Includes(it => it.Order)
  108. .WhereIF(pagedDto.PushBusiness.HasValue, d => d.PushBusiness == pagedDto.PushBusiness)
  109. .WhereIF(pagedDto.Status.HasValue, d => d.SendState == pagedDto.Status)
  110. .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword),
  111. d => d.Name.Contains(pagedDto.Keyword!) || d.Content.Contains(pagedDto.Keyword!) ||
  112. d.TelNumber.Contains(pagedDto.Keyword!) || d.CreatorName.Contains(pagedDto.Keyword!) ||
  113. d.CreatorOrgName.Contains(pagedDto.Keyword!))
  114. .WhereIF(pagedDto.StartTime.HasValue, d => d.SendTime >= pagedDto.StartTime)
  115. .WhereIF(pagedDto.EndTime.HasValue, d => d.SendTime <= pagedDto.EndTime)
  116. .WhereIF(!string.IsNullOrEmpty(pagedDto.UserName), d => d.Name.Contains(pagedDto.UserName))
  117. .WhereIF(!string.IsNullOrEmpty(pagedDto.TelNumber), d => d.TelNumber.Contains(pagedDto.TelNumber))
  118. .OrderByDescending(it => it.CreationTime)
  119. .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
  120. return new PagedDto<MessageDataDto>(total, _mapper.Map<IReadOnlyList<MessageDataDto>>(items));
  121. }
  122. /// <summary>
  123. /// 列表页面基础数据
  124. /// </summary>
  125. /// <returns></returns>
  126. [HttpGet("list-data")]
  127. public async Task<object> ListData()
  128. {
  129. var rsp = new
  130. {
  131. EPushBusinessData = EnumExts.GetDescriptions<EPushBusiness>(),
  132. ESendStateData = EnumExts.GetDescriptions<ESendState>()
  133. };
  134. return rsp;
  135. }
  136. #endregion
  137. }
  138. }