From 9d5cad393e48e5aec9095d946c193d4cbcf0f65a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Wed, 24 Apr 2024 21:01:55 +0800 Subject: [PATCH] attach --- .../TrackPushCompletedEventHandler.cs | 15 +++- .../EventHandlers/TrackPushEventHandler.cs | 75 +++++++++++-------- 2 files changed, 57 insertions(+), 33 deletions(-) diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushCompletedEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushCompletedEventHandler.cs index cfa667a9..ce7e5f3c 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackPushCompletedEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackPushCompletedEventHandler.cs @@ -1,6 +1,7 @@ using DotNetCore.CAP; using Newtonsoft.Json; using SJZY.InterfaceRelay.Application.Contracts; +using SJZY.Track.Application.Contract.Dtos.TrackPush; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Consts; @@ -24,7 +25,19 @@ public class TrackPushCompletedEventHandler : ITransientDependency, ICapSubscrib [CapSubscribe(GlobalConst.TrackPushCompletedSubscribe, Group = GlobalConst.TrackPushSubscribe)] public async Task ConsumerAsync(InterfaceRelayForwardReplayEvent @event) { - var log = JsonConvert.DeserializeObject(@event.RequestParams); + string logStr = null; + if (@event.Attach == OptionType.新增.ToString()) + { + logStr = JsonConvert.DeserializeObject(@event.RequestParams)!.Log; + } + else if (@event.Attach == OptionType.修改.ToString()) + { + logStr = JsonConvert.DeserializeObject(@event.RequestParams)!.Log; + } + + if (logStr.IsNullOrEmpty()) throw new InvalidOperationException(); + var log = JsonConvert.DeserializeObject(logStr!); + if (log == null) throw new BusinessException(message: "轨迹推送返回结果解析异常"); log.IsSuccess = @event.IsSuccess; log.Message = @event.Message; diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs index 4eb337ba..555511d9 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs @@ -1,4 +1,5 @@ -using DotNetCore.CAP; +using System.Text; +using DotNetCore.CAP; using Newtonsoft.Json; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.InterfaceRelay.Application.Contracts; @@ -72,7 +73,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe private async Task DoPushAsync(TrackPushEvent @event) { - var logs = new List(); + var items = new List(); TrackPushContentConfigDto? config; if (@event.OperationMan == null) @@ -98,8 +99,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, CreateUser = GlobalConst.SystemUser, }; - await BuiltPushItem(config, log); - logs.Add(log); + var item = await BuiltPushItem(config, log); + item.Log = JsonConvert.SerializeObject(log); + items.Add(item); } } else //手工推送 @@ -136,13 +138,18 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe TrackTimeZone = track.TrackTimeZone, CreateUser = @event.OperationMan, }; - await BuiltPushItem(config, log); - logs.Add(log); + var item = await BuiltPushItem(config, log); + item.Log = JsonConvert.SerializeObject(log); + items.Add(item); } } + byte[] asciiBytes = Encoding.ASCII.GetBytes(OptionType.新增.ToString()); + string asciiString = Encoding.ASCII.GetString(asciiBytes); + await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(InterfaceRelayConst.PushTrackInterfaceCode, - _pushConfigs.First().ServiceProviderCode, logs, GlobalConst.TrackPushCompletedSubscribe); + _pushConfigs.First().ServiceProviderCode, items, GlobalConst.TrackPushCompletedSubscribe, + attach: asciiString); } private async Task DoUpdateAsync(TrackPushEvent @event) @@ -150,7 +157,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode); if (config == null || !config.IsCanUpdate) return; - var logs = new List(); + var items = new List(); foreach (var order in _orders) { var log = new TrackPushRecordIndex @@ -166,41 +173,43 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, CreateUser = GlobalConst.SystemUser, }; - BuiltUpdateItem(config, log); - logs.Add(log); + var item = BuiltUpdateItem(config, log); + item.Log = JsonConvert.SerializeObject(log); + items.Add(item); } await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(InterfaceRelayConst.TrackUpdateInterfaceCode, - _pushConfigs.First().ServiceProviderCode, logs, GlobalConst.TrackPushCompletedSubscribe); + _pushConfigs.First().ServiceProviderCode, items, GlobalConst.TrackPushCompletedSubscribe, + attach: OptionType.修改.ToString()); } - private void BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) + private TrackUpdateInput BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) { - var data = new + var track = new TrackItem { - orderNo = log.OrderNo, - data = new[] - { - new - { - // 推真实的发生地和发生时间 - location = log.TrackPlace, - date = log.TrackTime.AddHours( - config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone), - timeZone = config.TrackTimeZone ?? log.TrackTimeZone, - description = config.TrackEnContentValue, - description_cn = config.TrackContentValue, - code = config.TrackContentCodeValue, - status = config.TrackStatusValue, - extra = config.ExpandFieldsValue - } - } + // 推真实的发生地和发生时间(时间是计算后的) + Location = log.TrackPlace, + Date = log.TrackTime.AddHours( + config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone), + TimeZone = config.TrackTimeZone ?? log.TrackTimeZone, + Description = config.TrackEnContentValue, + DescriptionCn = config.TrackContentValue, + Code = config.TrackContentCodeValue, + Status = config.TrackStatusValue, + Extra = config.ExpandFieldsValue }; - log.PushContent = data.ToJson(); + var body = new TrackUpdateInput + { + OrderNo = log.OrderNo, + }; + body.Data.Add(track); + log.PushContent = body.ToJson(); + + return body; } - private async Task BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) + private async Task BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) { var track = new TrackItem { @@ -233,6 +242,8 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe } log.PushContent = body.ToJson(); + + return body; } ///