SendCaseInfoHandler.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using MapsterMapper;
  2. using MediatR;
  3. using Sharing.Notifications.XieTong;
  4. using Sharing.Province.Dtos.XieTong.Send;
  5. using Sharing.Province.XieTong.Send;
  6. namespace Sharing.Province.Handlers.XieTong
  7. {
  8. /// <summary>
  9. /// 服务工单上报
  10. /// </summary>
  11. public class SendCaseInfoHandler : INotificationHandler<SendCaseInfoNotification>
  12. {
  13. private readonly IChannelConfigurationManager _channelConfigurationManager;
  14. private readonly PusherProvider _pusherProvider;
  15. private readonly IMapper _mapper;
  16. private readonly ISendCaseInfoRepository _sendCaseInfoRepository;
  17. /// <summary>
  18. ///
  19. /// </summary>
  20. /// <param name="channelConfigurationManager"></param>
  21. /// <param name="pusherProvider"></param>
  22. /// <param name="mapper"></param>
  23. /// <param name="sendCaseInfoRepository"></param>
  24. public SendCaseInfoHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
  25. , ISendCaseInfoRepository sendCaseInfoRepository)
  26. {
  27. _channelConfigurationManager = channelConfigurationManager;
  28. _pusherProvider = pusherProvider;
  29. _mapper = mapper;
  30. _sendCaseInfoRepository = sendCaseInfoRepository;
  31. }
  32. /// <summary>
  33. /// 服务工单上报
  34. /// </summary>
  35. /// <param name="notification"></param>
  36. /// <param name="cancellationToken"></param>
  37. /// <returns></returns>
  38. public async Task Handle(SendCaseInfoNotification notification, CancellationToken cancellationToken = default)
  39. {
  40. var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
  41. var dataReceive = _mapper.Map<SendCaseInfoInfo>(notification.Data);
  42. var request = new SendCaseInfoRequest();
  43. request.SetData(dataReceive);
  44. var response = await pusher.PushSendCaseInfoAsync(request, cancellationToken);
  45. //如果推送成功修改数据状态
  46. if (response != null)
  47. {
  48. if (response.Code == "1")
  49. notification.Data.SyncState = "1";
  50. else
  51. notification.Data.SyncState = "2";
  52. notification.Data.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
  53. await _sendCaseInfoRepository.UpdateAsync(notification.Data);
  54. }
  55. }
  56. }
  57. }