using MapsterMapper; using MediatR; using Microsoft.AspNetCore.Http; using Sharing.Notifications.HuiJu; using Sharing.Province.Dtos.HuiJu.Send; using Sharing.Province.Extend; using Sharing.Repository.Province.Extend; using Sharing.Share.Dtos.Extend; namespace Sharing.Province.Handlers.HuiJu { /// /// 服务工单拓展信息 /// public class SubmitCaseExtendsHandler : INotificationHandler { private readonly IChannelConfigurationManager _channelConfigurationManager; private readonly PusherProvider _pusherProvider; private readonly IMapper _mapper; private readonly IReceiveCaseExtendsRepository _receiveCaseExtendsRepository; /// /// /// /// /// /// /// public SubmitCaseExtendsHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper, IReceiveCaseExtendsRepository receiveCaseExtendsRepository) { _channelConfigurationManager = channelConfigurationManager; _pusherProvider = pusherProvider; _mapper = mapper; _receiveCaseExtendsRepository = receiveCaseExtendsRepository; } /// /// 服务工单拓展信息 /// /// /// /// public async Task Handle(SubmitCaseExtendsNotification notification, CancellationToken cancellationToken) { var strOrder = notification.DataOrder; if (!string.IsNullOrEmpty(strOrder)) { var order = System.Text.Json.JsonSerializer.Deserialize(strOrder); if (order != null && order.Info != null) { var data = order.Info; var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager); var request = new SubmitCaseExtendsRequest(); //扩展信息时间处理 switch (data.FormType.ToLower()) { case "yl"://医疗表单 request.ForeachClass(data.FormMedical); break; case "zwfw"://四川政务服务网技术工单 request.ForeachClass(data.FormNetWorktec); break; case "th"://电视购物及商铺购买退换货工单 request.ForeachClass(data.FormReturnexChange); break; case "gsgl"://高速公路工单 request.ForeachClass(data.FormExpressWay); break; case "xjgg"://电视台虚假广告工单 request.ForeachClass(data.FormShamPub); break; case "swfwsq"://12366热线诉求交办 request.ForeachClass(data.FormTaxationComplaint); break; case "swfwzx"://12366热线咨询交办 request.ForeachClass(data.FormTaxationConsulting); break; case "jtfwjd"://12328服务监督 request.ForeachClass(data.FormTraffic); break; case "yzxf"://邮政业消费者申诉 request.ForeachClass(data.FormPost); break; case "hbjb"://环保举报业务 request.ForeachClass(data.FormEnvironMent); break; case "scjgj"://12315个性化表单 request.ForeachClass(data.FormMarket); break; default: break; } request.SetData(data); var response = await pusher.PushSubmitCaseExtendsAsync(request, cancellationToken); //如果推送成功修改数据状态 if (response != null) { var caseInfo = await _receiveCaseExtendsRepository.GetAsync(p => p.Id == order.Id); if (caseInfo != null) { if (response.Code == "1") caseInfo.SyncState = "1"; else caseInfo.SyncState = "2"; caseInfo.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response); await _receiveCaseExtendsRepository.UpdateAsync(caseInfo); } } } } } } }