This commit is contained in:
李鹏军 2024-04-24 21:01:55 +08:00
parent ee35276ee6
commit 9d5cad393e
2 changed files with 57 additions and 33 deletions

View File

@ -1,6 +1,7 @@
using DotNetCore.CAP;
using Newtonsoft.Json;
using SJZY.InterfaceRelay.Application.Contracts;
using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
@ -24,7 +25,19 @@ public class TrackPushCompletedEventHandler : ITransientDependency, ICapSubscrib
[CapSubscribe(GlobalConst.TrackPushCompletedSubscribe, Group = GlobalConst.TrackPushSubscribe)]
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: "轨迹推送返回结果解析异常");
log.IsSuccess = @event.IsSuccess;
log.Message = @event.Message;

View File

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