feat(order): add repository and service methods for pull config lookup
feat(order): add API layer to find order pull configs feat(order): add repository and service layers for finding order pull configs feat(order): add find order pull configs capability - Add `FindOrderPullConfigsController` for API endpoint - Add `OrderPullConfigService.findOrderPull
This commit is contained in:
parent
7008ffbd96
commit
3e06c83cd6
@ -0,0 +1,35 @@
|
|||||||
|
using TrackCenter.Domain.Aggregates.OrderAggregate;
|
||||||
|
|
||||||
|
namespace TrackCenter.Application.Dtos.ProvideServices;
|
||||||
|
|
||||||
|
public class FindOrderPullConfigsOutput
|
||||||
|
{
|
||||||
|
public int Total { get; set; }
|
||||||
|
|
||||||
|
public List<FindOrderPullConfigsItem> Items { get; set; } = [];
|
||||||
|
|
||||||
|
public List<string> NotFoundOrderNos { get; set; } = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FindOrderPullConfigsItem
|
||||||
|
{
|
||||||
|
public string OrderNo { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string ServiceCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string? PullOrderNo { get; set; }
|
||||||
|
|
||||||
|
public string StartCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string EndCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int SilenceTime { get; set; }
|
||||||
|
|
||||||
|
public int StopTime { get; set; }
|
||||||
|
|
||||||
|
public TrackPullStatus PullStatus { get; set; }
|
||||||
|
|
||||||
|
public DateTime StartTime { get; set; }
|
||||||
|
|
||||||
|
public DateTime EndTime { get; set; }
|
||||||
|
}
|
||||||
@ -6,6 +6,49 @@ namespace TrackCenter.Application.Services.ProvideServices;
|
|||||||
|
|
||||||
public partial class OrderService
|
public partial class OrderService
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 查询订单拉取配置
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("Order/FindOrderPullConfigs")]
|
||||||
|
public async Task<FindOrderPullConfigsOutput> FindOrderPullConfigsAsync(OrderNosInfo input)
|
||||||
|
{
|
||||||
|
var orderNos = input.OrderNos
|
||||||
|
.Where(x => !string.IsNullOrWhiteSpace(x))
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
if (orderNos.Count == 0)
|
||||||
|
{
|
||||||
|
return new FindOrderPullConfigsOutput();
|
||||||
|
}
|
||||||
|
|
||||||
|
var pullConfigs = await _orderRepository.FindOrderPullConfigsAsync(input.AppKey, input.OrderType, orderNos);
|
||||||
|
var foundOrderNos = pullConfigs
|
||||||
|
.Select(x => x.OrderNo)
|
||||||
|
.Distinct()
|
||||||
|
.ToHashSet();
|
||||||
|
|
||||||
|
return new FindOrderPullConfigsOutput
|
||||||
|
{
|
||||||
|
Total = pullConfigs.Count,
|
||||||
|
Items = pullConfigs.Select(x => new FindOrderPullConfigsItem
|
||||||
|
{
|
||||||
|
OrderNo = x.OrderNo,
|
||||||
|
ServiceCode = x.ServiceCode,
|
||||||
|
PullOrderNo = x.PullOrderNo,
|
||||||
|
StartCode = x.StartCode,
|
||||||
|
EndCode = x.EndCode,
|
||||||
|
SilenceTime = x.SilenceTime,
|
||||||
|
StopTime = x.StopTime,
|
||||||
|
PullStatus = x.PullStatus,
|
||||||
|
StartTime = x.StartTime,
|
||||||
|
EndTime = x.EndTime
|
||||||
|
}).ToList(),
|
||||||
|
NotFoundOrderNos = orderNos.Where(x => !foundOrderNos.Contains(x)).ToList()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 修改订单拉取信息(轻易勿动)
|
/// 修改订单拉取信息(轻易勿动)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -139,6 +139,18 @@ public interface IOrderRepository : IBasicRepository<OrderEntity>
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> ClearPullStatusAsync();
|
Task<int> ClearPullStatusAsync();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询订单拉取配置
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="appKey"></param>
|
||||||
|
/// <param name="orderType"></param>
|
||||||
|
/// <param name="orderNos"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<FindOrderPullConfigsOutputVO>> FindOrderPullConfigsAsync(
|
||||||
|
string appKey,
|
||||||
|
TrackOrderType orderType,
|
||||||
|
List<string> orderNos);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新订单拉取配置,根据服务商
|
/// 更新订单拉取配置,根据服务商
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -0,0 +1,26 @@
|
|||||||
|
using TrackCenter.Domain.Aggregates.OrderAggregate;
|
||||||
|
|
||||||
|
namespace TrackCenter.Domain.Dtos.Order;
|
||||||
|
|
||||||
|
public class FindOrderPullConfigsOutputVO
|
||||||
|
{
|
||||||
|
public string OrderNo { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string ServiceCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string? PullOrderNo { get; set; }
|
||||||
|
|
||||||
|
public string StartCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string EndCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int SilenceTime { get; set; }
|
||||||
|
|
||||||
|
public int StopTime { get; set; }
|
||||||
|
|
||||||
|
public TrackPullStatus PullStatus { get; set; }
|
||||||
|
|
||||||
|
public DateTime StartTime { get; set; }
|
||||||
|
|
||||||
|
public DateTime EndTime { get; set; }
|
||||||
|
}
|
||||||
@ -500,6 +500,37 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
|
|||||||
.ExecuteCommandAsync();
|
.ExecuteCommandAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<FindOrderPullConfigsOutputVO>> FindOrderPullConfigsAsync(
|
||||||
|
string appKey,
|
||||||
|
TrackOrderType orderType,
|
||||||
|
List<string> orderNos)
|
||||||
|
{
|
||||||
|
if (orderNos.Count == 0)
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return await Context.Queryable<OrderEntity>()
|
||||||
|
.InnerJoin<OrderPullStatusEntity>((order, pullStatus) => order.Id == pullStatus.OrderId)
|
||||||
|
.Where((order, pullStatus) => order.AppKey == appKey
|
||||||
|
&& order.OrderType == orderType
|
||||||
|
&& orderNos.Contains(order.OrderNo))
|
||||||
|
.Select((order, pullStatus) => new FindOrderPullConfigsOutputVO
|
||||||
|
{
|
||||||
|
OrderNo = order.OrderNo,
|
||||||
|
ServiceCode = pullStatus.ServiceProviderCode,
|
||||||
|
PullOrderNo = pullStatus.OrderNo,
|
||||||
|
StartCode = pullStatus.StartTrackCode,
|
||||||
|
EndCode = pullStatus.EndTrackCode,
|
||||||
|
SilenceTime = pullStatus.SilenceBeforeStart,
|
||||||
|
StopTime = pullStatus.SilenceAfterEnd,
|
||||||
|
PullStatus = pullStatus.PullStatus,
|
||||||
|
StartTime = pullStatus.StartTime,
|
||||||
|
EndTime = pullStatus.EndTime
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<int> UpdateOrderPullConfigForServiceProviderAsync(
|
public async Task<int> UpdateOrderPullConfigForServiceProviderAsync(
|
||||||
UpdateOrderPullConfigsInputVo inputVo)
|
UpdateOrderPullConfigsInputVo inputVo)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user