diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 8ac75e98..32987bb0 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -101,7 +101,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe foreach (var order in _orders) { if (order.QuestionType == (int) TrackProblemType.Error) continue; // 系统不推异常单,只能人工操作 - // 强制推送只需直接查出配置 + // 强制推送只需直接查出配置 if (@event.ForcedPush) config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode); // 推送新增,需要根据上一次的推送 推断 本次推送 是否可行,为了约束顺序 @@ -134,27 +134,14 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe items.Add(item); } } - else //手工推送 + // 手工或强制推送,不会校验已推和顺序问题,因为可能是更新 + else { config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode); if (config == null) return; - //使用事件参数传递要推送的轨迹 - await ManualPushV2Async(@event, items, config); - goto Push; - var tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, @event.TrackCode); - - // tips:人工推送只要能推就推了,不会校验已推和顺序问题,因为可能是更新 foreach (var order in _orders) { - //取订单的下某个code的最新创建时间的轨迹 防止重复推送 - var track = tracks - .Where(x => x.OrderId == order.Id && x.TrackCode == @event.TrackCode) - .OrderByDescending(x => x.CreateTime) - .FirstOrDefault(); - - if (track == null) return; // 一个能推的轨迹都不存在 - if (config is { IsAllPush: true }) { // 强制推送只需直接查出配置 @@ -173,26 +160,25 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var log = new TrackPushRecordIndex { OptionType = @event.OptionType.ToString(), - OrderId = track.OrderId, + OrderId = order.Id, OrderNo = order.OrderNo, - TrackStatus = track.TrackStatus, + TrackStatus = @event.SystemPushInfo.TrackStatus, TrackCode = @event.TrackCode, - TrackContent = track.TrackContent, - TrackPlace = track.TrackPlace, - TrackTime = track.TrackTime, - TrackTimeZone = track.TrackTimeZone, + TrackContent = @event.SystemPushInfo.TrackContent, + TrackPlace = @event.SystemPushInfo.TrackPlace, + TrackTime = @event.SystemPushInfo.TrackTime, + TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, CreateUser = @event.OperationMan, SubSystemCode = @event.SubSystemCode, IsToMq = @event.IsToMq, - Extra = track.Extra + Extra = @event.SystemPushInfo.Extra }; - var item = await BuiltPushItem(config, log, track.Extra); + var item = await BuiltPushItem(config, log, @event.SystemPushInfo.Extra); item.Log = JsonConvert.SerializeObject(log); items.Add(item); } } - Push: if (items.Count == 0) return; using (Track2InterfaceRelaySubSystemContext.Use( @@ -211,48 +197,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe } } - private async Task ManualPushV2Async(TrackPushEvent @event, List items, TrackPushContentConfigDto? config) - { - // tips:人工推送只要能推就推了,不会校验已推和顺序问题,因为可能是更新 - foreach (var order in _orders) - { - if (config is { IsAllPush: true }) - { - // 强制推送只需直接查出配置 - if (@event.ForcedPush) - config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode); - // 推断 本次推送 是否可行 - else - config = GetValidPushConfigAsync(_pushConfigs, order.LatestPushTrackCode, @event.TrackCode); - } - - if (config == null) continue; - - //配置的类型如何和订单类型不一致则不允许推送 - if (config.OrderType != order.OrderType) continue; - - var log = new TrackPushRecordIndex - { - OptionType = @event.OptionType.ToString(), - OrderId = order.Id, - OrderNo = order.OrderNo, - TrackStatus = @event.SystemPushInfo.TrackStatus, - TrackCode = @event.TrackCode, - TrackContent = @event.SystemPushInfo.TrackContent, - TrackPlace = @event.SystemPushInfo.TrackPlace, - TrackTime = @event.SystemPushInfo.TrackTime, - TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, - CreateUser = @event.OperationMan, - SubSystemCode = @event.SubSystemCode, - IsToMq = @event.IsToMq, - Extra = @event.SystemPushInfo.Extra - }; - var item = await BuiltPushItem(config, log, @event.SystemPushInfo.Extra); - item.Log = JsonConvert.SerializeObject(log); - items.Add(item); - } - } - private async Task DoUpdateAsync(TrackPushEvent @event) { var config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode); @@ -372,11 +316,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe /// 根据轨迹代码推断下一个(升序)要推送的内容,如果找不到或者已经是最后一个了 /// 则查询有没有可交换的推送,没有就返回null /// - /// - /// - /// - /// - TrackPushContentConfigDto? GetValidPushConfigAsync(List cache, + private static TrackPushContentConfigDto? GetValidPushConfigAsync(List cache, string? latestPushTrackCode, string? trackCode) { var idx = cache.FindIndex(x => x.TrackCode == latestPushTrackCode); @@ -396,11 +336,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe /// /// 转换推送时间格式 /// - /// - /// - /// - /// - private string DateTimeFormat(DateTime dateTime, double timezone, TrackPushContentConfigDto config) + private static string DateTimeFormat(DateTime dateTime, double timezone, TrackPushContentConfigDto config) { if (config.DateTimeFormatType == (int) DateTimeFormatEnum.Timestamp) return DateTimeHelper.ConvertToUnixTimestamp(dateTime).ToString(); @@ -417,12 +353,12 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe return dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffK"); } - private string SerializeForTextJson(object? obj) + private static string SerializeForTextJson(object? obj) { return obj == null ? string.Empty : System.Text.Json.JsonSerializer.Serialize(obj); } - private T? DeserializeForTextJson(string? json) + private static T? DeserializeForTextJson(string? json) { return string.IsNullOrWhiteSpace(json) ? default : System.Text.Json.JsonSerializer.Deserialize(json); }