From 9929331063761809622542e1b24df855b316d084 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Wed, 18 Dec 2024 16:05:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=20update:=20=E8=B0=83=E6=95=B4=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E6=98=8E=E7=BB=86=E4=B8=AD=E6=89=A9=E5=B1=95=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=AD=98=E5=82=A8=E7=B1=BB=E5=9E=8B=20Dictionary=20=3D>=20string=EF=BC=8C=E6=B6=89=E5=8F=8A=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E4=BD=93=EF=BC=8CES=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProvideServices/BatchUpsertTrackInput.cs | 2 +- .../Dtos/ProvideServices/GetTrackOutput.cs | 2 +- .../Dtos/ProvideServices/UpsertTrackInput.cs | 2 +- .../Events/TrackChangeEto.cs | 2 +- .../Events/TrackPushEto.cs | 2 +- .../Events/TrackPushEvent.cs | 2 +- .../Events/TrackUpsertEvent.cs | 2 +- .../EventHandlers/TrackPushEventHandler.cs | 98 +++++++++++++++---- .../TrackDetailsIndex.cs | 2 +- .../Repositories/TrackDetailsEsRepository.cs | 1 - 10 files changed, 86 insertions(+), 29 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs index a8ced808..98bab43c 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs @@ -123,5 +123,5 @@ public class BatchUpsertTrackInput : OrderNosInfo /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs index 59a4065e..fca510a7 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs @@ -104,5 +104,5 @@ public class TrackDetail /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs index 22762d6c..dcda0b0f 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs @@ -127,5 +127,5 @@ public class UpsertTrackInput : OrderNoInfo /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs b/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs index 5f49e9ff..6319446e 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackChangeEto.cs @@ -132,5 +132,5 @@ public class TrackChangeEto /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackPushEto.cs b/src/SJZY.Track.Application.Contract/Events/TrackPushEto.cs index 3c7bdffd..01a421fe 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackPushEto.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackPushEto.cs @@ -155,5 +155,5 @@ public class TrackPushEto /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs index ea168d9d..86581528 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs @@ -73,5 +73,5 @@ public struct SystemPushStruct /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs index d08a1171..d6e2051b 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs @@ -144,7 +144,7 @@ public class TrackUpsertEvent /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } public override string ToString() { diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 0bb18a1e..6180b1bd 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using DotNetCore.CAP; using Microsoft.Extensions.Options; using Newtonsoft.Json; @@ -128,7 +129,10 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode); if (config == null) return; - var tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, @event.TrackCode); + var tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, new List() + { + @event.TrackCode + }); tracks = tracks.DistinctBy(x => x.OrderId).ToList(); // 防止重复推送 if (tracks.Count == 0) return; // 一个能推的轨迹都不存在 @@ -254,14 +258,14 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var dict = new Dictionary() { // 推真实的发生地和发生时间(时间是计算后的) - { "Location", log.TrackPlace }, - { "Date", trackDateStr }, - { "TimeZone", config.TrackTimeZone ?? log.TrackTimeZone }, - { "Description", config.TrackEnContentValue }, - { "DescriptionCn", config.TrackContentValue }, - { "Code", config.TrackContentCodeValue }, - { "Status", config.TrackStatusValue }, - { "Extra", config.ExpandFieldsValue } + // { "location", log.TrackPlace }, + // { "date", trackDateStr }, + // { "timeZone", config.TrackTimeZone ?? log.TrackTimeZone }, + // { "description", config.TrackEnContentValue }, + // { "descriptionCn", config.TrackContentValue }, + // { "code", config.TrackContentCodeValue }, + // { "status", config.TrackStatusValue }, + // { "extra", config.ExpandFieldsValue } }; body.Data.Add(dict); log.PushContent = body.ToJson(); @@ -293,15 +297,15 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe }; var dict = new Dictionary() { - // 推真实的发生地和发生时间(时间是计算后的) - { "Location", log.TrackPlace }, - { "Date", trackDateStr }, - { "TimeZone", config.TrackTimeZone ?? log.TrackTimeZone }, - { "Description", config.TrackEnContentValue }, - { "DescriptionCn", config.TrackContentValue }, - { "Code", config.TrackContentCodeValue }, - { "Status", config.TrackStatusValue }, - { "Extra", config.ExpandFieldsValue } + // // 推真实的发生地和发生时间(时间是计算后的) + // { "location", log.TrackPlace }, + // { "date", trackDateStr }, + // { "timeZone", config.TrackTimeZone ?? log.TrackTimeZone }, + // { "description", config.TrackEnContentValue }, + // { "descriptionCn", config.TrackContentValue }, + // { "code", config.TrackContentCodeValue }, + // { "status", config.TrackStatusValue }, + // { "extra", config.ExpandFieldsValue } }; body.Data.Add(dict); @@ -395,12 +399,16 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe /// 要扩展的参数字典 /// 来源扩展字段的参数名 /// - private void FillExtraParam(Dictionary? trackExtra, Dictionary? dict, List? paramNames) + private void FillExtraParam(string? trackExtraStr, Dictionary? dict, List? paramNames) { if (paramNames == null || paramNames.Count == 0) return; if (dict == null) return; - if (trackExtra == null || trackExtra.Count == 0) return; + if (string.IsNullOrWhiteSpace(trackExtraStr)) return; + + var trackExtra = ExtractTrackExtraDict(trackExtraStr); + + if (trackExtra.Count == 0) return; foreach (var item in trackExtra.Where(x => x.Value != null && paramNames.Contains(x.Key))) { @@ -408,4 +416,54 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe } } + + private Dictionary ExtractTrackExtraDict(string trackExtraStr) + { + var dict = new Dictionary(); + var trackExtra = JsonConvert.DeserializeObject>(trackExtraStr); + if (trackExtra == null) return dict; + foreach (var pair in trackExtra) + { + if (pair.Value is JsonElement jEl) + { + object? objVal = null; + switch (jEl.ValueKind) + { + case JsonValueKind.String: + objVal = jEl.GetString(); + // 处理字符串值 + break; + case JsonValueKind.Number: + objVal = jEl.GetDouble(); + // 处理数值 + break; + case JsonValueKind.True: + case JsonValueKind.False: + objVal = jEl.GetBoolean(); + // 处理布尔值 + break; + case JsonValueKind.Object: + // 处理对象 + break; + case JsonValueKind.Array: + // 处理数组 + break; + case JsonValueKind.Null: + // 处理空值 + break; + default: + // 处理未知类型 + break; + } + + if (objVal == null) continue; + dict.TryAdd(pair.Key, objVal); + continue; + } + + dict.TryAdd(pair.Key, pair.Value); + } + + return dict; + } } diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs index 60eed6a3..02cb6b51 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs @@ -190,5 +190,5 @@ public class TrackDetailsIndex : IdBaseIndex /// /// 扩展信息字段,用与轨迹推送的附加字段 /// - public Dictionary? Extra { get; set; } + public string? Extra { get; set; } } diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs index e25c9b89..f0c8f048 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsEsRepository.cs @@ -3,7 +3,6 @@ using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Expand.ElasticSearch.Services; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Consts; -using SJZY.Track.Domain.Dtos.TrackContents; using SJZY.Track.Domain.Enums; namespace SJZY.Track.Repository.Repositories; From 51860d85297edb72f7010107a0cb74750aa0599b Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Wed, 18 Dec 2024 16:18:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?update:=20=E6=96=B0=E5=A2=9E/=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=BD=A8=E8=BF=B9=E8=AE=A2=E5=8D=95=EF=BC=8C=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E6=A8=A1=E6=9D=BFcode=E5=85=81=E8=AE=B8=E4=BC=A0null?= =?UTF-8?q?=20pkg-update:=20=E5=8D=87=E7=BA=A7=E5=A5=91=E7=BA=A6=E5=8C=85?= =?UTF-8?q?=E7=89=88=E6=9C=AC=207.0.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/ProvideServices/UpdateOrderInput.cs | 2 +- .../SJZY.Track.Application.Contract.csproj | 2 +- .../Services/ProvideServices/OrderService.cs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs index d9d6d235..a37ab135 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs @@ -81,7 +81,7 @@ public class UpdateOrderInput : OrderNoInfo /// /// 模板code /// - public List TemplateCodes { get; set; } + public List? TemplateCodes { get; set; } } public class PullConfigInfo diff --git a/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj b/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj index f8a1ce47..4782626f 100644 --- a/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj +++ b/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj @@ -5,7 +5,7 @@ net7.0 True - 7.0.5 + 7.0.7 True diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs index d529f83d..ed613ffb 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs @@ -76,7 +76,7 @@ public partial class OrderService : ApplicationService, IOrderService order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos); order.OrderPullStatus = BuiltOrderPullStatus(input.PullConfigInfos); order.OrderPlatformNumbers = BuiltOrderPlatformNumbers(input.PullConfigInfos); - order.TemplateCodes = string.Join(',', input.TemplateCodes); + order.TemplateCodes = input.TemplateCodes == null ? null : string.Join(',', input.TemplateCodes); var orderId = await _orderRepository.CreateOrderAsync(order); @@ -131,7 +131,7 @@ public partial class OrderService : ApplicationService, IOrderService order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos); order.OrderPullStatus = BuiltOrderPullStatus(input.PullConfigInfos); order.OrderPlatformNumbers = BuiltOrderPlatformNumbers(input.PullConfigInfos); - order.TemplateCodes = string.Join(',', input.TemplateCodes); + order.TemplateCodes = input.TemplateCodes == null ? null : string.Join(',', input.TemplateCodes); await _orderRepository.UpdateOrderAsync(order); }