From ba5bf2493189974c71d844adcb15a77079f9aa09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Tue, 16 Apr 2024 15:28:29 +0800 Subject: [PATCH] =?UTF-8?q?opt=EF=BC=9A=E8=BD=A8=E8=BF=B9upsert=E5=89=AA?= =?UTF-8?q?=E6=9E=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EventHandlers/TrackUpsertEventHandler.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs index 8fdc61bc..a162428a 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs @@ -39,10 +39,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe return; } - await HandleTrackAsync(@event); + var canNextOrderIds = new List(); + await HandleTrackAsync(@event, canNextOrderIds); // 根据订单关联关系异步向下刷(异步) - var linkedOrders = await _orderRepository.GetLinkedOrdersAsync(orderIds); + var linkedOrders = await _orderRepository.GetLinkedOrdersAsync(canNextOrderIds.ToArray()); foreach (var order in @event.OrderIdentifiers) { // 理论上小包在这不会分组 @@ -88,7 +89,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe } } - private async Task HandleTrackAsync(TrackUpsertEvent @event) + private async Task HandleTrackAsync(TrackUpsertEvent @event, List canNextOrderIds) { var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray(); var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode); @@ -101,8 +102,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe if (@event.IsAdd != null) { - if (track == null && !@event.IsAdd!.Value) return; // 不存在不让改 - if (track != null && @event.IsAdd!.Value) return; // 存在不让创建 + if (track == null && !@event.IsAdd!.Value) continue; // 不存在不让改 + if (track != null && @event.IsAdd!.Value) continue; // 存在不让创建 } if (track == default) @@ -167,6 +168,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe }; await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent); + + canNextOrderIds.Add(order.OrderId); } var firstTrack = insertTracks.FirstOrDefault();