增加一个不更换二维码测试

This commit is contained in:
yml2213
2026-08-05 22:06:07 +08:00
parent c91dd4d144
commit 848f65319f
@@ -372,7 +372,10 @@ export async function submitClaimUid(
} }
if (executorKey === 'affiliate_dash') { if (executorKey === 'affiliate_dash') {
updatedTask = (await bindAffiliateDashClaimForTask(updatedTask, expectedUid)) || updatedTask updatedTask =
(await bindAffiliateDashClaimForTask(updatedTask, expectedUid, {
keepExistingBindOnUidUpdate: shouldKeepAffiliateDashBindOnUidUpdate(),
})) || updatedTask
} }
return getKuaishouCloudClaimDetail(token) return getKuaishouCloudClaimDetail(token)
@@ -548,7 +551,11 @@ export async function submitAffiliateDashClaim(
* 提交 UID 后触发 affiliate-dash 绑定(bind),把 bind_uuid / 二维码写回上下文, * 提交 UID 后触发 affiliate-dash 绑定(bind),把 bind_uuid / 二维码写回上下文,
* task → waiting_bindinglink_generated → waiting_binding 合法)。 * task → waiting_bindinglink_generated → waiting_binding 合法)。
*/ */
async function bindAffiliateDashClaimForTask(task: TaskRow, gameAccount: string) { async function bindAffiliateDashClaimForTask(
task: TaskRow,
gameAccount: string,
options: { keepExistingBindOnUidUpdate?: boolean } = {},
) {
const taskContext = parseTaskContextValue(task) const taskContext = parseTaskContextValue(task)
const flow = normalizeAffiliateDashFlow(taskContext.affiliateDash) const flow = normalizeAffiliateDashFlow(taskContext.affiliateDash)
if (!flow.orderNo || !gameAccount) { if (!flow.orderNo || !gameAccount) {
@@ -556,6 +563,42 @@ async function bindAffiliateDashClaimForTask(task: TaskRow, gameAccount: string)
} }
const now = nowIso() const now = nowIso()
const shouldReuseExistingBind = Boolean(
options.keepExistingBindOnUidUpdate &&
flow.bindUuid &&
flow.bound &&
flow.boundAccount &&
normalizeUid(flow.boundAccount) === normalizeUid(gameAccount),
)
if (shouldReuseExistingBind) {
const nextFlow = {
...flow,
gameAccount,
expectedGameAccount: gameAccount,
bindMismatch: false,
}
const updatedTask = await updateTask(task.id, {
task_status: TASK_STATUS.WAITING_BINDING,
context_json: JSON.stringify({
...taskContext,
affiliateDash: nextFlow,
}),
updated_at: now,
})
await createTaskEvent(
task.id,
'affiliate_dash_bind_reused_for_uid_update',
{
orderNo: flow.orderNo,
bindUuid: flow.bindUuid,
gameAccount,
boundAccount: flow.boundAccount,
},
now,
)
return updatedTask || task
}
const bindResult = await bindAffiliateDashDelivery({ const bindResult = await bindAffiliateDashDelivery({
orderNo: flow.orderNo, orderNo: flow.orderNo,
gameAccount, gameAccount,
@@ -648,6 +691,11 @@ async function refreshAffiliateDashBindState(task: TaskRow): Promise<TaskRow | n
} }
} }
function shouldKeepAffiliateDashBindOnUidUpdate() {
const value = String(process.env.AFFILIATE_DASH_KEEP_BIND_ON_UID_UPDATE || '').trim().toLowerCase()
return value === '1' || value === 'true' || value === 'yes' || value === 'on'
}
function normalizeUid(value: unknown) { function normalizeUid(value: unknown) {
return String(value || '') return String(value || '')
.trim() .trim()