diff --git a/src/SJZY.Track.Application/Dtos/ProvideServices/CreateOrderInput.cs b/src/SJZY.Track.Application/Dtos/ProvideServices/CreateOrderInput.cs index d099eaaa..31b917f2 100644 --- a/src/SJZY.Track.Application/Dtos/ProvideServices/CreateOrderInput.cs +++ b/src/SJZY.Track.Application/Dtos/ProvideServices/CreateOrderInput.cs @@ -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; } - /// /// 客户id /// public int ClientId { get; set; } - - /// - /// 订单模板 - /// - public List Templates { get; set; } - - /// - /// 订单明细 - /// - public OrderDetails Details { get; set; } } public class OrderTemplateInfo @@ -34,42 +21,7 @@ public class OrderTemplateInfo /// /// 服务商id /// - public int ServiceProviderId { get; set; } -} - -public class OrderDetails -{ - /// - /// 目的港口 - /// - public string? ArrivalPort { get; set; } - - /// - /// 起运港口 - /// - public string? LeavePort { get; set; } - - /// - /// 目的国家,必填 - /// - public string ArrivalCountry { get; set; } - - /// - /// 起运国家,必填 - /// - public string LeaveCountry { get; set; } - - /// - /// 目的城市,必填 - /// - public string ArrivalCity { get; set; } - - /// - /// 起运城市,必填 - /// - public string LeaveCity { get; set; } - - public List FligthInfos { get; set; } + public int? ServiceProviderId { get; set; } } public class FligthInfo @@ -77,10 +29,13 @@ public class FligthInfo /// /// 航班号 /// + [Required] + [MaxLength(50)] public string FlightNo { get; set; } /// /// 班期 /// - public string FlightDate { get; set; } + [Required] + public DateTime FlightDate { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Dtos/ProvideServices/UpdateOrderInput.cs b/src/SJZY.Track.Application/Dtos/ProvideServices/UpdateOrderInput.cs new file mode 100644 index 00000000..88b12be1 --- /dev/null +++ b/src/SJZY.Track.Application/Dtos/ProvideServices/UpdateOrderInput.cs @@ -0,0 +1,59 @@ +using System.ComponentModel.DataAnnotations; + +namespace SJZY.Track.Application.Dtos.ProvideServices; + +public class UpdateOrderInput +{ + /// + /// 订单类型,必填 + /// + [Required] + public int OrderType { get; set; } + + /// + /// 订单号,必填 + /// + [Required] + [MaxLength(100)] + public string OrderNo { get; set; } + + /// + /// 订单模板(传全量) + /// + public List Templates { get; set; } = new(); + + /// + /// 目的港口 + /// + public string? ArrivalPort { get; set; } + + /// + /// 起运港口 + /// + public string? LeavePort { get; set; } + + /// + /// 目的国家,必填 + /// + public string ArrivalCountry { get; set; } + + /// + /// 起运国家,必填 + /// + public string LeaveCountry { get; set; } + + /// + /// 目的城市,必填 + /// + public string ArrivalCity { get; set; } + + /// + /// 起运城市,必填 + /// + public string LeaveCity { get; set; } + + /// + /// 订单航班信息 + /// + public List FlightInfos { get; set; } = new(); +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs index e40ed43e..a5a37ce2 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs @@ -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 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 UpdateOrderAsync(UpdateOrderInput input) + { + return true; + } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs index e474f40e..9fe699e4 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs @@ -1,6 +1,4 @@ -using System.ComponentModel.DataAnnotations; - -namespace SJZY.Track.Domain.Aggregates.OrderAggregate; +namespace SJZY.Track.Domain.Aggregates.OrderAggregate; /// /// 轨迹订单主表 @@ -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 -{ /// - /// 订单类型,必填 + /// 目的城市 /// - [Required] - public int NoType { get; set; } + [SugarColumn(ColumnName = "ArrivalCity")] + public string ArrivalCity { get; set; } /// - /// 订单号,必填 + /// 目的国家 /// - [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; - } + /// + /// 目的港口 + /// + [SugarColumn(ColumnName = "ArrivalPort")] + public string ArrivalPort { get; set; } - public override string ToString() - { - return $"[订单类型: {NoType}, 订单号: {OrderNo}]"; - } + /// + /// 起运城市 + /// + [SugarColumn(ColumnName = "LeaveCity")] + public string LeaveCity { get; set; } + + /// + /// 起运国家 + /// + [SugarColumn(ColumnName = "LeaveCountry")] + public string LeaveCountry { get; set; } + + /// + /// 起运港口 + /// + [SugarColumn(ColumnName = "LeavePort")] + public string LeavePort { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderFlightEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderFlightEntity.cs new file mode 100644 index 00000000..8e828946 --- /dev/null +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderFlightEntity.cs @@ -0,0 +1,38 @@ +namespace SJZY.Track.Domain.Aggregates.OrderAggregate; + +public class OrderFlightEntity : ICreateBaicEntity, IEntity +{ + /// + /// 自增主键 + /// + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + /// + /// 班期 + /// + [SugarColumn(ColumnName = "FlightDate")] + public DateTime FlightDate { get; set; } + + /// + /// 航班号 + /// + [SugarColumn(ColumnName = "FlightNo")] + public string FlightNo { get; set; } + + /// + /// 订单id + /// + [SugarColumn(ColumnName = "OrderId")] + public int OrderId { get; set; } + + /// + /// 创建人 + /// + public int CreateUserId { get; set; } + + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs index 96c005b5..bc94704a 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs @@ -4,8 +4,7 @@ /// 轨迹订单关联表(1:N) /// [SugarTable("t_order_link")] -public class OrderLinkEntity : ICreateBaicEntity, - ISoftDeleteBasicEntity, IEntity +public class OrderLinkEntity : ICreateBaicEntity, IEntity { /// /// 自增主键 @@ -46,9 +45,4 @@ public class OrderLinkEntity : ICreateBaicEntity, /// 创建时间 /// public DateTime? CreateTime { get; set; } - - /// - /// 是否删除(已解绑) - /// - public bool IsDeleted { get; set; } } \ No newline at end of file