using InterfaceForward.Domain.Shared.Helpers;
using TrackCenter.Application.Dtos.ProvideServices;
using TrackCenter.Domain.Dtos.Order;
namespace TrackCenter.Application.Services.ProvideServices;
public partial class OrderService
{
///
/// 查询订单拉取配置
///
///
///
[HttpPost("Order/FindOrderPullConfigs")]
public async Task 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()
};
}
///
/// 修改订单拉取信息(轻易勿动)
///
///
///
[HttpPost("Order/UpdateOrderPullConfigs")]
public async Task UpdateOrderPullConfigsAsync(UpdateOrderPullConfigsInput input)
{
var orderIds = await orderRepository.GetListAsync(
x => x.AppKey == input.AppKey && x.OrderType == input.OrderType &&
input.OrderNos.Contains(x.OrderNo),
x => x.Id);
if (orderIds.Count == 0)
{
throw ProviderServiceActionResult.Exception("修改拉取配置失败", "未找到匹配订单");
}
var inputVo = ObjectMapper
.Map(input.Config);
inputVo.OrderIds = orderIds.ToArray();
var cnt = await orderRepository.UpdateOrderPullConfigForServiceProviderAsync(inputVo);
Log.Warning(
$"{CurrentUser.UserName}正在修改服务商拉取信息,本次共计影响了{orderIds.Count}个订单、{cnt}段拉取,请求参数是:{input.ToJson()}",
true);
}
}