PushMessageController.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using Hotline.KnowledgeBase.Notifies;
  2. using Hotline.KnowledgeBase;
  3. using Hotline.Push;
  4. using Hotline.Repository.SqlSugar.Extensions;
  5. using Hotline.Share.Dtos;
  6. using Hotline.Share.Dtos.Push;
  7. using MapsterMapper;
  8. using Microsoft.AspNetCore.Authorization;
  9. using Microsoft.AspNetCore.Mvc;
  10. using MediatR;
  11. using Hotline.Push.Notifies;
  12. using Hotline.Share.Enums.Push;
  13. namespace Hotline.Api.Controllers
  14. {
  15. public class PushMessageController : BaseController
  16. {
  17. private readonly IMessageRepository _messageRepository;
  18. private readonly IMapper _mapper;
  19. private readonly IPushDomainService _pushDomainService;
  20. /// <summary>
  21. ///
  22. /// </summary>
  23. /// <param name="messageRepository"></param>
  24. /// <param name="mapper"></param>
  25. /// <param name="pushDomainService"></param>
  26. /// <param name="mediator"></param>
  27. public PushMessageController(IMessageRepository messageRepository, IMapper mapper, IPushDomainService pushDomainService)
  28. {
  29. _messageRepository = messageRepository;
  30. _mapper = mapper;
  31. _pushDomainService = pushDomainService;
  32. }
  33. /// <summary>
  34. /// 新增
  35. /// </summary>
  36. /// <param name="dto"></param>
  37. /// <returns></returns>
  38. [HttpPut("add")]
  39. public async Task AddMessage([FromBody] MessageDto dto)
  40. {
  41. await _pushDomainService.PushAsync(dto, HttpContext.RequestAborted);
  42. }
  43. /// <summary>
  44. /// 查询短信剩余数量
  45. /// </summary>
  46. /// <returns></returns>
  47. [HttpGet("query")]
  48. public async Task<string> GetAccountNum()
  49. {
  50. return await _pushDomainService.GetAccountNum();
  51. }
  52. #region 短信发送状态回调接口
  53. /// <summary>
  54. /// 短信发送状态回调接口
  55. /// </summary>
  56. /// <param name="account">短信回传账号</param>
  57. /// <param name="pswd">短信回传密码</param>
  58. /// <param name="msgid">短信中心短信待发送ID,同短信发送接口返回值ID</param>
  59. /// <param name="sendtime">短信发送时间</param>
  60. /// <param name="msgcount">发送短信使用的数量</param>
  61. /// <param name="state">发送状态:0:未发送 1:发送中 2:发送失败 3:发送成功</param>
  62. /// <param name="errormsg">错误消息</param>
  63. /// <param name="sfid">短信中心短信已发送ID</param>
  64. /// <param name="telnumall">手机号码</param>
  65. /// <param name="sign">短信签名</param>
  66. /// <returns></returns>
  67. [HttpPost("receiveobtain")]
  68. [AllowAnonymous]
  69. public async Task<string> ReceiveObtain(string account, string pswd, string msgid, string sendtime, int msgcount, int state,
  70. string errormsg, int sfid, string telnumall, string sign)
  71. {
  72. ReceiveMessageDto receiveMessageDto = new()
  73. {
  74. account = account,
  75. pswd = pswd,
  76. msgid = msgid,
  77. sendtime = sendtime,
  78. msgcount = msgcount,
  79. state = state,
  80. errormsg = errormsg,
  81. sfid = sfid,
  82. telnumall = telnumall,
  83. sign = sign
  84. };
  85. return await _pushDomainService.ReceiveObtain(receiveMessageDto);
  86. }
  87. #endregion
  88. #region 短信接收
  89. /// <summary>
  90. /// 短信接收
  91. /// </summary>
  92. /// <param name="account">短信回传账号</param>
  93. /// <param name="pswd">短信回传密码</param>
  94. /// <param name="msg">回复短信内容</param>
  95. /// <param name="mobile">回复手机号码</param>
  96. /// <param name="destcode">短信接收平台号码</param>
  97. /// <param name="motime">回复时间</param>
  98. /// <param name="fsfid">短信平台回复短信ID</param>
  99. /// <returns></returns>
  100. [HttpPost("receivesms")]
  101. [AllowAnonymous]
  102. public string ReceiveSms(string account, string pswd, string msg, string mobile, string destcode, string motime, string fsfid)
  103. {
  104. // 短信回传账号:fwkj
  105. // 短信回传密码:fwkj12
  106. string strResult = "error,缺少参数";
  107. // 成功返回值必须是ok
  108. strResult = "ok";
  109. return strResult;
  110. }
  111. #endregion
  112. /// <summary>
  113. /// 查询短信
  114. /// </summary>
  115. /// <param name="pagedDto"></param>
  116. /// <returns></returns>
  117. [HttpGet("getlist")]
  118. public async Task<PagedDto<MessageDataDto>> AllMessage([FromQuery] MessagePagedDto pagedDto)
  119. {
  120. var (total, items) = await _messageRepository
  121. .Queryable()
  122. .Includes(it => it.User)
  123. .Includes(it => it.SystemOrganize)
  124. .Includes(it => it.Order)
  125. .WhereIF(pagedDto.PushBusiness.HasValue, d => d.PushBusiness == pagedDto.PushBusiness)
  126. .WhereIF(pagedDto.Status.HasValue, d => d.Status == pagedDto.Status)
  127. .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Name.Contains(pagedDto.Keyword!) || d.Content.Contains(pagedDto.Keyword!) || d.TelNumber.Contains(pagedDto.Keyword!) || d.User.Name.Contains(pagedDto.Keyword!) || d.SystemOrganize.OrgName.Contains(pagedDto.Keyword!))
  128. .WhereIF(pagedDto.StartTime.HasValue, d => d.SendTime >= pagedDto.StartTime)
  129. .WhereIF(pagedDto.EndTime.HasValue, d => d.SendTime <= pagedDto.EndTime)
  130. .OrderByDescending(it => it.CreationTime)
  131. .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
  132. return new PagedDto<MessageDataDto>(total, _mapper.Map<IReadOnlyList<MessageDataDto>>(items));
  133. }
  134. }
  135. }