change 订单聚合变更

This commit is contained in:
李鹏军 2024-02-28 16:51:21 +08:00
parent 14933065e4
commit 72a1063523
6 changed files with 154 additions and 96 deletions

View File

@ -1,26 +1,13 @@
using System.ComponentModel.DataAnnotations;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
namespace SJZY.Track.Application.Dtos.ProvideServices;
public class CreateOrderInput
public class CreateOrderInput : UpdateOrderInput
{
public NoInfo NoInfo { get; set; }
/// <summary>
/// 客户id
/// </summary>
public int ClientId { get; set; }
/// <summary>
/// 订单模板
/// </summary>
public List<OrderTemplateInfo> Templates { get; set; }
/// <summary>
/// 订单明细
/// </summary>
public OrderDetails Details { get; set; }
}
public class OrderTemplateInfo
@ -34,42 +21,7 @@ public class OrderTemplateInfo
/// <summary>
/// 服务商id
/// </summary>
public int ServiceProviderId { get; set; }
}
public class OrderDetails
{
/// <summary>
/// 目的港口
/// </summary>
public string? ArrivalPort { get; set; }
/// <summary>
/// 起运港口
/// </summary>
public string? LeavePort { get; set; }
/// <summary>
/// 目的国家,必填
/// </summary>
public string ArrivalCountry { get; set; }
/// <summary>
/// 起运国家,必填
/// </summary>
public string LeaveCountry { get; set; }
/// <summary>
/// 目的城市,必填
/// </summary>
public string ArrivalCity { get; set; }
/// <summary>
/// 起运城市,必填
/// </summary>
public string LeaveCity { get; set; }
public List<FligthInfo> FligthInfos { get; set; }
public int? ServiceProviderId { get; set; }
}
public class FligthInfo
@ -77,10 +29,13 @@ public class FligthInfo
/// <summary>
/// 航班号
/// </summary>
[Required]
[MaxLength(50)]
public string FlightNo { get; set; }
/// <summary>
/// 班期
/// </summary>
public string FlightDate { get; set; }
[Required]
public DateTime FlightDate { get; set; }
}

View File

@ -0,0 +1,59 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Application.Dtos.ProvideServices;
public class UpdateOrderInput
{
/// <summary>
/// 订单类型,必填
/// </summary>
[Required]
public int OrderType { get; set; }
/// <summary>
/// 订单号,必填
/// </summary>
[Required]
[MaxLength(100)]
public string OrderNo { get; set; }
/// <summary>
/// 订单模板(传全量)
/// </summary>
public List<OrderTemplateInfo> Templates { get; set; } = new();
/// <summary>
/// 目的港口
/// </summary>
public string? ArrivalPort { get; set; }
/// <summary>
/// 起运港口
/// </summary>
public string? LeavePort { get; set; }
/// <summary>
/// 目的国家,必填
/// </summary>
public string ArrivalCountry { get; set; }
/// <summary>
/// 起运国家,必填
/// </summary>
public string LeaveCountry { get; set; }
/// <summary>
/// 目的城市,必填
/// </summary>
public string ArrivalCity { get; set; }
/// <summary>
/// 起运城市,必填
/// </summary>
public string LeaveCity { get; set; }
/// <summary>
/// 订单航班信息
/// </summary>
public List<FligthInfo> FlightInfos { get; set; } = new();
}

View File

