From 313751fcb8b9945c147cac585799b18b19628866 Mon Sep 17 00:00:00 2001 From: xiaolipro <2357729423@qq.com> Date: Thu, 9 Jan 2025 11:36:23 +0800 Subject: [PATCH] =?UTF-8?q?S06=EF=BC=9Afeat=E3=80=906.=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=8E=A8=E9=80=81=E6=98=A0=E5=B0=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B9=E3=80=90=E5=8F=AA=E6=8E=A8=E9=80=81=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=B0=E5=BD=95=E3=80=91=E3=80=91=20https:?= =?UTF-8?q?//www.tapd.cn/60863849/prong/stories/view/1160863849001041817?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/TrackPush/EditTrackPushConfigInput.cs | 5 +++++ .../TrackPush/TrackPushContentConfigDto.cs | 5 +++++ .../CAP/EventHandlers/TrackPushEventHandler.cs | 18 ++++++++++++------ .../TrackPush/TrackPushCacheService.cs | 3 +++ .../TrackPushConfigEntity.cs | 6 ++++++ .../GetTrackPushConfigDetailOutputVO.cs | 5 +++++ 6 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs index 745cdf56..e0331cb9 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs @@ -44,6 +44,11 @@ public class EditTrackPushConfigInput /// public bool? IsAllPush { get; set; } + /// + /// 是否全量推送 + /// + public bool? IsAllPushWithLatest { get; set; } + /// /// 时间格式枚举 /// diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs index 345bec99..7c1c1568 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs @@ -17,6 +17,11 @@ public class TrackPushContentConfigDto /// public bool IsAllPush { get; set; } + /// + /// 是否全量推送(最新轨迹) + /// + public bool IsAllPushWithLatest { get; set; } + /// /// 是否支持删除 /// diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 14d063bc..59a4a215 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -23,7 +23,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe private readonly IHttpClientProxy _httpClientProxy; private readonly IOptionsMonitor _options; private readonly IOrderRepository _orderRepository; - private readonly ITrackDetailsEsRepository _trackDetailsEsRepository; private readonly ITrackPushCacheService _trackPushCacheService; private readonly ITrackPushRecordEsRepository _trackPushRecordEsRepository; private List _orders = null!; @@ -31,13 +30,12 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe public TrackPushEventHandler(IHttpClientProxy httpClientProxy, IOrderRepository orderRepository, ITrackPushCacheService trackPushCacheService, - ITrackDetailsEsRepository trackDetailsEsRepository, ITrackPushRecordEsRepository trackPushRecordEsRepository, + ITrackPushRecordEsRepository trackPushRecordEsRepository, IOptionsMonitor options) { _httpClientProxy = httpClientProxy; _orderRepository = orderRepository; _trackPushCacheService = trackPushCacheService; - _trackDetailsEsRepository = trackDetailsEsRepository; _trackPushRecordEsRepository = trackPushRecordEsRepository; _options = options; } @@ -285,7 +283,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { OrderNo = log.OrderNo, }; - var dict = new Dictionary() + var cur = new Dictionary() { // 推真实的发生地和发生时间(时间是计算后的) { "location", log.TrackPlace }, @@ -297,7 +295,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { "status", config.TrackStatusValue }, { "extra", DeserializeForTextJson(extraJson) } }; - body.Data.Add(dict); + body.Data.Add(cur); if (config.IsAllPush) { @@ -305,7 +303,15 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe if (history != default) { body = DeserializeForTextJson(history.PushContent); - body!.Data.Add(dict); + if (config.IsAllPushWithLatest) + { + var last = body!.Data.Last(); + if (cur["code"] == last["code"]) + { + body.Data.Remove(last); + } + } + body!.Data.Add(cur); } } diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs index eb4c6388..5b64b496 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs @@ -51,6 +51,7 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc x.Id, x.IsAutoPush, x.IsAllPush, + x.IsAllPushWithLatest, x.IsCanDelete, x.IsCanUpdate, x.SubSystemId, @@ -76,6 +77,7 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc IsAutoPush = trackPushConfig.IsAutoPush, IsCanUpdate = trackPushConfig.IsCanUpdate, IsAllPush = trackPushConfig.IsAllPush, + IsAllPushWithLatest = trackPushConfig.IsAllPushWithLatest, IsCanDelete = trackPushConfig.IsCanDelete, DateTimeFormatType = (int) trackPushConfig.DateTimeFormatType, DateTimeFormat = trackPushConfig.DateTimeFormat, @@ -89,6 +91,7 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc TrackContentValue = item.TrackContentValue, TrackEnContentValue = item.TrackEnContentValue, TrackTimeZone = item.TrackTimeZone, + // todo:废弃字段如果没有外部子系统依赖,可以逐步删除 ExpandFieldsValue = item.ExpandFieldsValue, }).ToList(); diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs index e029921e..8dc04097 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs @@ -56,6 +56,12 @@ public class TrackPushConfigEntity : IFullAuditedBasicEntitys, IAggregateRoot [SugarColumn(ColumnName = "IsAllPush")] public bool IsAllPush { get; set; } + /// + /// 是否全量推送(最新轨迹) + /// + [SugarColumn(ColumnName = "IsAllPushWithLatest")] + public bool IsAllPushWithLatest { get; set; } + /// /// 日期时间格式类型 /// diff --git a/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigDetailOutputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigDetailOutputVO.cs index 42de155e..f8cff929 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigDetailOutputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigDetailOutputVO.cs @@ -51,6 +51,11 @@ public class GetTrackPushConfigDetailOutputVO /// public bool IsAllPush { get; set; } + /// + /// 是否全量推送(最新轨迹) + /// + public bool IsAllPushWithLatest { get; set; } + /// /// 时间格式枚举 ///