admin/src/Oms.Application/Dtos/Orders/OpenApiParcelCreateInput.cs
zzh 87f4cebc9b
All checks were successful
Build and Deploy / deploy (push) Successful in 56s
feat: openApi 统一信封与推费字段对齐,下单鉴权改请求头
推费入参对齐表字段;创建订单凭证走 appKey/appSecret Header,去掉上门揽收与 Body 内 customerId。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 12:17:50 +08:00

150 lines
5.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Oms.Domain.OrdersAggregate.Consts;
namespace Oms.Application.Dtos.Orders;
/// <summary>
/// 开放接口创建订单包裹入参:与单票字段对齐(不含上门揽收)。
/// 鉴权凭证放请求头 appKey / appSecret,勿放入 Body。
/// </summary>
public class OpenApiParcelCreateInput
{
/// <summary>请求标识(幂等,可选)。</summary>
public string? RequestId { get; set; }
/// <summary>客户单号。</summary>
public string? ClientNo { get; set; }
/// <summary>跟踪号(可选,系统通常忽略由下游回写)。</summary>
public string? TrackNo { get; set; }
/// <summary>服务单号(可选,不传时系统自动生成)。</summary>
public string? ServiceNo { get; set; }
/// <summary>产品编码(运输方式)。</summary>
public string? ProductCode { get; set; }
/// <summary>渠道编码(可选)。</summary>
public string? ChannelCode { get; set; }
/// <summary>货物属性(字典 cargo_attribute:general / electronics / sensitive)。</summary>
public string? CargoAttribute { get; set; }
/// <summary>出口报关方式(字典 export_customs_mode)。</summary>
public string? ExportCustomsMode { get; set; }
/// <summary>出口资质备案 Id(9610 汇总申报时)。</summary>
public int? ExportQualificationId { get; set; }
/// <summary>电商平台(9610 汇总申报时)。</summary>
public string? PlatformCode { get; set; }
/// <summary>仓库主键。</summary>
public int? WarehouseId { get; set; }
/// <summary>长(cm)。</summary>
public decimal? Length { get; set; }
/// <summary>宽(cm)。</summary>
public decimal? Width { get; set; }
/// <summary>高(cm)。</summary>
public decimal? Height { get; set; }
/// <summary>实重(kg)。</summary>
public decimal? ActualWeight { get; set; }
/// <summary>体积重(kg,可选)。</summary>
public decimal? VolumetricWeight { get; set; }
/// <summary>计费重(kg,可选)。</summary>
public decimal? ChargeableWeight { get; set; }
/// <summary>体积(cm³,可选)。</summary>
public decimal? Cubic { get; set; }
/// <summary>是否 COD。</summary>
public bool IsCod { get; set; }
/// <summary>COD 币种。</summary>
public string? CodCurrency { get; set; }
/// <summary>COD 金额。</summary>
public decimal? CodSum { get; set; }
/// <summary>申报币种(字典 currency)。</summary>
public string? DeclaredCurrency { get; set; }
/// <summary>申报总金额(可选,不填可由明细汇总)。</summary>
public decimal? DeclaredSum { get; set; }
/// <summary>附加服务字典 code 列表。</summary>
public List<string>? AdditionalServices { get; set; }
/// <summary>是否偏远(可选预传)。</summary>
public byte? IsRemote { get; set; }
/// <summary>包裹数量。</summary>
public int? Quantity { get; set; }
/// <summary>收件人。</summary>
public OrderParcelReceiverInput? Receiver { get; set; }
/// <summary>寄件人。</summary>
public OrderParcelSenderInput? Sender { get; set; }
/// <summary>申报明细。</summary>
public List<OrderParcelItemInput> Items { get; set; } = [];
/// <summary>优惠券实例 Id(可选)。</summary>
public int? CouponInstanceId { get; set; }
/// <summary>仅保存草稿,不预报计费。</summary>
public bool SaveAsDraft { get; set; }
/// <summary>
/// 映射为内部单票创建入参。开放接口固定自发货(selfShip),客户 Id 由凭证解析后写入。
/// </summary>
public OrderParcelCreateInput ToOrderParcelCreateInput(int customerId) =>
new()
{
RequestId = RequestId,
ClientNo = ClientNo,
TrackNo = TrackNo,
ServiceNo = ServiceNo,
ProductCode = ProductCode,
ChannelCode = ChannelCode,
CargoAttribute = CargoAttribute,
ExportCustomsMode = ExportCustomsMode,
ExportQualificationId = ExportQualificationId,
PlatformCode = PlatformCode,
WarehouseId = WarehouseId,
CustomerId = customerId,
Length = Length,
Width = Width,
Height = Height,
ActualWeight = ActualWeight,
VolumetricWeight = VolumetricWeight,
ChargeableWeight = ChargeableWeight,
Cubic = Cubic,
IsCod = IsCod,
CodCurrency = CodCurrency,
CodSum = CodSum,
DeclaredCurrency = DeclaredCurrency,
DeclaredSum = DeclaredSum,
AdditionalServices = AdditionalServices,
IsRemote = IsRemote,
Quantity = Quantity,
Receiver = Receiver,
Sender = Sender,
Items = Items ?? [],
CouponInstanceId = CouponInstanceId,
SaveAsDraft = SaveAsDraft,
InboundMethod = OrderInboundMethodCodes.SelfShip,
SenderAddressId = null,
ExpectPickupTime = null,
PickupDirection = null,
CarrierCode = null,
CarrierService = null
};
}