123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- using Hotline.KnowledgeBase.Notifies;
- using Hotline.KnowledgeBase;
- using Hotline.Push;
- using Hotline.Repository.SqlSugar.Extensions;
- using Hotline.Share.Dtos;
- using Hotline.Share.Dtos.Push;
- using MapsterMapper;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using MediatR;
- using Hotline.Push.Notifies;
- using Hotline.Share.Enums.Push;
- namespace Hotline.Api.Controllers
- {
- public class PushMessageController : BaseController
- {
- private readonly IMessageRepository _messageRepository;
- private readonly IMapper _mapper;
- private readonly IPushDomainService _pushDomainService;
- /// <summary>
- ///
- /// </summary>
- /// <param name="messageRepository"></param>
- /// <param name="mapper"></param>
- /// <param name="pushDomainService"></param>
- /// <param name="mediator"></param>
- public PushMessageController(IMessageRepository messageRepository, IMapper mapper, IPushDomainService pushDomainService)
- {
- _messageRepository = messageRepository;
- _mapper = mapper;
- _pushDomainService = pushDomainService;
- }
- /// <summary>
- /// 新增
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPut("add")]
- public async Task AddMessage([FromBody] MessageDto dto)
- {
- await _pushDomainService.PushAsync(dto, HttpContext.RequestAborted);
- }
- /// <summary>
- /// 查询短信剩余数量
- /// </summary>
- /// <returns></returns>
- [HttpGet("query")]
- public async Task<string> GetAccountNum()
- {
- return await _pushDomainService.GetAccountNum();
- }
- #region 短信发送状态回调接口
- /// <summary>
- /// 短信发送状态回调接口
- /// </summary>
- /// <param name="account">短信回传账号</param>
- /// <param name="pswd">短信回传密码</param>
- /// <param name="msgid">短信中心短信待发送ID,同短信发送接口返回值ID</param>
- /// <param name="sendtime">短信发送时间</param>
- /// <param name="msgcount">发送短信使用的数量</param>
- /// <param name="state">发送状态:0:未发送 1:发送中 2:发送失败 3:发送成功</param>
- /// <param name="errormsg">错误消息</param>
- /// <param name="sfid">短信中心短信已发送ID</param>
- /// <param name="telnumall">手机号码</param>
- /// <param name="sign">短信签名</param>
- /// <returns></returns>
- [HttpPost("receiveobtain")]
- [AllowAnonymous]
- public async Task<string> ReceiveObtain(string account, string pswd, string msgid, string sendtime, int msgcount, int state,
- string errormsg, int sfid, string telnumall, string sign)
- {
- ReceiveMessageDto receiveMessageDto = new()
- {
- account = account,
- pswd = pswd,
- msgid = msgid,
- sendtime = sendtime,
- msgcount = msgcount,
- state = state,
- errormsg = errormsg,
- sfid = sfid,
- telnumall = telnumall,
- sign = sign
- };
- return await _pushDomainService.ReceiveObtain(receiveMessageDto);
- }
- #endregion
- #region 短信接收
- /// <summary>
- /// 短信接收
- /// </summary>
- /// <param name="account">短信回传账号</param>
- /// <param name="pswd">短信回传密码</param>
- /// <param name="msg">回复短信内容</param>
- /// <param name="mobile">回复手机号码</param>
- /// <param name="destcode">短信接收平台号码</param>
- /// <param name="motime">回复时间</param>
- /// <param name="fsfid">短信平台回复短信ID</param>
- /// <returns></returns>
- [HttpPost("receivesms")]
- [AllowAnonymous]
- public string ReceiveSms(string account, string pswd, string msg, string mobile, string destcode, string motime, string fsfid)
- {
- // 短信回传账号:fwkj
- // 短信回传密码:fwkj12
- string strResult = "error,缺少参数";
- // 成功返回值必须是ok
- strResult = "ok";
- return strResult;
- }
- #endregion
- /// <summary>
- /// 查询短信
- /// </summary>
- /// <param name="pagedDto"></param>
- /// <returns></returns>
- [HttpGet("getlist")]
- public async Task<PagedDto<MessageDataDto>> AllMessage([FromQuery] MessagePagedDto pagedDto)
- {
- var (total, items) = await _messageRepository
- .Queryable()
- .Includes(it => it.User)
- .Includes(it => it.SystemOrganize)
- .Includes(it => it.Order)
- .WhereIF(pagedDto.PushBusiness.HasValue, d => d.PushBusiness == pagedDto.PushBusiness)
- .WhereIF(pagedDto.Status.HasValue, d => d.Status == pagedDto.Status)
- .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!))
- .WhereIF(pagedDto.StartTime.HasValue, d => d.SendTime >= pagedDto.StartTime)
- .WhereIF(pagedDto.EndTime.HasValue, d => d.SendTime <= pagedDto.EndTime)
- .OrderByDescending(it => it.CreationTime)
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
- return new PagedDto<MessageDataDto>(total, _mapper.Map<IReadOnlyList<MessageDataDto>>(items));
- }
- }
- }
|