update: 新增/修改轨迹增加IsToMq参数,标记为true则轨迹操作后一定会推送
update: MQ广播异步改同步 update: 更新契约包版本7.0.10
This commit is contained in:
parent
a9eaa5e41f
commit
5edaa2f80c
@ -129,4 +129,9 @@ public class BatchUpsertTrackInput : OrderNosInfo
|
|||||||
/// 是否强制推送
|
/// 是否强制推送
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ForcedPush { get; set; }
|
public bool ForcedPush { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 指定是否推送
|
||||||
|
/// </summary>
|
||||||
|
public bool IsToMq { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -133,4 +133,9 @@ public class UpsertTrackInput : OrderNoInfo
|
|||||||
/// 是否强制推送
|
/// 是否强制推送
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ForcedPush { get; set; }
|
public bool ForcedPush { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 指定是否推送
|
||||||
|
/// </summary>
|
||||||
|
public bool IsToMq { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -151,6 +151,10 @@ public class TrackUpsertEvent
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ForcedPush { get; set; }
|
public bool ForcedPush { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 指定是否推送
|
||||||
|
/// </summary>
|
||||||
|
public bool IsToMq { get; set; }
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||||
<Version>7.0.9</Version>
|
<Version>7.0.10</Version>
|
||||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -69,6 +69,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
|
|
||||||
if (@event.ForcedPush)
|
if (@event.ForcedPush)
|
||||||
{
|
{
|
||||||
|
//当为强制推送,会走手动推送逻辑
|
||||||
await DoPushAsync(@event);
|
await DoPushAsync(@event);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -95,7 +96,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
var items = new List<TrackPushInput>();
|
var items = new List<TrackPushInput>();
|
||||||
TrackPushContentConfigDto? config;
|
TrackPushContentConfigDto? config;
|
||||||
var isSystemPush = @event.OperationMan == null;
|
var isSystemPush = @event.OperationMan == null;
|
||||||
if (isSystemPush)
|
if (isSystemPush && !@event.ForcedPush)
|
||||||
{
|
{
|
||||||
foreach (var order in _orders)
|
foreach (var order in _orders)
|
||||||
{
|
{
|
||||||
@ -139,13 +140,18 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
if (config == null) return;
|
if (config == null) return;
|
||||||
|
|
||||||
var tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, @event.TrackCode);
|
var tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds, @event.TrackCode);
|
||||||
tracks = tracks.DistinctBy(x => x.OrderId).ToList(); // 防止重复推送
|
|
||||||
if (tracks.Count == 0) return; // 一个能推的轨迹都不存在
|
|
||||||
|
|
||||||
// tips:人工推送只要能推就推了,不会校验已推和顺序问题,因为可能是更新
|
// tips:人工推送只要能推就推了,不会校验已推和顺序问题,因为可能是更新
|
||||||
foreach (var track in tracks)
|
foreach (var order in _orders)
|
||||||
{
|
{
|
||||||
var order = _orders.First(x => x.Id == track.OrderId);
|
//取订单的下某个code的最新创建时间的轨迹 防止重复推送
|
||||||
|
var track = tracks
|
||||||
|
.Where(x => x.OrderId == order.Id && x.TrackCode == @event.TrackCode)
|
||||||
|
.OrderByDescending(x => x.CreateTime)
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
if (track == null) return; // 一个能推的轨迹都不存在
|
||||||
|
|
||||||
if (config is { IsAllPush: true })
|
if (config is { IsAllPush: true })
|
||||||
{
|
{
|
||||||
// 强制推送只需直接查出配置
|
// 强制推送只需直接查出配置
|
||||||
|
|||||||
@ -49,8 +49,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
var content = await HandleTrackAsync(@event, canNextOrderIds);
|
var content = await HandleTrackAsync(@event, canNextOrderIds);
|
||||||
|
|
||||||
// 处理广播事件
|
// 处理广播事件
|
||||||
if (content is { IsToMq: true })
|
if (content != null && (content.IsToMq || @event.IsToMq))
|
||||||
await _broadcastingService.TrackChangePublicTopicAsync(@event, content);
|
_broadcastingService.TrackChangePublicTopicAsync(@event, content);
|
||||||
|
|
||||||
if (canNextOrderIds.Count == 0) return;
|
if (canNextOrderIds.Count == 0) return;
|
||||||
// 根据订单关联关系异步向下刷(异步)
|
// 根据订单关联关系异步向下刷(异步)
|
||||||
@ -199,7 +199,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
DestinationTimeZone = @event.DestinationTimeZone,
|
DestinationTimeZone = @event.DestinationTimeZone,
|
||||||
EstimatedDeliveryDate = @event.EstimatedDeliveryDate
|
EstimatedDeliveryDate = @event.EstimatedDeliveryDate
|
||||||
});
|
});
|
||||||
|
|
||||||
// 触发轨迹推送事件(异步)
|
// 触发轨迹推送事件(异步)
|
||||||
var trackPushEvent = new TrackPushEvent
|
var trackPushEvent = new TrackPushEvent
|
||||||
{
|
{
|
||||||
@ -219,7 +219,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
Extra = @event.Extra
|
Extra = @event.Extra
|
||||||
},
|
},
|
||||||
ForcedPush = @event.ForcedPush,
|
ForcedPush = @event.ForcedPush,
|
||||||
IsToMq = trackContent.IsToMq
|
IsToMq = (trackContent.IsToMq || @event.IsToMq)
|
||||||
};
|
};
|
||||||
await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent);
|
await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent);
|
||||||
|
|
||||||
|
|||||||
@ -70,7 +70,7 @@ public class TrackPushCompletedEventHandler : ITransientDependency, IRabbitHandl
|
|||||||
|
|
||||||
// 推送广播
|
// 推送广播
|
||||||
if (log.IsToMq)
|
if (log.IsToMq)
|
||||||
await _broadcastingService.TrackPushCompletedPublicTopicAsync(log);
|
_broadcastingService.TrackPushCompletedPublicTopicAsync(log);
|
||||||
|
|
||||||
// 往es 写推送日志
|
// 往es 写推送日志
|
||||||
await _trackPushRecordEsRepository.AddAsync(log);
|
await _trackPushRecordEsRepository.AddAsync(log);
|
||||||
|
|||||||
@ -26,47 +26,43 @@ public class BroadcastingService : ITransientDependency
|
|||||||
/// <param name="eto"></param>
|
/// <param name="eto"></param>
|
||||||
/// <param name="content"></param>
|
/// <param name="content"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Task TrackChangePublicTopicAsync(TrackUpsertEvent eto, TrackContentVO content)
|
public void TrackChangePublicTopicAsync(TrackUpsertEvent eto, TrackContentVO content)
|
||||||
{
|
{
|
||||||
return Task.Run(() =>
|
var data = new TrackChangeEto
|
||||||
{
|
{
|
||||||
var data = new TrackChangeEto
|
EstimatedDeliveryDate = eto.EstimatedDeliveryDate,
|
||||||
{
|
TrackPlacePostcode = eto.TrackPlacePostcode,
|
||||||
EstimatedDeliveryDate = eto.EstimatedDeliveryDate,
|
TrackPlaceNation = eto.TrackPlaceNation,
|
||||||
TrackPlacePostcode = eto.TrackPlacePostcode,
|
TrackPlaceNationId = eto.TrackPlaceNationId,
|
||||||
TrackPlaceNation = eto.TrackPlaceNation,
|
TrackPlaceProvince = eto.TrackPlaceProvince,
|
||||||
TrackPlaceNationId = eto.TrackPlaceNationId,
|
TrackPlaceProvinceId = eto.TrackPlaceProvinceId,
|
||||||
TrackPlaceProvince = eto.TrackPlaceProvince,
|
TrackPlaceCity = eto.TrackPlaceCity,
|
||||||
TrackPlaceProvinceId = eto.TrackPlaceProvinceId,
|
TrackPlaceCityId = eto.TrackPlaceCityId,
|
||||||
TrackPlaceCity = eto.TrackPlaceCity,
|
Files = eto.Files,
|
||||||
TrackPlaceCityId = eto.TrackPlaceCityId,
|
Remarks = eto.Remarks,
|
||||||
Files = eto.Files,
|
Source = eto.Source,
|
||||||
Remarks = eto.Remarks,
|
IsVisibility = eto.IsVisibility,
|
||||||
Source = eto.Source,
|
TrackTimeZone = eto.TrackTimeZone,
|
||||||
IsVisibility = eto.IsVisibility,
|
TrackTime = eto.TrackTime,
|
||||||
TrackTimeZone = eto.TrackTimeZone,
|
TrackPlace = eto.TrackPlace,
|
||||||
TrackTime = eto.TrackTime,
|
TrackStatusCode = content.TrackStatusCode,
|
||||||
TrackPlace = eto.TrackPlace,
|
EnStatus = eto.EnStatus,
|
||||||
TrackStatusCode = content.TrackStatusCode,
|
Content = eto.Content,
|
||||||
EnStatus = eto.EnStatus,
|
TrackCode = eto.TrackCode,
|
||||||
Content = eto.Content,
|
OperationMan = eto.OperationMan,
|
||||||
TrackCode = eto.TrackCode,
|
OrderIdentifiers = eto.OrderIdentifiers,
|
||||||
OperationMan = eto.OperationMan,
|
CustomId = eto.CustomId,
|
||||||
OrderIdentifiers = eto.OrderIdentifiers,
|
SubSystemId = eto.SubSystemId,
|
||||||
CustomId = eto.CustomId,
|
Extra = eto.Extra
|
||||||
SubSystemId = eto.SubSystemId,
|
};
|
||||||
Extra = eto.Extra
|
|
||||||
};
|
|
||||||
|
|
||||||
if (eto.IsAdd)
|
if (eto.IsAdd)
|
||||||
data.Option = 1;
|
data.Option = 1;
|
||||||
else
|
else
|
||||||
data.Option = 3;
|
data.Option = 3;
|
||||||
|
|
||||||
_rabbitClientBus.Publish(GlobalConst.TrackChangeExchange, $"TrackChange.{content.SubSystemCode}",
|
_rabbitClientBus.Publish(GlobalConst.TrackChangeExchange, $"TrackChange.{content.SubSystemCode}",
|
||||||
Encoding.UTF8.GetBytes(data.ToJson()));
|
Encoding.UTF8.GetBytes(data.ToJson()));
|
||||||
return Task.CompletedTask;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -74,34 +70,29 @@ public class BroadcastingService : ITransientDependency
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="log"></param>
|
/// <param name="log"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Task TrackPushCompletedPublicTopicAsync(TrackPushRecordIndex log)
|
public void TrackPushCompletedPublicTopicAsync(TrackPushRecordIndex log)
|
||||||
{
|
{
|
||||||
// todo: 不需要异步
|
var data = new TrackPushCompletedEvent
|
||||||
return Task.Run(() =>
|
|
||||||
{
|
{
|
||||||
var data = new TrackPushCompletedEvent
|
RequestId = log.RequestId,
|
||||||
{
|
IsSuccess = log.IsSuccess,
|
||||||
RequestId = log.RequestId,
|
Message = log.Message,
|
||||||
IsSuccess = log.IsSuccess,
|
OperationMan = log.CreateUser,
|
||||||
Message = log.Message,
|
PushTime = DateTime.Now,
|
||||||
OperationMan = log.CreateUser,
|
OptionType = log.OptionType,
|
||||||
PushTime = DateTime.Now,
|
IsManualPush = !string.Equals(log.CreateUser, GlobalConst.SystemUser), //操作人不为系统用户,则认为是仍推送
|
||||||
OptionType = log.OptionType,
|
PushContent = log.PushContent,
|
||||||
IsManualPush = !string.Equals(log.CreateUser, GlobalConst.SystemUser), //操作人不为系统用户,则认为是仍推送
|
OrderNo = log.OrderNo,
|
||||||
PushContent = log.PushContent,
|
TrackStatus = log.TrackStatus,
|
||||||
OrderNo = log.OrderNo,
|
TrackContent = log.TrackContent,
|
||||||
TrackStatus = log.TrackStatus,
|
TrackTimeZone = log.TrackTimeZone,
|
||||||
TrackContent = log.TrackContent,
|
TrackTime = log.TrackTime,
|
||||||
TrackTimeZone = log.TrackTimeZone,
|
TrackPlace = log.TrackPlace,
|
||||||
TrackTime = log.TrackTime,
|
TrackCode = log.TrackCode,
|
||||||
TrackPlace = log.TrackPlace,
|
Extra = log.Extra
|
||||||
TrackCode = log.TrackCode,
|
};
|
||||||
Extra = log.Extra
|
|
||||||
};
|
|
||||||
|
|
||||||
_rabbitClientBus.Publish(GlobalConst.TrackPushExchange, $"TrackPush.{log.SubSystemCode}",
|
_rabbitClientBus.Publish(GlobalConst.TrackPushExchange, $"TrackPush.{log.SubSystemCode}",
|
||||||
Encoding.UTF8.GetBytes(data.ToJson()));
|
Encoding.UTF8.GetBytes(data.ToJson()));
|
||||||
return Task.CompletedTask;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -145,6 +145,7 @@ public partial class TrackService : ApplicationService, ITrackService
|
|||||||
{
|
{
|
||||||
//todo:保留之前的方式 后续可去除
|
//todo:保留之前的方式 后续可去除
|
||||||
userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync(input.OptionUserId);
|
userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync(input.OptionUserId);
|
||||||
|
|
||||||
if (userInfo.Code != GlobalConst.SuccessCode || userInfo.Data is null)
|
if (userInfo.Code != GlobalConst.SuccessCode || userInfo.Data is null)
|
||||||
//TODO: log || ex
|
//TODO: log || ex
|
||||||
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo.Msg}");
|
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo.Msg}");
|
||||||
@ -477,7 +478,8 @@ public partial class TrackService : ApplicationService, ITrackService
|
|||||||
EstimatedDeliveryDate = input.EstimatedDeliveryDate,
|
EstimatedDeliveryDate = input.EstimatedDeliveryDate,
|
||||||
DestinationTimeZone = input.DestinationTimeZone,
|
DestinationTimeZone = input.DestinationTimeZone,
|
||||||
Extra = input.Extra,
|
Extra = input.Extra,
|
||||||
ForcedPush = input.ForcedPush
|
ForcedPush = input.ForcedPush,
|
||||||
|
IsToMq = input.IsToMq,
|
||||||
};
|
};
|
||||||
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, @event);
|
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, @event);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user