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