AddOrderPushMessageNotifyHandler.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using DotNetCore.CAP;
  2. using Hotline.Orders;
  3. using Hotline.Orders.Notifications;
  4. using Hotline.Push.Notifies;
  5. using Hotline.Share.Enums.Push;
  6. using MediatR;
  7. using Microsoft.Extensions.Logging;
  8. namespace Hotline.Application.Orders.Handlers.OrderHandler
  9. {
  10. /// <summary>
  11. /// 新增工单发送短信
  12. /// </summary>
  13. public class AddOrderPushMessageNotifyHandler : INotificationHandler<AddOrderNotify>
  14. {
  15. private readonly ICapPublisher _capPublisher;
  16. private readonly ILogger<AddOrderPushMessageNotifyHandler> _logger;
  17. private readonly IMediator _mediator;
  18. private readonly IOrderRepository _orderRepository;
  19. public AddOrderPushMessageNotifyHandler(ICapPublisher capPublisher,
  20. ILogger<AddOrderPushMessageNotifyHandler> logger,
  21. IMediator mediator,
  22. IOrderRepository orderRepository)
  23. {
  24. _capPublisher = capPublisher;
  25. _logger = logger;
  26. _mediator = mediator;
  27. _orderRepository = orderRepository;
  28. }
  29. /// <summary>
  30. ///
  31. /// </summary>
  32. /// <param name="notification"></param>
  33. /// <param name="cancellationToken"></param>
  34. /// <returns></returns>
  35. public async Task Handle(AddOrderNotify notification, CancellationToken cancellationToken)
  36. {
  37. try
  38. {
  39. if (notification.Order.AcceptSms && !notification.Order.SmsSended)
  40. {
  41. var order = notification.Order;
  42. if (order != null && order.AcceptSms)
  43. {
  44. _logger.LogInformation($"推送短信: orderNo: {order.No}");
  45. var messageDto = new Share.Dtos.Push.MessageDto
  46. {
  47. PushBusiness = EPushBusiness.OrderAccept,
  48. ExternalId = order.Id,
  49. OrderId = order.Id,
  50. PushPlatform = EPushPlatform.Sms,
  51. Remark = order.Title,
  52. Name = order.FromName,
  53. TemplateCode = "1005",
  54. Params = new List<string>() { order.No, order.Password },
  55. TelNumber = order.Contact,
  56. };
  57. await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
  58. order.SmsSended = true;
  59. _orderRepository.Updateable(order).UpdateColumns(p => p.SmsSended).ExecuteCommand();
  60. }
  61. }
  62. }
  63. catch (Exception e)
  64. {
  65. _logger.LogError("新增工单发送短信失败,Error:{err}", e.Message);
  66. }
  67. }
  68. }
  69. }