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
|
||||
{
|
||||
/// <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>
|
||||
|
||||
@ -139,6 +139,18 @@ public interface IOrderRepository : IBasicRepository<OrderEntity>
|
||||
/// <returns></returns>
|
||||
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>
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
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(
|
||||
UpdateOrderPullConfigsInputVo inputVo)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user