新增地址簿 CRUD、pickup/create、订单 orderSource 筛选;附带包裹商品图片上传接口。 Co-authored-by: Cursor <cursoragent@cursor.com>
90 lines
3.2 KiB
C#
90 lines
3.2 KiB
C#
using Oms.Application.Dtos.Orders;
|
|
using Oms.Domain.OrdersAggregate.Consts;
|
|
using Oms.Domain.OrdersAggregate.Entities;
|
|
using Oms.Domain.SystemAggregate.Entities;
|
|
|
|
namespace Oms.Application.Services.Orders;
|
|
|
|
/// <summary>
|
|
/// 揽收订单 → 小包创建入参组装。
|
|
/// </summary>
|
|
public static class PickupOrderParcelBuilder
|
|
{
|
|
public static OrderParcelCreateInput Build(
|
|
OrderPickupCreateInput input,
|
|
CustomerSenderAddress senderAddress,
|
|
WarehouseAddress warehouse,
|
|
int customerId,
|
|
string? senderCountryCode)
|
|
{
|
|
var cargoName = input.CargoName.Trim();
|
|
var weight = input.ActualWeight;
|
|
var clientNo = string.IsNullOrWhiteSpace(input.ClientNo)
|
|
? $"PK{DateTime.Now:yyyyMMddHHmmss}{Random.Shared.Next(1000, 9999)}"
|
|
: input.ClientNo.Trim();
|
|
|
|
var receiverName = string.IsNullOrWhiteSpace(warehouse.Recipient)
|
|
? warehouse.WarehouseName
|
|
: warehouse.Recipient!.Trim();
|
|
var street = string.IsNullOrWhiteSpace(warehouse.ShippingAddress)
|
|
? warehouse.WarehouseName
|
|
: warehouse.ShippingAddress!.Trim();
|
|
|
|
return new OrderParcelCreateInput
|
|
{
|
|
RequestId = string.IsNullOrWhiteSpace(input.RequestId) ? null : input.RequestId.Trim(),
|
|
ClientNo = clientNo,
|
|
ProductCode = input.ProductCode.Trim(),
|
|
WarehouseId = input.WarehouseId,
|
|
CustomerId = customerId,
|
|
Length = 1,
|
|
Width = 1,
|
|
Height = 1,
|
|
ActualWeight = weight,
|
|
CargoAttribute = string.IsNullOrWhiteSpace(input.CargoAttribute)
|
|
? CargoAttributeCodes.General
|
|
: input.CargoAttribute.Trim(),
|
|
DeclaredCurrency = "CNY",
|
|
DeclaredSum = 1,
|
|
Quantity = 1,
|
|
Sender = new OrderParcelSenderInput
|
|
{
|
|
SenderName = senderAddress.SenderName,
|
|
Company = senderAddress.Company,
|
|
Phone = senderAddress.Phone,
|
|
TelePhone = senderAddress.TelePhone,
|
|
Email = senderAddress.Email,
|
|
CountryCode = senderCountryCode ?? "CN",
|
|
Province = senderAddress.Province,
|
|
City = senderAddress.City,
|
|
ZipCode = senderAddress.ZipCode,
|
|
StreetAddress1 = senderAddress.StreetAddress1,
|
|
StreetAddress2 = senderAddress.StreetAddress2,
|
|
StreetAddress3 = senderAddress.StreetAddress3,
|
|
HouseNumber = senderAddress.HouseNumber
|
|
},
|
|
Receiver = new OrderParcelReceiverInput
|
|
{
|
|
RecipientsName = receiverName,
|
|
Phone = warehouse.ContactPhone,
|
|
CountryCode = "CN",
|
|
ZipCode = "000000",
|
|
StreetAddress1 = street
|
|
},
|
|
Items =
|
|
[
|
|
new OrderParcelItemInput
|
|
{
|
|
CnName = cargoName,
|
|
EnName = cargoName,
|
|
UnitPrice = 1,
|
|
UnitWeight = weight,
|
|
Quantity = 1,
|
|
Amount = 1,
|
|
Weight = weight
|
|
}
|
|
]
|
|
};
|
|
}
|
|
}
|