SubmitCaseExtendsHandler.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. using MapsterMapper;
  2. using MediatR;
  3. using Microsoft.AspNetCore.Http;
  4. using Sharing.Notifications.HuiJu;
  5. using Sharing.Province.Dtos.HuiJu.Send;
  6. using Sharing.Province.Extend;
  7. using Sharing.Repository.Province.Extend;
  8. using Sharing.Share.Dtos.Extend;
  9. namespace Sharing.Province.Handlers.HuiJu
  10. {
  11. /// <summary>
  12. /// 服务工单拓展信息
  13. /// </summary>
  14. public class SubmitCaseExtendsHandler : INotificationHandler<SubmitCaseExtendsNotification>
  15. {
  16. private readonly IChannelConfigurationManager _channelConfigurationManager;
  17. private readonly PusherProvider _pusherProvider;
  18. private readonly IMapper _mapper;
  19. private readonly IReceiveCaseExtendsRepository _receiveCaseExtendsRepository;
  20. /// <summary>
  21. ///
  22. /// </summary>
  23. /// <param name="channelConfigurationManager"></param>
  24. /// <param name="pusherProvider"></param>
  25. /// <param name="mapper"></param>
  26. /// <param name="receiveCaseExtendsRepository"></param>
  27. public SubmitCaseExtendsHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper, IReceiveCaseExtendsRepository receiveCaseExtendsRepository)
  28. {
  29. _channelConfigurationManager = channelConfigurationManager;
  30. _pusherProvider = pusherProvider;
  31. _mapper = mapper;
  32. _receiveCaseExtendsRepository = receiveCaseExtendsRepository;
  33. }
  34. /// <summary>
  35. /// 服务工单拓展信息
  36. /// </summary>
  37. /// <param name="notification"></param>
  38. /// <param name="cancellationToken"></param>
  39. /// <returns></returns>
  40. public async Task Handle(SubmitCaseExtendsNotification notification, CancellationToken cancellationToken)
  41. {
  42. var strOrder = notification.DataOrder;
  43. if (!string.IsNullOrEmpty(strOrder))
  44. {
  45. var order = System.Text.Json.JsonSerializer.Deserialize<SubmitCaseExtendsInfoId>(strOrder);
  46. if (order != null && order.Info != null)
  47. {
  48. var data = order.Info;
  49. var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
  50. var request = new SubmitCaseExtendsRequest();
  51. //扩展信息时间处理
  52. switch (data.FormType.ToLower())
  53. {
  54. case "yl"://医疗表单
  55. request.ForeachClass(data.FormMedical);
  56. break;
  57. case "zwfw"://四川政务服务网技术工单
  58. request.ForeachClass(data.FormNetWorktec);
  59. break;
  60. case "th"://电视购物及商铺购买退换货工单
  61. request.ForeachClass(data.FormReturnexChange);
  62. break;
  63. case "gsgl"://高速公路工单
  64. request.ForeachClass(data.FormExpressWay);
  65. break;
  66. case "xjgg"://电视台虚假广告工单
  67. request.ForeachClass(data.FormShamPub);
  68. break;
  69. case "swfwsq"://12366热线诉求交办
  70. request.ForeachClass(data.FormTaxationComplaint);
  71. break;
  72. case "swfwzx"://12366热线咨询交办
  73. request.ForeachClass(data.FormTaxationConsulting);
  74. break;
  75. case "jtfwjd"://12328服务监督
  76. request.ForeachClass(data.FormTraffic);
  77. break;
  78. case "yzxf"://邮政业消费者申诉
  79. request.ForeachClass(data.FormPost);
  80. break;
  81. case "hbjb"://环保举报业务
  82. request.ForeachClass(data.FormEnvironMent);
  83. break;
  84. case "scjgj"://12315个性化表单
  85. request.ForeachClass(data.FormMarket);
  86. break;
  87. default:
  88. break;
  89. }
  90. request.SetData(data);
  91. var response = await pusher.PushSubmitCaseExtendsAsync(request, cancellationToken);
  92. //如果推送成功修改数据状态
  93. if (response != null)
  94. {
  95. var caseInfo = await _receiveCaseExtendsRepository.GetAsync(p => p.Id == order.Id);
  96. if (caseInfo != null)
  97. {
  98. if (response.Code == "1")
  99. caseInfo.SyncState = "1";
  100. else
  101. caseInfo.SyncState = "2";
  102. caseInfo.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
  103. await _receiveCaseExtendsRepository.UpdateAsync(caseInfo);
  104. }
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }