From 283375a3ab07a63966ae7bc65e69ad87ab452147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Thu, 21 Nov 2024 12:00:54 +0800 Subject: [PATCH 1/4] =?UTF-8?q?update:=20=E8=B0=83=E6=95=B4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E9=80=9A=E5=9B=9E=E4=BC=A0=E8=BD=A8=E8=BF=B9=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E5=A4=96=E9=83=A8=E5=8D=95=E5=8F=B7=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E4=B8=BB=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Rabbit/TrackRefreshEventHandler.cs | 26 ++++++++--------- .../OrderAggregate/IOrderRepository.cs | 8 ++++++ .../Repositories/OrderRepository.cs | 28 +++++++++++++++++++ 3 files changed, 49 insertions(+), 13 deletions(-) diff --git a/src/SJZY.Track.Application/Rabbit/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/Rabbit/TrackRefreshEventHandler.cs index 88cc1ad0..8afa7705 100644 --- a/src/SJZY.Track.Application/Rabbit/TrackRefreshEventHandler.cs +++ b/src/SJZY.Track.Application/Rabbit/TrackRefreshEventHandler.cs @@ -41,10 +41,10 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler public ConsumeOptions Options() { - return new ConsumeOptions() - { - Queue = GlobalConst.TrackRefreshSubscribe, - }; + return new ConsumeOptions() + { + Queue = GlobalConst.TrackRefreshSubscribe, + }; } public async Task Handle(IServiceProvider sp, BasicDeliverEventArgs args, ConsumeOptions options) @@ -110,18 +110,18 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler var trackToken = orderToken.SelectToken(paramConfig.TrackDetailsPath); if (trackToken is null) return; - var order = await _orderRepository.GetFirstAsync(x => - x.SubSystemId == attach.SubSystemId && x.OrderType == attach.OrderType && x.OrderNo == orderNo, - x => new - { - x.Id, - x.CustomId - }); - if (order == default) return; + //回传单号可能是主单也可能是外部单号 + //通过平台code和(外部单号/主单号)查询主单 + var order = await _orderRepository.GetTrackOrderByProviderAndOrderNo(attach.ServiceProviderCode, orderNo!); + if (order == default) + { + _logger.LogError($"请求id: {attach.ToJson()},轨迹消费失败,找不到主单,平台code:{attach.ServiceProviderCode},单号:{orderNo}"); + return; + } var context = new TrackRefreshContext { - OrderId = order.Id, + OrderId = order.MainOrderId, OrderType = attach.OrderType, OrderNo = orderNo!, ServiceProviderCode = attach.ServiceProviderCode, diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs index ae172fc0..96be07a4 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs @@ -12,6 +12,14 @@ public interface IOrderRepository : IBasicRepository /// Task> GetTrackOrderPagedList(GetPageTrackOrderInputVO input); + /// + /// 通过三方平台和三方单号查询订单 + /// + /// 三方平台 + /// 三方平台单号 + /// (主单号id,客户id) + Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo); + /// /// 创建订单 /// diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs index 0e046330..53f6c327 100644 --- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs @@ -58,6 +58,34 @@ public class OrderRepository : BasicRepository, IOrderRepository, I return pageList; } + public async Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo) + { + var orderList = await Context.Queryable() + .LeftJoin((a, b) => a.Id == b.OrderId && b.IsDeleted) + .Where((a, b) => a.OrderNo == orderNo + || (b.Platform == serviceProvidrCode && b.OrderNumber == orderNo)) + .Select((a, b) => new + { + a.Id, + a.CustomId, + b.Platform, + b.OrderNumber + }) + .ToListAsync(); + + if (orderList.Count == 0) + { + return default; + } + + var order = orderList.First(); + //当出现了多条记录匹配,优先使用外部单匹配提升精确度 + var matchOrder = orderList.FirstOrDefault(x => x.Platform == serviceProvidrCode && x.OrderNumber == orderNo); + return matchOrder != null + ? (matchOrder.Id, matchOrder.CustomId) + : (order.Id, order.CustomId); + } + public async Task CreateOrderAsync(OrderEntity order) { using var tran = TransactionHelper.GetReadCommitted(); From c5903e525a3c35c9aa759ec21be690e455b33d0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Thu, 21 Nov 2024 14:48:37 +0800 Subject: [PATCH 2/4] =?UTF-8?q?update:=E8=B0=83=E6=95=B4=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E4=B8=AD=E8=BD=A8=E8=BF=B9=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=BB=A5=E8=BE=93=E5=85=A5=E7=9A=84=E4=B8=BA=E5=87=86=EF=BC=8C?= =?UTF-8?q?=E8=8B=A5=E4=B8=BA=E7=A9=BA=E5=88=99=E5=8F=96=E5=AF=B9=E5=BA=94?= =?UTF-8?q?code=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CAP/EventHandlers/TrackUpsertEventHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index c53fb367..30feeffa 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -357,8 +357,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe //来源轨迹内容,第一次新增的时候使用轨迹内容表提供的 TrackStatus = trackContent.TrackStatus, TrackStatusCode = trackContent.TrackStatusCode, - TrackContent = trackContent.TrackContent, - TrackEnContent = trackContent.TrackEnContent, + TrackContent = @event.Content?? trackContent.TrackContent, + TrackEnContent = @event.EnStatus?? trackContent.TrackEnContent, //S06新增轨迹明细字段 IsVisibility = @event.IsVisibility, Source = @event.Source, From b0e8b8ec56977edb78d133e6efd1730904caea16 Mon Sep 17 00:00:00 2001 From: eli Date: Thu, 21 Nov 2024 15:56:36 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=E5=B1=95=E7=A4=BA=E8=8A=82=E7=82=B9?= =?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AF=E4=B8=8D=E5=B1=95=E7=A4=BA=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/TrackOrders/TrackOrderService.cs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs index 42e67fe3..c846c6c3 100644 --- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs @@ -242,20 +242,15 @@ public class TrackOrderService : ApplicationService { var eddUnixTimestamp = order.EstimatedDeliveryDate.HasValue ? ToUnixTimestamp(DateTime.Parse(order.EstimatedDeliveryDate.ToString()!)) : 0; - //订单没有预计签收时间,或者订单上有预计签收事件,且预计到达时间大于时间轴上所有轨迹内容的发生时间,则显示签收节点 - if (eddUnixTimestamp == 0 || (eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime < eddUnixTimestamp))) + res.Data.Add(new GetDetailTimelineOutput() { - res.Data.Add(new GetDetailTimelineOutput() - { - Content = "签收", - IsHighlight = false, - TrackTimeZone = order.EstimatedDeliveryDate.HasValue ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "", - TrackTime = eddUnixTimestamp, - TrackTimePrefix = order.EstimatedDeliveryDate.HasValue ? "预计签收时间:" : "", - }); - } + Content = "签收", + IsHighlight = false, + TrackTimeZone = order.EstimatedDeliveryDate.HasValue ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "", + TrackTime = eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime > eddUnixTimestamp) ? eddUnixTimestamp : 0, + TrackTimePrefix = order.EstimatedDeliveryDate.HasValue ? "预计签收时间:" : "", + }); } - return res; } From d4c5c84779d0f5cfd7e9ac742689807781c6a4de Mon Sep 17 00:00:00 2001 From: eli Date: Thu, 21 Nov 2024 16:28:54 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=E6=97=B6=E9=97=B4=E8=BD=B4=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=97=B6=E9=97=B4=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/TrackOrders/TrackOrderService.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs index c846c6c3..f57dc80c 100644 --- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs @@ -175,7 +175,7 @@ public class TrackOrderService : ApplicationService /// /// /// - [HttpPost("GetDetailTimeline")] + [HttpPost("GetDetailTimeline")] public async Task>> GetDetailTimeline(GetDetailTimelineInput input) { var res = new UnifyResultDto>(true); @@ -242,15 +242,17 @@ public class TrackOrderService : ApplicationService { var eddUnixTimestamp = order.EstimatedDeliveryDate.HasValue ? ToUnixTimestamp(DateTime.Parse(order.EstimatedDeliveryDate.ToString()!)) : 0; + var isShowTime = eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime < eddUnixTimestamp); res.Data.Add(new GetDetailTimelineOutput() { Content = "签收", IsHighlight = false, - TrackTimeZone = order.EstimatedDeliveryDate.HasValue ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "", - TrackTime = eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime > eddUnixTimestamp) ? eddUnixTimestamp : 0, - TrackTimePrefix = order.EstimatedDeliveryDate.HasValue ? "预计签收时间:" : "", + TrackTimeZone = isShowTime ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "", + TrackTime = isShowTime ? eddUnixTimestamp : 0, + TrackTimePrefix = isShowTime ? "预计签收时间:" : "", }); } + return res; }