diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
index 4e0322a3..b1afaa30 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
@@ -60,7 +60,9 @@ public partial class TrackService : ApplicationService, ITrackService
throw new BusinessException(message: "轨迹来源是必须的");
}
- if (input.TrackTime < DateTime.Now.AddYears(-100) || input.TrackTime > DateTime.Now.AddYears(100))
+ //要求时间在当前时间的前后100年之间内
+ bool ValidateTrackTime(DateTime? d) => (d != null && d < DateTime.Now.AddYears(-100) || d > DateTime.Now.AddYears(100));
+ if (ValidateTrackTime(input.TrackTime) || ValidateTrackTime(input.NewTrackTime))
{
throw new BusinessException(message: "轨迹时间不合法");
}
@@ -326,7 +328,9 @@ public partial class TrackService : ApplicationService, ITrackService
//【更新】存在指定轨迹的内容(匹配到多条则不处理)
var order = orders.First();
- if (input.TrackTime < DateTime.Now.AddYears(-100) || input.TrackTime > DateTime.Now.AddYears(100))
+ //要求时间在当前时间的前后100年之间内
+ bool ValidateTrackTime(DateTime? d) => (d != null && d < DateTime.Now.AddYears(-100) || d > DateTime.Now.AddYears(100));
+ if (ValidateTrackTime(input.TrackTime) || ValidateTrackTime(input.NewTrackTime))
{
throw new BusinessException(message: "轨迹时间不合法");
}
diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
index 75806f9e..3f3aa542 100644
--- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
+++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
@@ -1,3 +1,4 @@
+using System.Linq.Expressions;
using SJZY.Expand.AliyunOSS;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Dtos.TrackOrder;
@@ -108,17 +109,31 @@ public class TrackOrderService : ApplicationService
/// 根据订单id获取轨迹明细列表
///
///
+ ///
+ ///
///
[HttpPost("GetDetails")]
- public async Task> GetTracksAsync(int orderId)
+ public async Task> GetTracksAsync(int? orderId, string? orderNo, int? systemId)
{
- var subSystemId = await _orderRepository.GetFirstAsync(x => x.Id == orderId, x => x.SubSystemId);
+ Expression>? whereExpression = null;
+ //根据订单id查询
+ if (orderId != null && orderId > 0)
+ whereExpression = m => m.Id == orderId;
+
+ //根据订单号+系统id查询
+ if (!string.IsNullOrEmpty(orderNo) && systemId != null && systemId > 0)
+ whereExpression = m => m.OrderNo == orderNo && m.SubSystemId == systemId;
+
+ if (whereExpression == default)
+ throw new BusinessException(message: "请求参数异常");
+
+ var subSystemId = await _orderRepository.GetFirstAsync(whereExpression, x => x.SubSystemId);
if (subSystemId == default)
{
throw new BusinessException(message: "订单不存在");
}
- var trackDetails = await _trackDetailsEsRepository.GetListAsync(orderId);
+ var trackDetails = await _trackDetailsEsRepository.GetListAsync(orderId ?? 0);
if (trackDetails.IsNullOrEmpty())
{
return new List();
@@ -241,16 +256,20 @@ public class TrackOrderService : ApplicationService
if (!order.IsCompleted) //如果没完结则显示签收节点
{
var eddUnixTimestamp = order.EstimatedDeliveryDate.HasValue ? ToUnixTimestamp(DateTime.Parse(order.EstimatedDeliveryDate.ToString()!)) : 0;
+ var isShowTime = eddUnixTimestamp > 0 && res.Data.All(m => m.TrackTime < eddUnixTimestamp);
- var isShowTime = eddUnixTimestamp > 0 && res.Data != null && res.Data.All(m => m.TrackTime < eddUnixTimestamp);
- res.Data.Add(new GetDetailTimelineOutput()
+ //当存在需要显示的轨迹才需要补充签收节点
+ if (res.Data.Count != 0)
{
- Content = "签收",
- IsHighlight = false,
- TrackTimeZone = isShowTime ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "",
- TrackTime = isShowTime ? eddUnixTimestamp : 0,
- TrackTimePrefix = isShowTime ? "预计签收时间:" : "",
- });
+ res.Data.Add(new GetDetailTimelineOutput()
+ {
+ Content = "签收",
+ IsHighlight = false,
+ TrackTimeZone = isShowTime ? $"GMT{(order.DestinationTimeZone >= 0 ? "+" : "-")}{order.DestinationTimeZone}" : "",
+ TrackTime = isShowTime ? eddUnixTimestamp : 0,
+ TrackTimePrefix = isShowTime ? "预计签收时间:" : "",
+ });
+ }
}
return res;