修复错误

This commit is contained in:
yml2213
2026-07-08 20:41:29 +08:00
parent 487d586492
commit 7b215a66a5
6 changed files with 436 additions and 27 deletions
@@ -110,10 +110,31 @@ async function insertKuaishouIndustryVoucher(
task_id = COALESCE(kuaishou_industry_vouchers.task_id, EXCLUDED.task_id),
valid_start_time = EXCLUDED.valid_start_time,
valid_end_time = EXCLUDED.valid_end_time,
send_callback_status = EXCLUDED.send_callback_status,
send_callback_last_error = EXCLUDED.send_callback_last_error,
send_callback_response_json = EXCLUDED.send_callback_response_json,
send_callback_sent_at = EXCLUDED.send_callback_sent_at,
send_callback_status = CASE
WHEN kuaishou_industry_vouchers.send_callback_status = 'success'
THEN kuaishou_industry_vouchers.send_callback_status
ELSE EXCLUDED.send_callback_status
END,
send_callback_attempt_count = CASE
WHEN kuaishou_industry_vouchers.send_callback_status = 'success'
THEN kuaishou_industry_vouchers.send_callback_attempt_count
ELSE EXCLUDED.send_callback_attempt_count
END,
send_callback_last_error = CASE
WHEN kuaishou_industry_vouchers.send_callback_status = 'success'
THEN kuaishou_industry_vouchers.send_callback_last_error
ELSE EXCLUDED.send_callback_last_error
END,
send_callback_response_json = CASE
WHEN kuaishou_industry_vouchers.send_callback_status = 'success'
THEN kuaishou_industry_vouchers.send_callback_response_json
ELSE EXCLUDED.send_callback_response_json
END,
send_callback_sent_at = CASE
WHEN kuaishou_industry_vouchers.send_callback_status = 'success'
THEN kuaishou_industry_vouchers.send_callback_sent_at
ELSE EXCLUDED.send_callback_sent_at
END,
raw_payload_json = EXCLUDED.raw_payload_json,
updated_at = EXCLUDED.updated_at
RETURNING *
@@ -163,6 +184,23 @@ export async function listKuaishouIndustryVouchersByOid(
return result.rows
}
export async function listKuaishouIndustryVouchersForSendCallbackRetry(
limit = 100,
): Promise<KuaishouIndustryVoucherRow[]> {
const result = await query<KuaishouIndustryVoucherRow>(
`
SELECT *
FROM kuaishou_industry_vouchers
WHERE send_callback_status <> 'success'
ORDER BY COALESCE(send_callback_sent_at, created_at) ASC, id ASC
LIMIT $1
`,
[normalizePositiveLimit(limit, 100)],
)
return result.rows
}
export async function listKuaishouIndustryVouchersByTaskId(
taskId: number | string,
): Promise<KuaishouIndustryVoucherRow[]> {
@@ -388,6 +426,11 @@ function normalizeNonNegativeInteger(value: unknown, fallback: number) {
return Number.isInteger(parsed) && parsed >= 0 ? parsed : fallback
}
function normalizePositiveLimit(value: unknown, fallback: number): number {
const parsed = Number(value)
return Number.isFinite(parsed) && parsed > 0 ? Math.trunc(parsed) : fallback
}
function stringifyJson(value: unknown): string {
if (typeof value === 'string') {
return value