增加一个不更换二维码测试
This commit is contained in:
@@ -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_binding(link_generated → waiting_binding 合法)。
|
* task → waiting_binding(link_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()
|
||||||
|
|||||||
Reference in New Issue
Block a user