Merge branch 'S01-轨迹中台' of http://192.168.80.50:3000/Dotnet/SJZY.Track.Api into S01-轨迹中台

This commit is contained in:
moyongzhen 2024-02-28 17:19:16 +08:00
commit 6f78f868f1
6 changed files with 154 additions and 96 deletions

View File

@ -1,26 +1,13 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
namespace SJZY.Track.Application.Dtos.ProvideServices; namespace SJZY.Track.Application.Dtos.ProvideServices;
public class CreateOrderInput public class CreateOrderInput : UpdateOrderInput
{ {
public NoInfo NoInfo { get; set; }
/// <summary> /// <summary>
/// 客户id /// 客户id
/// </summary> /// </summary>
public int ClientId { get; set; } public int ClientId { get; set; }
/// <summary>
/// 订单模板
/// </summary>
public List<OrderTemplateInfo> Templates { get; set; }
/// <summary>
/// 订单明细
/// </summary>
public OrderDetails Details { get; set; }
} }
public class OrderTemplateInfo public class OrderTemplateInfo
@ -34,42 +21,7 @@ public class OrderTemplateInfo
/// <summary> /// <summary>
/// 服务商id /// 服务商id
/// </summary> /// </summary>
public int ServiceProviderId { get; set; } 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 class FligthInfo public class FligthInfo
@ -77,10 +29,13 @@ public class FligthInfo
/// <summary> /// <summary>
/// 航班号 /// 航班号
/// </summary> /// </summary>
[Required]
[MaxLength(50)]
public string FlightNo { get; set; } public string FlightNo { get; set; }
/// <summary> /// <summary>
/// 班期 /// 班期
/// </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.Track.Domain.Aggregates.OrderAggregate;
using SJZY.UserCenter.HttpApi.Services; using SJZY.UserCenter.HttpApi.Services;
@ -28,18 +27,22 @@ public class OrderService : ApplicationService
public async Task<bool> CreateOrderAsync(CreateOrderInput input) public async Task<bool> CreateOrderAsync(CreateOrderInput input)
{ {
if (await _orderRepository.IsAnyAsync(x => 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 var order = new OrderEntity
{ {
CustomId = input.ClientId, CustomId = input.ClientId,
OrderDetails = JsonConvert.SerializeObject(input.Details), OrderNo = input.OrderNo,
OrderNo = input.NoInfo.OrderNo, OrderType = input.OrderType,
OrderType = input.NoInfo.NoType, SubSystemId = CurrentUserRequest.SubSystemId,
SubSystemId = CurrentUserRequest.SubSystemId IsCompleted = false,
LatestTraceContent = null,
LatestTraceEnContent = null,
LatestTraceTime = null,
OrderDetails = null,
}; };
using var tran = TransactionHelper.GetReadCommitted(); using var tran = TransactionHelper.GetReadCommitted();
@ -47,16 +50,24 @@ public class OrderService : ApplicationService
// 创建订单 // 创建订单
var orderId = await _orderRepository.InsertReturnIdentityAsync(order); var orderId = await _orderRepository.InsertReturnIdentityAsync(order);
// 创建订单模板
var templates = input.Templates.Select(x => new OrderTemplateEntity var templates = input.Templates.Select(x => new OrderTemplateEntity
{ {
OrderId = orderId, OrderId = orderId,
ServiceProviderId = x.ServiceProviderId, ServiceProviderId = x.ServiceProviderId ?? 0,
TrackTemplateId = x.TemplateId TrackTemplateId = x.TemplateId
}).ToList(); }).ToList();
// 创建订单模板
await _orderRepository.CreateOrderTemplatesAsync(templates); await _orderRepository.CreateOrderTemplatesAsync(templates);
tran.Complete(); tran.Complete();
return true; 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> /// <summary>
/// 轨迹订单主表 /// 轨迹订单主表
@ -68,36 +66,39 @@ public class OrderEntity : IFullAuditedBasicEntitys, IAggregateRoot
[SugarColumn(ColumnName = "SubSystemId")] [SugarColumn(ColumnName = "SubSystemId")]
public int SubSystemId { get; set; } public int SubSystemId { get; set; }
public bool IsEqual(NoInfo noInfo)
{
return OrderType == noInfo.NoType && OrderNo == noInfo.OrderNo;
}
}
public struct NoInfo
{
/// <summary> /// <summary>
/// 订单类型,必填 /// 目的城市
/// </summary> /// </summary>
[Required] [SugarColumn(ColumnName = "ArrivalCity")]
public int NoType { get; set; } public string ArrivalCity { get; set; }
/// <summary> /// <summary>
/// 订单号,必填 /// 目的国家
/// </summary> /// </summary>
[Required] [SugarColumn(ColumnName = "ArrivalCountry")]
[MaxLength(100)] public string ArrivalCountry { get; set; }
public string OrderNo { get; set; }
public NoInfo(int noType, string orderNo) /// <summary>
{ /// 目的港口
NoType = noType; /// </summary>
OrderNo = orderNo; [SugarColumn(ColumnName = "ArrivalPort")]
} public string ArrivalPort { get; set; }
public override string ToString() /// <summary>
{ /// 起运城市
return $"[订单类型: {NoType}, 订单号: {OrderNo}]"; /// </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) /// 轨迹订单关联表(1:N)
/// </summary> /// </summary>
[SugarTable("t_order_link")] [SugarTable("t_order_link")]
public class OrderLinkEntity : ICreateBaicEntity, public class OrderLinkEntity : ICreateBaicEntity, IEntity
ISoftDeleteBasicEntity, IEntity
{ {
/// <summary> /// <summary>
/// 自增主键 /// 自增主键
@ -46,9 +45,4 @@ public class OrderLinkEntity : ICreateBaicEntity,
/// 创建时间 /// 创建时间
/// </summary> /// </summary>
public DateTime? CreateTime { get; set; } public DateTime? CreateTime { get; set; }
/// <summary>
/// 是否删除(已解绑)
/// </summary>
public bool IsDeleted { get; set; }
} }