Merge branch 'S01-轨迹中台' of http://192.168.80.50:3000/Dotnet/SJZY.Track.Api into S01-轨迹中台
This commit is contained in:
commit
6f78f868f1
@ -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; }
|
||||||
}
|
}
|
||||||
@ -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();
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -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; }
|
||||||
}
|
}
|
||||||
@ -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; }
|
||||||
|
}
|
||||||
@ -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; }
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user