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/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/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.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/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.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);
}
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;