增加履约高级配置

This commit is contained in:
yml2213
2026-05-26 22:56:41 +08:00
parent 5377f8893d
commit e8010728a4
18 changed files with 858 additions and 62 deletions
@@ -106,6 +106,7 @@ test('mapAdminKuaishouCloudFulfillmentSource normalizes items and defaults', ()
cloudSourceKeys: ['account_a', 'account_b'],
cloudSkuId: 0,
cloudSkuName: '',
deliveryItems: [],
vnKey: '',
autoBuyEnabled: true,
minAssetReserve: 0,
@@ -62,6 +62,7 @@ export function mapAdminCloudtentaclesSession(session: JsonObject = {}) {
}
export function mapAdminKuaishouCloudFulfillmentItem(item: JsonObject = {}) {
const deliveryItems = normalizeDeliveryItems(item);
return {
id: String(item.id || "").trim(),
enabled: item.enabled !== false,
@@ -82,6 +83,7 @@ export function mapAdminKuaishouCloudFulfillmentItem(item: JsonObject = {}) {
: [],
cloudSkuId: Number(item.cloudSkuId || 0) || 0,
cloudSkuName: String(item.cloudSkuName || "").trim(),
deliveryItems,
vnKey: String(item.vnKey || "").trim(),
autoBuyEnabled: item.autoBuyEnabled !== false,
minAssetReserve: Number(item.minAssetReserve || 0) || 0,
@@ -101,3 +103,42 @@ export function mapAdminKuaishouCloudFulfillmentSource(config: JsonObject = {})
),
};
}
function normalizeDeliveryItems(item: JsonObject = {}) {
const rawItems = Array.isArray(item.deliveryItems) ? item.deliveryItems : [];
const normalizedItems = rawItems
.map((value) => normalizeDeliveryItem(value))
.filter(Boolean);
if (normalizedItems.length > 0) {
return normalizedItems;
}
const cloudSkuId = Number(item.cloudSkuId || 0) || 0;
if (cloudSkuId <= 0) {
return [];
}
return [
{
cloudSkuId,
cloudSkuName: String(item.cloudSkuName || "").trim(),
quantity: 1,
},
];
}
function normalizeDeliveryItem(value: unknown) {
const source = value && typeof value === "object" ? value as JsonObject : {};
const cloudSkuId = Number(source.cloudSkuId || source.skuId || 0) || 0;
if (cloudSkuId <= 0) {
return null;
}
const quantity = Number(source.quantity || 1) || 1;
return {
cloudSkuId,
cloudSkuName: String(source.cloudSkuName || source.skuName || "").trim(),
quantity: Math.max(1, Math.round(quantity)),
};
}