OrderVisitSmsHandler.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using DotNetCore.CAP;
  2. using Hotline.Orders;
  3. using Hotline.Push.FWMessage;
  4. using Hotline.Push.Notifies;
  5. using Hotline.Share.Dtos.Push;
  6. using Hotline.Share.Enums.Push;
  7. using Hotline.Share.Mq;
  8. using MediatR;
  9. using XF.Domain.Dependency;
  10. using XF.Domain.Repository;
  11. namespace Hotline.Application.Orders.Handlers.OrderHandler;
  12. public class OrderVisitSmsHandler : INotificationHandler<ReceiveMessageNotify>
  13. {
  14. private readonly IOrderVisitDomainService _orderVisitDomainService;
  15. private readonly IRepository<Message> _messageRepository;
  16. public OrderVisitSmsHandler(IOrderVisitDomainService orderVisitDomainService, IRepository<Message> messageRepository)
  17. {
  18. _orderVisitDomainService = orderVisitDomainService;
  19. _messageRepository = messageRepository;
  20. }
  21. public async Task Handle(ReceiveMessageNotify notification, CancellationToken cancellationToken)
  22. {
  23. if (notification.NotifyDto.Type != "2") return;
  24. var msg = await _messageRepository
  25. .Queryable()
  26. .Where(m => m.TelNumber == notification.NotifyDto.TelNumber)
  27. .Where(m => m.PushBusiness == EPushBusiness.VisitSms || m.PushBusiness == EPushBusiness.SearchSms)
  28. .Where(m => m.SendState == ESendState.Success)
  29. .OrderByDescending(m => m.CreationTime)
  30. .FirstAsync();
  31. if (msg.SendTime!.Value.AddDays(2) < DateTime.Now) return;
  32. await _orderVisitDomainService.UpdateSmsReplyAsync(notification.NotifyDto);
  33. }
  34. }
  35. public class OrderVisitSmsDelay : ICapSubscribe, ITransientDependency
  36. {
  37. private readonly IOrderVisitDomainService _orderVisitDomainService;
  38. public OrderVisitSmsDelay(IOrderVisitDomainService orderVisitDomainService)
  39. {
  40. _orderVisitDomainService = orderVisitDomainService;
  41. }
  42. /// <summary>
  43. /// 超过48小时未回复短信,修改短信回访记录为默认满意
  44. /// </summary>
  45. /// <param name="dto"></param>
  46. /// <returns></returns>
  47. [CapSubscribe(EventNames.UpdateVisitDelaySms)]
  48. public async Task UpdateVisitDelaySms(MessageDto dto)
  49. {
  50. await _orderVisitDomainService.UpdateSmsReplyDefaultAsync(dto);
  51. }
  52. }