This commit is contained in:
2026-10-22 11:56:47 +08:00
parent 5d71af1ac9
commit de96e47d74
71 changed files with 1296 additions and 332 deletions
@@ -64,7 +64,15 @@ function partnerWarehousePayload(context) {
}
}
async function createPartnerWarehouse(context) {
export async function createPartnerWarehouse(context) {
if (context.options?.fixedCustomerId) {
const result = await overseas(context, 'GET', '查询可复用采购合作仓', `${BASE}/overseas-procurements/warehouse-options`)
const candidate = Array.isArray(result.data) ? result.data.find(item => longId(item?.warehouseId)) : null
if (!candidate) return blocker(context, '缺少可复用采购合作仓', result.response, '不自动创建仓库')
const resource = { marker: context.marker, id: id(candidate.warehouseId), reused: true, finalStatus: 'ACTIVE', retained: true }
ownedRegistry(context).partnerWarehouse = resource
return resource
}
const created = await domestic(context, 'POST', '创建本轮采购合作仓', '/api/platform/v1/warehouse-admin', partnerWarehousePayload(context))
const warehouseId = id(created.data)
const valid = longId(warehouseId)
@@ -140,7 +148,14 @@ async function prerequisites(context, session) {
if (!activeCustomers.length) return blocker(context, '海外业务写验收 ACTIVE 客户前置', tenants.response,
'IAM 未返回真实 ACTIVE 客户,禁止跳过完整生命周期')
const fixtureCustomerId = id(context.createdResources?.merchantQualificationFixture?.tenantId)
const activeCustomer = activeCustomers.find((item) => id(item?.id) === fixtureCustomerId)
let activeCustomer = activeCustomers.find((item) => id(item?.id) === fixtureCustomerId)
const customerPageSize = Number(tenants.data?.size || 200)
for (let page = 2; !activeCustomer && (page - 1) * customerPageSize < Number(tenants.data?.total); page += 1) {
const next = await domesticGet(context, '分页查询固定客户', `/api/platform/v1/iam/tenants?page=${page}&size=200&status=ACTIVE`)
assertPage(context, '固定客户候选', next)
activeCustomer = records(next.data).find(item => id(item?.id) === fixtureCustomerId && item.status === 'ACTIVE')
if (!records(next.data).length) break
}
if (!longId(fixtureCustomerId) || !activeCustomer) return blocker(context, '本轮资格客户属于 ACTIVE 候选', tenants.response,
`marker fixture 客户 ${fixtureCustomerId || 'missing'} 不在 ACTIVE 候选中,禁止借用其他客户身份`)
const token = await loginMerchant(context, activeCustomer, session)
@@ -490,8 +505,8 @@ async function looseboardFlow(context, customerId) {
}
}
async function retirePartnerWarehouse(context, resource) {
if (!resource?.id) return
export async function retirePartnerWarehouse(context, resource) {
if (!resource?.id || resource.reused) return
const retired = await context.request('PATCH',
`/api/platform/v1/warehouse-admin/${encodeURIComponent(resource.id)}/status?tenantId=0&status=INACTIVE`)
const passed = retired?.http === 200 && codeOf(retired) === '200'