Merge branch 'refs/heads/S03-轨迹中台优化项' into dev

This commit is contained in:
李鹏军 2024-04-24 21:03:06 +08:00
commit 19a25476cf
2 changed files with 57 additions and 33 deletions

View File

@ -1,6 +1,7 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using Newtonsoft.Json; using Newtonsoft.Json;
using SJZY.InterfaceRelay.Application.Contracts; using SJZY.InterfaceRelay.Application.Contracts;
using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Consts;
@ -24,7 +25,19 @@ public class TrackPushCompletedEventHandler : ITransientDependency, ICapSubscrib
[CapSubscribe(GlobalConst.TrackPushCompletedSubscribe, Group = GlobalConst.TrackPushSubscribe)] [CapSubscribe(GlobalConst.TrackPushCompletedSubscribe, Group = GlobalConst.TrackPushSubscribe)]
public async Task ConsumerAsync(InterfaceRelayForwardReplayEvent @event) public async Task ConsumerAsync(InterfaceRelayForwardReplayEvent @event)
{ {
var log = JsonConvert.DeserializeObject<TrackPushRecordIndex>(@event.RequestParams); string logStr = null;
if (@event.Attach == OptionType.新增.ToString())
{
logStr = JsonConvert.DeserializeObject<TrackPushInput>(@event.RequestParams)!.Log;
}
else if (@event.Attach == OptionType.修改.ToString())
{
logStr = JsonConvert.DeserializeObject<TrackUpdateInput>(@event.RequestParams)!.Log;
}
if (logStr.IsNullOrEmpty()) throw new InvalidOperationException();
var log = JsonConvert.DeserializeObject<TrackPushRecordIndex>(logStr!);
if (log == null) throw new BusinessException(message: "轨迹推送返回结果解析异常"); if (log == null) throw new BusinessException(message: "轨迹推送返回结果解析异常");
log.IsSuccess = @event.IsSuccess; log.IsSuccess = @event.IsSuccess;
log.Message = @event.Message; log.Message = @event.Message;

View File

@ -1,4 +1,5 @@
using DotNetCore.CAP; using System.Text;
using DotNetCore.CAP;
using Newtonsoft.Json; using Newtonsoft.Json;
using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.InterfaceRelay.Application.Contracts; using SJZY.InterfaceRelay.Application.Contracts;
@ -72,7 +73,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
private async Task DoPushAsync(TrackPushEvent @event) private async Task DoPushAsync(TrackPushEvent @event)
{ {
var logs = new List<TrackPushRecordIndex>(); var items = new List<TrackPushInput>();
TrackPushContentConfigDto? config; TrackPushContentConfigDto? config;
if (@event.OperationMan == null) if (@event.OperationMan == null)
@ -98,8 +99,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, TrackTimeZone = @event.SystemPushInfo.TrackTimeZone,
CreateUser = GlobalConst.SystemUser, CreateUser = GlobalConst.SystemUser,
}; };
await BuiltPushItem(config, log); var item = await BuiltPushItem(config, log);
logs.Add(log); item.Log = JsonConvert.SerializeObject(log);
items.Add(item);
} }
} }
else //手工推送 else //手工推送
@ -136,13 +138,18 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
TrackTimeZone = track.TrackTimeZone, TrackTimeZone = track.TrackTimeZone,
CreateUser = @event.OperationMan, CreateUser = @event.OperationMan,
}; };
await BuiltPushItem(config, log); var item = await BuiltPushItem(config, log);
logs.Add(log); item.Log = JsonConvert.SerializeObject(log);
items.Add(item);
} }
} }
byte[] asciiBytes = Encoding.ASCII.GetBytes(OptionType.新增.ToString());
string asciiString = Encoding.ASCII.GetString(asciiBytes);
await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(InterfaceRelayConst.PushTrackInterfaceCode, await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(InterfaceRelayConst.PushTrackInterfaceCode,
_pushConfigs.First().ServiceProviderCode, logs, GlobalConst.TrackPushCompletedSubscribe); _pushConfigs.First().ServiceProviderCode, items, GlobalConst.TrackPushCompletedSubscribe,
attach: asciiString);
} }
private async Task DoUpdateAsync(TrackPushEvent @event) private async Task DoUpdateAsync(TrackPushEvent @event)
@ -150,7 +157,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
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 logs = new List<TrackPushRecordIndex>(); var items = new List<TrackUpdateInput>();
foreach (var order in _orders) foreach (var order in _orders)
{ {
var log = new TrackPushRecordIndex var log = new TrackPushRecordIndex
@ -166,41 +173,43 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
TrackTimeZone = @event.SystemPushInfo.TrackTimeZone, TrackTimeZone = @event.SystemPushInfo.TrackTimeZone,
CreateUser = GlobalConst.SystemUser, CreateUser = GlobalConst.SystemUser,
}; };
BuiltUpdateItem(config, log); var item = BuiltUpdateItem(config, log);
logs.Add(log); item.Log = JsonConvert.SerializeObject(log);
items.Add(item);
} }
await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(InterfaceRelayConst.TrackUpdateInterfaceCode, await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(InterfaceRelayConst.TrackUpdateInterfaceCode,
_pushConfigs.First().ServiceProviderCode, logs, GlobalConst.TrackPushCompletedSubscribe); _pushConfigs.First().ServiceProviderCode, items, GlobalConst.TrackPushCompletedSubscribe,
attach: OptionType.修改.ToString());
} }
private void BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) private TrackUpdateInput BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log)
{ {
var data = new var track = new TrackItem
{ {
orderNo = log.OrderNo, // 推真实的发生地和发生时间(时间是计算后的)
data = new[] Location = log.TrackPlace,
{ Date = log.TrackTime.AddHours(
new config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone),
{ TimeZone = config.TrackTimeZone ?? log.TrackTimeZone,
// 推真实的发生地和发生时间 Description = config.TrackEnContentValue,
location = log.TrackPlace, DescriptionCn = config.TrackContentValue,
date = log.TrackTime.AddHours( Code = config.TrackContentCodeValue,
config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone), Status = config.TrackStatusValue,
timeZone = config.TrackTimeZone ?? log.TrackTimeZone, Extra = config.ExpandFieldsValue
description = config.TrackEnContentValue,
description_cn = config.TrackContentValue,
code = config.TrackContentCodeValue,
status = config.TrackStatusValue,
extra = config.ExpandFieldsValue
}
}
}; };
log.PushContent = data.ToJson(); var body = new TrackUpdateInput
{
OrderNo = log.OrderNo,
};
body.Data.Add(track);
log.PushContent = body.ToJson();
return body;
} }
private async Task BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log) private async Task<TrackPushInput> BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log)
{ {
var track = new TrackItem var track = new TrackItem
{ {
@ -233,6 +242,8 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
} }
log.PushContent = body.ToJson(); log.PushContent = body.ToJson();
return body;
} }
/// <summary> /// <summary>