校验核销码会先检查 余额

This commit is contained in:
yml2213
2026-05-14 13:51:36 +08:00
parent 83cb2ff1fa
commit c7a9787814
3 changed files with 31 additions and 21 deletions
@@ -1,9 +1,9 @@
{
"token": "rEX46KZqfspDZ5CVtDcyLuo9GF5PUqsp2TOHvLuleA3zdQev8sgLJOOHiTjxxo2NLXEm6VrxNx6i9hhEdbFJQwSI",
"token": "P1ifGvDcxYchECzx51cqL2TzBkntjQtRwxpetU7RDMMjsSCmC8kHU751bJ4rJMSSjQN73QveARqGLIWe078nKvnA",
"baseUrl": "https://123.207.217.176",
"username": "17665234375",
"phone": "17665234375",
"loggedInAt": "2026-05-02T15:19:01.258Z",
"loggedInAt": "2026-05-14T05:47:42.507Z",
"deviceId": "-",
"deviceType": 0
}
@@ -97,14 +97,31 @@ export async function verifyKuaishouCloudClaimTicket(token, payload = {}) {
},
}
const updatedTask = await updateTask(context.task.id, {
claim_token: context.claimToken.token,
claim_expires_at: context.claimToken.expired_at,
claimed_at: context.task.claimed_at || now,
context_json: JSON.stringify(nextContext),
last_error: '',
updated_at: now,
})
const preparedFlow = normalizeKuaishouCloudFlow(nextContext.kuaishouCloudFulfillment)
if (preparedFlow.binding.prepareStatus !== 'ready' || !preparedFlow.binding.bindUrl) {
await prepareKuaishouCloudFulfillmentTask({
...context.task,
context_json: JSON.stringify(nextContext),
}, {
source: 'claim_page_ticket_verified',
actor: { source: 'claim_page' },
})
} else {
await updateTask(context.task.id, {
claim_token: context.claimToken.token,
claim_expires_at: context.claimToken.expired_at,
context_json: JSON.stringify(nextContext),
last_error: '',
updated_at: now,
})
}
if (!context.task.claimed_at) {
await updateTask(context.task.id, {
claimed_at: now,
updated_at: now,
})
}
await createTaskEvent(context.task.id, 'kuaishou_cloud_ticket_verified', {
ticketCodeMasked: maskCode(detailResult.eTicketId || ticketCode),
@@ -113,14 +130,6 @@ export async function verifyKuaishouCloudClaimTicket(token, payload = {}) {
goodsTitle: String(detailResult.goods?.itemTitle || '').trim(),
}, now)
const preparedFlow = normalizeKuaishouCloudFlow(nextContext.kuaishouCloudFulfillment)
if (preparedFlow.binding.prepareStatus !== 'ready' || !preparedFlow.binding.bindUrl) {
await prepareKuaishouCloudFulfillmentTask(updatedTask, {
source: 'claim_page_ticket_verified',
actor: { source: 'claim_page' },
})
}
return getClaimDetail(token, { includeQrImage: false })
}
@@ -36,8 +36,9 @@ const task = computed(() => detail.value?.task || null)
const roleName = computed(() => flow.value?.binding.roleName || flow.value?.role.name || '')
const roleId = computed(() => flow.value?.binding.roleId || flow.value?.role.rid || '')
const isTicketVerified = computed(() => flow.value?.ticket.status === 'verified')
const isBindingPrepared = computed(() => flow.value?.binding.prepareStatus === 'ready')
const isBindingPrepared = computed(() => flow.value?.binding.prepareStatus === 'ready' && Boolean(String(flow.value?.binding.bindUrl || '').trim()))
const isBindingPreparing = computed(() => flow.value?.binding.prepareStatus === 'pending')
const canEnterBindingStep = computed(() => isTicketVerified.value && isBindingPrepared.value)
const isRoleReady = computed(() => Boolean(roleName.value || roleId.value))
const isRoleConfirmed = computed(() => String(task.value?.status || '').trim() === 'role_confirmed')
const isDispatched = computed(() => String(flow.value?.dispatch.status || '').trim() === 'success')
@@ -56,7 +57,7 @@ const currentStep = computed(() => {
return 3
}
if (isTicketVerified.value) {
if (canEnterBindingStep.value) {
return 2
}
@@ -71,7 +72,7 @@ const progressText = computed(() => {
return '角色已确认,等待兑换'
}
if (isTicketVerified.value) {
return isBindingPrepared.value ? '请完成扫码绑定' : '系统正在准备绑定资源'
return isBindingPrepared.value ? '请完成扫码绑定' : '绑定资源未准备完成,请重新验证核销码'
}
return '等待提交核销码'
})