Merge branch 'S06' into test
This commit is contained in:
commit
503d4f470e
@ -74,27 +74,25 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
case OptionType.无:
|
||||
return;
|
||||
case OptionType.新增:
|
||||
//获取接口参数名称,稍后将用于轨迹扩展字段提取填充请求
|
||||
var paramsNames1 = await GetExtraParamNamesAsync(@event.SubSystemCode);
|
||||
await DoPushAsync(@event, paramsNames1);
|
||||
await DoPushAsync(@event);
|
||||
break;
|
||||
case OptionType.删除:
|
||||
break;
|
||||
case OptionType.修改:
|
||||
//获取接口参数名称,稍后将用于轨迹扩展字段提取填充请求
|
||||
var paramsNames2 = await GetExtraParamNamesAsync(@event.SubSystemCode);
|
||||
await DoUpdateAsync(@event, paramsNames2);
|
||||
await DoUpdateAsync(@event);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DoPushAsync(TrackPushEvent @event, List<string> paramNames)
|
||||
private async Task DoPushAsync(TrackPushEvent @event)
|
||||
{
|
||||
var items = new List<object>();
|
||||
var items = new List<TrackPushInput>();
|
||||
TrackPushContentConfigDto? config;
|
||||
if (@event.OperationMan == null)
|
||||
var isSystemPush = @event.OperationMan == null;
|
||||
var trackPushInputDict = new Dictionary<TrackPushInput, TrackDetailsIndex>();
|
||||
if (isSystemPush)
|
||||
{
|
||||
foreach (var order in _orders)
|
||||
{
|
||||
@ -120,8 +118,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
};
|
||||
var item = await BuiltPushItem(config, log);
|
||||
item.Log = JsonConvert.SerializeObject(log);
|
||||
//根据轨迹扩展内容填充
|
||||
item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames));
|
||||
items.Add(item);
|
||||
}
|
||||
}
|
||||
@ -130,10 +126,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode);
|
||||
if (config == null) return;
|
||||
|
||||
var tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, new List<string>()
|
||||
{
|
||||
@event.TrackCode
|
||||
});
|
||||
var tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, @event.TrackCode);
|
||||
tracks = tracks.DistinctBy(x => x.OrderId).ToList(); // 防止重复推送
|
||||
if (tracks.Count == 0) return; // 一个能推的轨迹都不存在
|
||||
|
||||
@ -164,21 +157,34 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
};
|
||||
var item = await BuiltPushItem(config, log);
|
||||
item.Log = JsonConvert.SerializeObject(log);
|
||||
//根据轨迹扩展内容填充
|
||||
item.Data.ForEach(dict => FillExtraParam(track.Extra, dict, paramNames));
|
||||
trackPushInputDict.Add(item, track);
|
||||
items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (items.Count == 0) return;
|
||||
|
||||
//获取参数结构名称
|
||||
var paramNames = await GetExtraParamNamesAsync(@event.SubSystemCode);
|
||||
|
||||
//如果为系统推送,则从事件中取出轨迹扩展内容填充
|
||||
foreach (var item in items)
|
||||
{
|
||||
//根据事件中轨迹扩展内容填充
|
||||
if (isSystemPush)
|
||||
item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames));
|
||||
//根据查出的轨迹中扩展内容填充
|
||||
else
|
||||
item.Data.ForEach(dict => FillExtraParam(trackPushInputDict[item].Extra, dict, paramNames));
|
||||
}
|
||||
|
||||
using (Track2InterfaceRelaySubSystemContext.Use(
|
||||
new Track2InterfaceRelaySubSystemContext(@event.SubSystemCode)))
|
||||
{
|
||||
var asciiString = Base64Helper.SerializeObject(OptionType.新增.ToString());
|
||||
var r = await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(
|
||||
_options.CurrentValue.PushTrackInterfaceCode,
|
||||
_pushConfigs.First().ServiceProviderCode, items, GlobalConst.TrackPushCompletedSubscribe,
|
||||
_pushConfigs.First().ServiceProviderCode, items.Cast<object>().ToList(), GlobalConst.TrackPushCompletedSubscribe,
|
||||
attach: asciiString);
|
||||
|
||||
if (r.Code != GlobalConst.SuccessCode)
|
||||
@ -188,12 +194,12 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DoUpdateAsync(TrackPushEvent @event, List<string> paramNames)
|
||||
private async Task DoUpdateAsync(TrackPushEvent @event)
|
||||
{
|
||||
var config = _pushConfigs.FirstOrDefault(x => x.TrackCode == @event.TrackCode);
|
||||
if (config == null || !config.IsCanUpdate) return;
|
||||
|
||||
var items = new List<object>();
|
||||
var items = new List<TrackUpdateInput>();
|
||||
foreach (var order in _orders)
|
||||
{
|
||||
var log = new TrackPushRecordIndex
|
||||
@ -211,20 +217,25 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
};
|
||||
var item = BuiltUpdateItem(config, log);
|
||||
item.Log = JsonConvert.SerializeObject(log);
|
||||
//根据轨迹扩展内容填充
|
||||
item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames));
|
||||
items.Add(item);
|
||||
}
|
||||
|
||||
if (items.Count == 0) return;
|
||||
|
||||
//获取参数结构名称
|
||||
var paramNames = await GetExtraParamNamesAsync(@event.SubSystemCode);
|
||||
|
||||
//根据事件中轨迹扩展内容填充请求
|
||||
foreach (var item in items)
|
||||
item.Data.ForEach(dict => FillExtraParam(@event.SystemPushInfo.Extra, dict, paramNames));
|
||||
|
||||
using (Track2InterfaceRelaySubSystemContext.Use(
|
||||
new Track2InterfaceRelaySubSystemContext(@event.SubSystemCode)))
|
||||
{
|
||||
var asciiString = Base64Helper.SerializeObject(OptionType.修改.ToString());
|
||||
var r = await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(
|
||||
_options.CurrentValue.TrackUpdateInterfaceCode,
|
||||
_pushConfigs.First().ServiceProviderCode, items, GlobalConst.TrackPushCompletedSubscribe,
|
||||
_pushConfigs.First().ServiceProviderCode, items.Cast<object>().ToList(), GlobalConst.TrackPushCompletedSubscribe,
|
||||
attach: asciiString);
|
||||
|
||||
if (r.Code != GlobalConst.SuccessCode)
|
||||
@ -239,19 +250,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
var trackDatetime = log.TrackTime.AddHours(config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone);
|
||||
var trackDateStr = DateTimeFormat(trackDatetime, config.TrackTimeZone ?? log.TrackTimeZone, config);
|
||||
|
||||
// var track = new TrackItem
|
||||
// {
|
||||
// // 推真实的发生地和发生时间(时间是计算后的)
|
||||
// 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
|
||||
// };
|
||||
|
||||
var body = new TrackUpdateInput
|
||||
{
|
||||
OrderNo = log.OrderNo,
|
||||
@ -279,19 +277,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
var trackDatetime = log.TrackTime.AddHours(config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone);
|
||||
var trackDateStr = DateTimeFormat(trackDatetime, config.TrackTimeZone ?? log.TrackTimeZone, config);
|
||||
|
||||
// var track = new TrackItem
|
||||
// {
|
||||
// // 推真实的发生地和发生时间(时间是计算后的)
|
||||
// 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
|
||||
// };
|
||||
|
||||
var body = new TrackPushInput
|
||||
{
|
||||
OrderNo = log.OrderNo,
|
||||
@ -402,18 +387,18 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
||||
/// <summary>
|
||||
/// 填充来源于轨迹扩展字段的参数
|
||||
/// </summary>
|
||||
/// <param name="trackExtra">轨迹明细扩展字段</param>
|
||||
/// <param name="trackExtraJson">轨迹明细扩展字段Json</param>
|
||||
/// <param name="dict">要扩展的参数字典</param>
|
||||
/// <param name="paramNames">来源扩展字段的参数名</param>
|
||||
/// <returns></returns>
|
||||
private void FillExtraParam(string? trackExtraStr, Dictionary<string, object>? dict, List<string>? paramNames)
|
||||
private void FillExtraParam(string? trackExtraJson, Dictionary<string, object>? dict, List<string>? paramNames)
|
||||
{
|
||||
if (paramNames == null || paramNames.Count == 0) return;
|
||||
if (dict == null) return;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(trackExtraStr)) return;
|
||||
if (string.IsNullOrWhiteSpace(trackExtraJson)) return;
|
||||
|
||||
var trackExtra = ExtractTrackExtraDict(trackExtraStr);
|
||||
var trackExtra = ExtractTrackExtraDict(trackExtraJson);
|
||||
|
||||
if (trackExtra.Count == 0) return;
|
||||
foreach (var item in
|
||||
|
||||
Loading…
Reference in New Issue
Block a user