using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Dtos.Order;
using Volo.Abp.ObjectMapping;
namespace SJZY.Track.Application.Services.ProvideServices;
///
/// 订单服务
///
[ApiExplorerSettings(GroupName = "提供接口")]
public class OrderService : ApplicationService
{
private readonly IOrderRepository _orderRepository;
private readonly ITrackDetailsRepository _trackDetailsRepository;
public OrderService(IOrderRepository orderRepository,
ITrackDetailsRepository trackDetailsRepository
)
{
_orderRepository = orderRepository;
this._trackDetailsRepository=trackDetailsRepository;
}
///
/// 创建订单,订单已存在则视为更新
///
///
///
///
[HttpPost("Order/Upsert")]
public async Task UpsertAsync(UpsertOrderInput input)
{
var order = await _orderRepository.GetFirstAsync(x =>
x.OrderType == input.OrderType && x.OrderNo == input.OrderNo);
if (order != default)
{
// 订单已存在则视为更新
await UpdateOrderAsync(input, order);
return "更新成功";
}
order = ObjectMapper.Map(input);
order.SubSystemId = 1;
order.OrderTemplates = ObjectMapper.Map, List>(input.Templates);
order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos);
await _orderRepository.CreateOrderAsync(order);
return "创建成功";
}
///
/// 删除订单
///
///
///
///
[HttpPost("Order/Delete")]
public async Task DeleteOrderAsync(DeleteOrderInput input)
{
var orderId = await _orderRepository.GetFirstAsync(x =>
x.OrderType == input.OrderType && x.OrderNo == input.OrderNo, x => x.Id);
if (orderId == default)
{
throw new BusinessException(message: $"订单:{input.OrderNo}不存在");
}
await _orderRepository.DeleteOrderAsync(orderId);
return true;
}
#region 轨迹订单明细
///
/// 根据轨迹订单id获取轨迹订单明细列表
///
///
///
[HttpPost("/Order/GetDetails")]
public async Task> GetOrderDetails(GetOrderDetailsInput input)
{
var trackDetails = await _trackDetailsRepository.GetListAsync(input.OrderId);
if (!trackDetails.IsNullOrEmpty())
{
var list = ObjectMapper.Map, List>(trackDetails);
return list;
}
return new List();
}
#endregion
#region 轨迹订单列表
///
/// 获取分页的轨迹订单
///
///
///
[HttpPost("/Order/GetTrackOrderList")]
public async Task> GetPageTrackOrder(GetPageTrackOrderInput input)
{
var vo = ObjectMapper.Map(input);
var pageList = await _orderRepository.GetPageTrackOrder(vo);
var pageResultDto =
ObjectMapper.Map, UnifyPageResultDto>(pageList);
return pageResultDto;
}
#endregion
private async Task UpdateOrderAsync(UpdateOrderInput input, OrderEntity order)
{
order = ObjectMapper.Map(input, order);
order.OrderTemplates = ObjectMapper.Map, List>(input.Templates);
order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos);
await _orderRepository.UpdateOrderAsync(order);
}
}