using Hotline.Permissions; using Hotline.Push; using Hotline.Push.FWMessage; using Hotline.Repository.SqlSugar.Extensions; using Hotline.Share.Dtos; using Hotline.Share.Dtos.Push; using Hotline.Share.Dtos.Push.FWMessage; using Hotline.Share.Enums.Push; using MapsterMapper; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; using XF.Domain.Repository; using XF.Utility.EnumExtensions; namespace Hotline.Api.Controllers { public class PushMessageController : OriginController { #region 注入 private readonly IRepository _messageRepository; private readonly IMapper _mapper; private readonly IPushDomainService _pushDomainService; private readonly IMessageCodeDomainService _messageCodeDomainService; /// /// /// /// /// /// /// public PushMessageController(IRepository messageRepository, IMapper mapper, IPushDomainService pushDomainService, IMessageCodeDomainService messageCodeDomainService) { _messageRepository = messageRepository; _mapper = mapper; _pushDomainService = pushDomainService; _messageCodeDomainService = messageCodeDomainService; } #endregion /// /// 发送登录验证码 /// /// /// [HttpGet("send_login_message_code")] [AllowAnonymous] public async Task SendLoginMessageCode(string UserName) { return await _messageCodeDomainService.GenerateVerificationCode(UserName, HttpContext.RequestAborted); } /// /// 验证白名单 /// /// /// [HttpGet("get_verify_whitelist")] [AllowAnonymous] public async Task VerifyWhitelist(string UserName) { return await _messageCodeDomainService.VerifyWhitelistAsync(UserName); } /// /// 修改短信状态 /// /// /// /// [HttpPost("update-send-sms-state")] [AllowAnonymous] public async Task UpdateSendSmsState(PushReceiveMessageDto messageDto, CancellationToken cancellation) { await _pushDomainService.PushMsgUpdateStateNewAsync(messageDto, cancellation); } //[HttpGet("checkdcode")] //public async Task CheckdCode(string UserName, string phoneNum, string Code) //{ // await _messageCodeDomainService.CheckdCode(UserName, phoneNum, Code, HttpContext.RequestAborted); //} #region 新增 /// /// 新增 /// /// /// [HttpPut("add")] [AllowAnonymous] public async Task AddMessage([FromBody] MessageDto dto) { // await _pushDomainService.PushAsync(dto, HttpContext.RequestAborted); await _pushDomainService.PushMsgAsync(dto, HttpContext.RequestAborted); } #endregion #region 查询短信 /// /// 查询短信 /// /// /// [Permission(EPermission.AllMessage)] [HttpGet("getlist")] public async Task> AllMessage([FromQuery] MessagePagedDto pagedDto) { var (total, items) = await _messageRepository .Queryable() .Includes(it => it.Order) .WhereIF(pagedDto.PushBusiness.HasValue, d => d.PushBusiness == pagedDto.PushBusiness) .WhereIF(pagedDto.Status.HasValue, d => d.SendState == pagedDto.Status) .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Name.Contains(pagedDto.Keyword!) || d.Content.Contains(pagedDto.Keyword!) || d.TelNumber.Contains(pagedDto.Keyword!) || d.CreatorName.Contains(pagedDto.Keyword!) || d.CreatorOrgName.Contains(pagedDto.Keyword!)) .WhereIF(pagedDto.StartTime.HasValue, d => d.SendTime >= pagedDto.StartTime) .WhereIF(pagedDto.EndTime.HasValue, d => d.SendTime <= pagedDto.EndTime) .WhereIF(!string.IsNullOrEmpty(pagedDto.UserName), d => d.Name.Contains(pagedDto.UserName)) .WhereIF(!string.IsNullOrEmpty(pagedDto.TelNumber), d => d.TelNumber.Contains(pagedDto.TelNumber)) .OrderByDescending(it => it.CreationTime) .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted); return new PagedDto(total, _mapper.Map>(items)); } /// /// 列表页面基础数据 /// /// [HttpGet("list-data")] public async Task ListData() { var rsp = new { EPushBusinessData = EnumExts.GetDescriptions(), ESendStateData = EnumExts.GetDescriptions() }; return rsp; } #endregion } }