fix(acceptance): complete overseas fulfillment closure
This commit is contained in:
@@ -250,13 +250,30 @@ export async function run(context) {
|
||||
outbound.data?.outbound?.outboundNo === outboundNo && outbound.data?.outbound?.status === 'OUTBOUNDED',
|
||||
trace(outbound.response), OPTIONS)
|
||||
|
||||
const deliveryBeforeStatus = await platform(context, 'GET', '读取派送状态更新即时版本',
|
||||
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}`, { customerId }))
|
||||
const deliveryVersion = Number(deliveryBeforeStatus.data?.order?.version)
|
||||
context.assert(MODULE, '派送详情提供状态乐观锁版本', deliveryBeforeStatus.response,
|
||||
Number.isInteger(deliveryVersion) && deliveryVersion >= 0,
|
||||
`version=${deliveryBeforeStatus.data?.order?.version ?? 'missing'}; ${trace(deliveryBeforeStatus.response)}`, OPTIONS)
|
||||
if (!Number.isInteger(deliveryVersion) || deliveryVersion < 0) return
|
||||
const delivering = await platform(context, 'PUT', '派送单推进配送中',
|
||||
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/status`, { customerId }),
|
||||
{ status: 'DELIVERING', remark: `${context.marker}-delivering` })
|
||||
{ status: 'DELIVERING', expectedVersion: deliveryVersion, remark: `${context.marker}-delivering` })
|
||||
context.assert(MODULE, '派送状态进入DELIVERING', delivering.response,
|
||||
delivering.data?.deliveryStatus === 'DELIVERING', trace(delivering.response), OPTIONS)
|
||||
if (!success(delivering.response)) return
|
||||
const deliveryBeforeComplete = await platform(context, 'GET', '读取派送完成即时版本',
|
||||
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}`, { customerId }))
|
||||
const completeVersion = Number(deliveryBeforeComplete.data?.order?.version)
|
||||
context.assert(MODULE, '配送中详情版本已递增', deliveryBeforeComplete.response,
|
||||
Number.isInteger(completeVersion) && completeVersion > deliveryVersion,
|
||||
`before=${deliveryVersion}, after=${deliveryBeforeComplete.data?.order?.version ?? 'missing'}; ${trace(deliveryBeforeComplete.response)}`,
|
||||
OPTIONS)
|
||||
if (!Number.isInteger(completeVersion) || completeVersion <= deliveryVersion) return
|
||||
const completed = await platform(context, 'POST', '确认派送完成并生成客户回访',
|
||||
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }))
|
||||
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }),
|
||||
{ status: 'DELIVERED', expectedVersion: completeVersion, remark: `${context.marker}-delivered` })
|
||||
const visitId = id(completed.data?.visitId)
|
||||
context.assert(MODULE, '派送完成生成PENDING回访记录', completed.response,
|
||||
completed.data?.deliveryStatus === 'DELIVERED' && completed.data?.visitStatus === 'PENDING'
|
||||
@@ -264,7 +281,8 @@ export async function run(context) {
|
||||
if (!success(completed.response) || !visitId) return
|
||||
context.createdResources.phase5OverseasFulfillment.visitId = visitId
|
||||
const completeReplay = await platform(context, 'POST', '确认派送完成重复调用',
|
||||
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }))
|
||||
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }),
|
||||
{ status: 'DELIVERED', expectedVersion: completeVersion, remark: `${context.marker}-delivered` })
|
||||
context.assert(MODULE, '派送完成重放复用同一回访', completeReplay.response,
|
||||
completeReplay.data?.replayed === true && id(completeReplay.data?.visitId) === visitId,
|
||||
trace(completeReplay.response), OPTIONS)
|
||||
|
||||
Reference in New Issue
Block a user