Merge branch 'refs/heads/S06' into test

This commit is contained in:
eli 2024-11-21 16:29:27 +08:00
commit af963036b2
5 changed files with 60 additions and 27 deletions

View File

@ -357,8 +357,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
//来源轨迹内容,第一次新增的时候使用轨迹内容表提供的 //来源轨迹内容,第一次新增的时候使用轨迹内容表提供的
TrackStatus = trackContent.TrackStatus, TrackStatus = trackContent.TrackStatus,
TrackStatusCode = trackContent.TrackStatusCode, TrackStatusCode = trackContent.TrackStatusCode,
TrackContent = trackContent.TrackContent, TrackContent = @event.Content?? trackContent.TrackContent,
TrackEnContent = trackContent.TrackEnContent, TrackEnContent = @event.EnStatus?? trackContent.TrackEnContent,
//S06新增轨迹明细字段 //S06新增轨迹明细字段
IsVisibility = @event.IsVisibility, IsVisibility = @event.IsVisibility,
Source = @event.Source, Source = @event.Source,

View File

@ -41,10 +41,10 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler
public ConsumeOptions Options() public ConsumeOptions Options()
{ {
return new ConsumeOptions() return new ConsumeOptions()
{ {
Queue = GlobalConst.TrackRefreshSubscribe, Queue = GlobalConst.TrackRefreshSubscribe,
}; };
} }
public async Task Handle(IServiceProvider sp, BasicDeliverEventArgs args, ConsumeOptions options) public async Task Handle(IServiceProvider sp, BasicDeliverEventArgs args, ConsumeOptions options)
@ -110,18 +110,18 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler
var trackToken = orderToken.SelectToken(paramConfig.TrackDetailsPath); var trackToken = orderToken.SelectToken(paramConfig.TrackDetailsPath);
if (trackToken is null) return; if (trackToken is null) return;
var order = await _orderRepository.GetFirstAsync(x => //回传单号可能是主单也可能是外部单号
x.SubSystemId == attach.SubSystemId && x.OrderType == attach.OrderType && x.OrderNo == orderNo, //通过平台code和(外部单号/主单号)查询主单
x => new var order = await _orderRepository.GetTrackOrderByProviderAndOrderNo(attach.ServiceProviderCode, orderNo!);
{ if (order == default)
x.Id, {
x.CustomId _logger.LogError($"请求id: {attach.ToJson()},轨迹消费失败,找不到主单,平台code:{attach.ServiceProviderCode},单号:{orderNo}");
}); return;
if (order == default) return; }
var context = new TrackRefreshContext var context = new TrackRefreshContext
{ {
OrderId = order.Id, OrderId = order.MainOrderId,
OrderType = attach.OrderType, OrderType = attach.OrderType,
OrderNo = orderNo!, OrderNo = orderNo!,
ServiceProviderCode = attach.ServiceProviderCode, ServiceProviderCode = attach.ServiceProviderCode,

View File

@ -175,7 +175,7 @@ public class TrackOrderService : ApplicationService
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("GetDetailTimeline")] [HttpPost("GetDetailTimeline")]
public async Task<UnifyResultDto<List<GetDetailTimelineOutput>>> GetDetailTimeline(GetDetailTimelineInput input) public async Task<UnifyResultDto<List<GetDetailTimelineOutput>>> GetDetailTimeline(GetDetailTimelineInput input)
{ {
var res = new UnifyResultDto<List<GetDetailTimelineOutput>>(true); var res = new UnifyResultDto<List<GetDetailTimelineOutput>>(true);
@ -242,18 +242,15 @@ public class TrackOrderService : ApplicationService
{ {
var eddUnixTimestamp = order.EstimatedDeliveryDate.HasValue ? ToUnixTimestamp(DateTime.Parse(order.EstimatedDeliveryDate.ToString()!)) : 0; var eddUnixTimestamp = order.EstimatedDeliveryDate.HasValue ? ToUnixTimestamp(DateTime.Parse(order.EstimatedDeliveryDate.ToString()!)) : 0;
//订单没有预计签收时间,或者订单上有预计签收事件,且预计到达时间大于时间轴上所有轨迹内容的发生时间,则显示签收节点 var isShowTime = eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime < eddUnixTimestamp);
if (eddUnixTimestamp == 0 || (eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime < eddUnixTimestamp))) res.Data.Add(new GetDetailTimelineOutput()
{ {
res.Data.Add(new GetDetailTimelineOutput() Content = "签收",
{ IsHighlight = false,
Content = "签收", TrackTimeZone = isShowTime ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "",
IsHighlight = false, TrackTime = isShowTime ? eddUnixTimestamp : 0,
TrackTimeZone = order.EstimatedDeliveryDate.HasValue ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "", TrackTimePrefix = isShowTime ? "预计签收时间:" : "",
TrackTime = eddUnixTimestamp, });
TrackTimePrefix = order.EstimatedDeliveryDate.HasValue ? "预计签收时间:" : "",
});
}
} }
return res; return res;

View File

@ -12,6 +12,14 @@ public interface IOrderRepository : IBasicRepository<OrderEntity>
/// <returns></returns> /// <returns></returns>
Task<UnifyPageResultDto<TrackOrderVO>> GetTrackOrderPagedList(GetPageTrackOrderInputVO input); Task<UnifyPageResultDto<TrackOrderVO>> GetTrackOrderPagedList(GetPageTrackOrderInputVO input);
/// <summary>
/// 通过三方平台和三方单号查询订单
/// </summary>
/// <param name="serviceProvidrCode">三方平台</param>
/// <param name="orderNo">三方平台单号</param>
/// <returns>(主单号id,客户id)</returns>
Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo);
/// <summary> /// <summary>
/// 创建订单 /// 创建订单
/// </summary> /// </summary>

View File

@ -58,6 +58,34 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
return pageList; return pageList;
} }
public async Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo)
{
var orderList = await Context.Queryable<OrderEntity>()
.LeftJoin<OrderPlatformNumberEntity>((a, b) => a.Id == b.OrderId && b.IsDeleted)
.Where((a, b) => a.OrderNo == orderNo
|| (b.Platform == serviceProvidrCode && b.OrderNumber == orderNo))
.Select((a, b) => new
{
a.Id,
a.CustomId,
b.Platform,
b.OrderNumber
})
.ToListAsync();
if (orderList.Count == 0)
{
return default;
}
var order = orderList.First();
//当出现了多条记录匹配,优先使用外部单匹配提升精确度
var matchOrder = orderList.FirstOrDefault(x => x.Platform == serviceProvidrCode && x.OrderNumber == orderNo);
return matchOrder != null
? (matchOrder.Id, matchOrder.CustomId)
: (order.Id, order.CustomId);
}
public async Task<int> CreateOrderAsync(OrderEntity order) public async Task<int> CreateOrderAsync(OrderEntity order)
{ {
using var tran = TransactionHelper.GetReadCommitted(); using var tran = TransactionHelper.GetReadCommitted();