track/src/SJZY.Track.Repository/OrderRepository.cs
2024-02-29 17:18:10 +08:00

88 lines
2.9 KiB
C#

using Microsoft.AspNetCore.Mvc;
using SJZY.Track.Domain;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Dtos.Order;
namespace SJZY.Track.Repository;
public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, ITransientDependency
{
public async Task<bool> CreateOrderAsync(OrderEntity order)
{
return await Context.InsertNav(order)
.Include(x => x.OrderFlights)
.Include(x => x.OrderTemplates)
.ExecuteCommandAsync();
}
public async Task<List<OrderTemplateDto>> GetOrderTemplatesAsync(int orderType,
List<string> distinctOrderNumbers)
{
return await AsQueryable()
.LeftJoin<OrderTemplateEntity>((a, b) => a.Id == b.OrderId)
.Where(a => a.OrderType == orderType && distinctOrderNumbers.Contains(a.OrderNo))
.Select((a, b) => new OrderTemplateDto
{
OrderNo = a.OrderNo,
TemplateId = b.TrackTemplateId
})
.ToListAsync();
}
public async Task LinkOrderAsync(List<OrderLinkEntity> orderLinkEntities)
{
await Context.Insertable(orderLinkEntities).ExecuteCommandAsync();
}
public async Task UnLinkByIdsAsync(List<int> linkIds)
{
await Context.Deleteable(linkIds).ExecuteCommandAsync();
}
public async Task UpdateOrderAsync(OrderEntity order)
{
using var tran = TransactionHelper.GetReadCommitted();
// 更新订单主表
await UpdateAsync(order, x => new { x.CustomId, x.SubSystemId });
// 更新订单模板
await Context.Deleteable<OrderTemplateEntity>().Where(x => x.OrderId == order.Id).ExecuteCommandAsync();
order.OrderTemplates.ForEach(x => x.OrderId = order.Id);
await Context.Insertable(order.OrderTemplates).ExecuteCommandAsync();
// 更新订单航班
await Context.Deleteable<OrderFlightEntity>().Where(x => x.OrderId == order.Id).ExecuteCommandAsync();
order.OrderFlights.ForEach(x => x.OrderId = order.Id);
await Context.Insertable(order.OrderFlights).ExecuteCommandAsync();
tran.Complete();
}
#region 轨迹订单明细
/// <summary>
/// 根据轨迹订单id获取轨迹明细列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<List<TrackOrderDetailVO>> GetOrderDetails(GetOrderDetailsInputVO input)
{
return null;
}
#endregion
#region 轨迹订单分页
/// <summary>
/// 获取分页的轨迹订单
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<UnifyPageResultDto<TrackOrderVO>> GetPageTrackOrder(GetPageTrackOrderInputVO input)
{
//await Context.Queryable<OrderEntity, OrderTemplateEntity>((a,b)= );
return null;
}
#endregion
}