@ -1,5 +1,4 @@
using Newtonsoft.Json;
using SJZY.Track.Application.Dtos.ProvideServices;
using SJZY.Track.Application.Dtos.ProvideServices;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.UserCenter.HttpApi.Services;
@ -28,18 +27,22 @@ public class OrderService : ApplicationService
public async Task<bool> CreateOrderAsync(CreateOrderInput input)
{
if (await _orderRepository.IsAnyAsync(x =>
x.OrderType == input.NoInfo.NoType && x.OrderNo == input.NoInfo.OrderNo))
x.OrderType == input.OrderType && x.OrderNo == input.OrderNo))
{
throw new BusinessException(message: $"单号:{input.NoInfo.OrderNo}已存在");
throw new BusinessException(message: $"单号:{input.OrderNo}已存在");
}
var order = new OrderEntity
{
CustomId = input.ClientId,
OrderDetails = JsonConvert.SerializeObject(input.Details),
OrderNo = input.NoInfo.OrderNo,
OrderType = input.NoInfo.NoType,
SubSystemId = CurrentUserRequest.SubSystemId
OrderNo = input.OrderNo,
OrderType = input.OrderType,
SubSystemId = CurrentUserRequest.SubSystemId,
IsCompleted = false,
LatestTraceContent = null,
LatestTraceEnContent = null,
LatestTraceTime = null,
OrderDetails = null,
};
using var tran = TransactionHelper.GetReadCommitted();
@ -47,16 +50,24 @@ public class OrderService : ApplicationService
// 创建订单
var orderId = await _orderRepository.InsertReturnIdentityAsync(order);
// 创建订单模板
var templates = input.Templates.Select(x => new OrderTemplateEntity
{
OrderId = orderId,
ServiceProviderId = x.ServiceProviderId,
ServiceProviderId = x.ServiceProviderId ?? 0,
TrackTemplateId = x.TemplateId
}).ToList();
// 创建订单模板
await _orderRepository.CreateOrderTemplatesAsync(templates);
tran.Complete();
return true;
}
[HttpPost("Order/Update")]
public async Task<bool> UpdateOrderAsync(UpdateOrderInput input)
{
return true;
}
}

View File

@ -1,6 +1,4 @@
using System.ComponentModel.DataAnnotations;
namespace SJZY.Track.Domain.Aggregates.OrderAggregate;
namespace SJZY.Track.Domain.Aggregates.OrderAggregate;
/// <summary>
/// 轨迹订单主表
@ -68,36 +66,39 @@ public class OrderEntity : IFullAuditedBasicEntitys, IAggregateRoot
[SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; }
public bool IsEqual(NoInfo noInfo)
{
return OrderType == noInfo.NoType && OrderNo == noInfo.OrderNo;
}
}
public struct NoInfo
{
/// <summary>
/// 订单类型,必填
/// 目的城市
/// </summary>
[Required]
public int NoType { get; set; }
[SugarColumn(ColumnName = "ArrivalCity")]
public string ArrivalCity { get; set; }
/// <summary>
/// 订单号,必填
/// 目的国家
/// </summary>
[Required]
[MaxLength(100)]
public string OrderNo { get; set; }
[SugarColumn(ColumnName = "ArrivalCountry")]
public string ArrivalCountry { get; set; }
public NoInfo(int noType, string orderNo)
{
NoType = noType;
OrderNo = orderNo;
}
/// <summary>
/// 目的港口
/// </summary>
[SugarColumn(ColumnName = "ArrivalPort")]
public string ArrivalPort { get; set; }
public override string ToString()
{
return $"[订单类型: {NoType}, 订单号: {OrderNo}]";
}
/// <summary>
/// 起运城市
/// </summary>
[SugarColumn(ColumnName = "LeaveCity")]
public string LeaveCity { get; set; }
/// <summary>
/// 起运国家
/// </summary>
[SugarColumn(ColumnName = "LeaveCountry")]
public string LeaveCountry { get; set; }
/// <summary>
/// 起运港口
/// </summary>
[SugarColumn(ColumnName = "LeavePort")]
public string LeavePort { get; set; }
}

View File

@ -0,0 +1,38 @@
namespace SJZY.Track.Domain.Aggregates.OrderAggregate;
public class OrderFlightEntity : ICreateBaicEntity, IEntity
{
/// <summary>
/// 自增主键
/// </summary>
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 班期
/// </summary>
[SugarColumn(ColumnName = "FlightDate")]
public DateTime FlightDate { get; set; }
/// <summary>
/// 航班号
/// </summary>
[SugarColumn(ColumnName = "FlightNo")]
public string FlightNo { get; set; }
/// <summary>
/// 订单id
/// </summary>
[SugarColumn(ColumnName = "OrderId")]
public int OrderId { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
}

View File

@ -4,8 +4,7 @@
/// 轨迹订单关联表(1:N)
/// </summary>
[SugarTable("t_order_link")]
public class OrderLinkEntity : ICreateBaicEntity,
ISoftDeleteBasicEntity, IEntity
public class OrderLinkEntity : ICreateBaicEntity, IEntity
{
/// <summary>
/// 自增主键
@ -46,9 +45,4 @@ public class OrderLinkEntity : ICreateBaicEntity,
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 是否删除(已解绑)
/// </summary>
public bool IsDeleted { get; set; }
}