|
@@ -0,0 +1,62 @@
|
|
|
+using MapsterMapper;
|
|
|
+using MediatR;
|
|
|
+using Sharing.Notifications.XieTong;
|
|
|
+using Sharing.Province.Dtos.XieTong.Send;
|
|
|
+using Sharing.Province.XieTong.Send;
|
|
|
+
|
|
|
+namespace Sharing.Province.Handlers.XieTong
|
|
|
+{
|
|
|
+ public class ScreenCaseInfoSendHandler : INotificationHandler<ScreenCaseInfoSendNotification>
|
|
|
+ {
|
|
|
+ private readonly IChannelConfigurationManager _channelConfigurationManager;
|
|
|
+ private readonly PusherProvider _pusherProvider;
|
|
|
+ private readonly IMapper _mapper;
|
|
|
+ private readonly IScreenCaseInfoSendRepository _screenCaseInfoSendRepository;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ ///
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="channelConfigurationManager"></param>
|
|
|
+ /// <param name="pusherProvider"></param>
|
|
|
+ /// <param name="mapper"></param>
|
|
|
+ /// <param name="screenCaseInfoSendRepository"></param>
|
|
|
+ public ScreenCaseInfoSendHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
|
|
|
+ , IScreenCaseInfoSendRepository screenCaseInfoSendRepository)
|
|
|
+ {
|
|
|
+ _channelConfigurationManager = channelConfigurationManager;
|
|
|
+ _pusherProvider = pusherProvider;
|
|
|
+ _mapper = mapper;
|
|
|
+ _screenCaseInfoSendRepository = screenCaseInfoSendRepository;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 服务工单申请延时
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="notification"></param>
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task Handle(ScreenCaseInfoSendNotification notification, CancellationToken cancellationToken = default)
|
|
|
+ {
|
|
|
+ var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
|
|
|
+
|
|
|
+ var dataReceive = _mapper.Map<ScreenCaseInfoSendInfo>(notification.Data);
|
|
|
+
|
|
|
+ var request = new ScreenCaseInfoSendRequest();
|
|
|
+ request.SetData(dataReceive);
|
|
|
+
|
|
|
+ var response = await pusher.PushScreenCaseInfoSendAsync(request, cancellationToken);
|
|
|
+
|
|
|
+ //如果推送成功修改数据状态
|
|
|
+ if (response != null)
|
|
|
+ {
|
|
|
+ if (response.Code == "1")
|
|
|
+ notification.Data.SyncState = "1";
|
|
|
+ else
|
|
|
+ notification.Data.SyncState = "2";
|
|
|
+
|
|
|
+ notification.Data.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
|
|
|
+ await _screenCaseInfoSendRepository.UpdateAsync(notification.Data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|