修复小店核销bug, 链接10分钟

This commit is contained in:
yml2213
2026-05-14 16:31:56 +08:00
parent 89ffc9b087
commit 91d74b3e59
8 changed files with 104 additions and 31 deletions
@@ -459,11 +459,12 @@ export async function returnNumberAdminTaskKuaishouCloudFulfillment(taskId, sess
const order = await getOrderById(task.order_id)
const ticketCode = String(flow.ticket.code || '').trim()
const shopId = String(order?.shop_id || '').trim()
const shopId = String(flow.consume.shopId || order?.shop_id || '').trim()
const shopName = String(flow.consume.shopName || order?.shop_name || '').trim()
const eticketSource = getKuaishouEticketSourceConfig()
const shopConfig = resolveKuaishouEticketShopConfig({
shopId,
shopName: String(order?.shop_name || '').trim(),
shopName,
})
let consumeStatus = 'pending'
let consumeErrorMessage = ''
@@ -530,7 +531,7 @@ export async function returnNumberAdminTaskKuaishouCloudFulfillment(taskId, sess
...flow.consume,
status: consumeStatus,
shopId: shopId || flow.consume.shopId,
shopName: String(flow.consume.shopName || order?.shop_name || '').trim(),
shopName,
autoConsumeEnabled: flow.consume.autoConsumeEnabled === true,
consumedAt,
errorMessage: consumeErrorMessage,
@@ -560,6 +561,7 @@ export async function returnNumberAdminTaskKuaishouCloudFulfillment(taskId, sess
{
ticketCodeMasked: maskCode(ticketCode),
shopId,
shopName,
consumeStatus,
errorMessage: consumeErrorMessage,
},
@@ -144,7 +144,7 @@ export function resolveKuaishouCloudBindUrlExpiresAt(preparedAt) {
}
const config = resolveCloudtentaclesConfig()
const ttlSeconds = Number(config.bindUrlTtlSeconds || 300)
const ttlSeconds = Number(config.bindUrlTtlSeconds || 600)
return new Date(preparedTime + Math.max(1, ttlSeconds) * 1000).toISOString()
}
@@ -890,11 +890,12 @@ export async function returnKuaishouCloudFulfillmentTask(task, options = {}) {
const order = await getOrderById(task.order_id)
const ticketCode = String(flow.ticket.code || '').trim()
const shopId = String(order?.shop_id || '').trim()
const shopId = String(flow.consume.shopId || order?.shop_id || '').trim()
const shopName = String(flow.consume.shopName || order?.shop_name || '').trim()
const eticketSource = getKuaishouEticketSourceConfig()
const shopConfig = resolveKuaishouEticketShopConfig({
shopId,
shopName: String(order?.shop_name || '').trim(),
shopName,
})
let consumeStatus = 'pending'
@@ -956,7 +957,7 @@ export async function returnKuaishouCloudFulfillmentTask(task, options = {}) {
...flow.consume,
status: consumeStatus,
shopId: shopId || flow.consume.shopId,
shopName: String(flow.consume.shopName || order?.shop_name || '').trim(),
shopName,
autoConsumeEnabled: flow.consume.autoConsumeEnabled === true,
consumedAt,
errorMessage: consumeErrorMessage,
@@ -989,6 +990,7 @@ export async function returnKuaishouCloudFulfillmentTask(task, options = {}) {
source: String(options.source || 'system').trim() || 'system',
ticketCodeMasked: maskCode(ticketCode),
shopId,
shopName,
consumeStatus,
errorMessage: consumeErrorMessage,
actor,
@@ -1035,7 +1037,7 @@ export function resolveKuaishouCloudBindUrlExpiresAt(preparedAt) {
}
const config = resolveCloudtentaclesConfig()
const ttlSeconds = Number(config.bindUrlTtlSeconds || 300)
const ttlSeconds = Number(config.bindUrlTtlSeconds || 600)
return new Date(preparedTime + Math.max(1, ttlSeconds) * 1000).toISOString()
}
@@ -2,6 +2,7 @@ import fs from 'node:fs'
import path from 'node:path'
import { PROJECT_ROOT } from '../../config/runtime.js'
import { resolveKuaishouEticketShopConfig } from '../platforms/kuaishou-eticket/source-config-service.js'
const KUAISHOU_CLOUD_FULFILLMENT_FILE_PATH = path.join(PROJECT_ROOT, 'data', 'kuaishou-cloud-fulfillment.json')
@@ -103,6 +104,12 @@ function normalizeKuaishouCloudFulfillmentItem(rawValue) {
const externalSkuCode = String(rawValue.externalSkuCode || '').trim()
const externalItemId = String(rawValue.externalItemId || '').trim()
const externalSkuName = String(rawValue.externalSkuName || '').trim()
const kuaishouConsumeShopId = String(rawValue.kuaishouConsumeShopId || '').trim()
const kuaishouConsumeShopName = String(rawValue.kuaishouConsumeShopName || '').trim()
const kuaishouShopConfig = resolveKuaishouEticketShopConfig({
shopId: kuaishouConsumeShopId,
shopName: kuaishouConsumeShopName,
})
if (!internalSkuCode) {
return null
@@ -137,8 +144,8 @@ function normalizeKuaishouCloudFulfillmentItem(rawValue) {
minAssetReserve: normalizeNonNegativeInteger(rawValue.minAssetReserve, 0),
autoReturnNumberAfterDispatch: rawValue.autoReturnNumberAfterDispatch === true,
autoConsumeAfterDispatch: rawValue.autoConsumeAfterDispatch === true,
kuaishouConsumeShopId: String(rawValue.kuaishouConsumeShopId || '').trim(),
kuaishouConsumeShopName: String(rawValue.kuaishouConsumeShopName || '').trim(),
kuaishouConsumeShopId: String(kuaishouShopConfig?.shopId || kuaishouConsumeShopId).trim(),
kuaishouConsumeShopName: String(kuaishouShopConfig?.kshopName || kuaishouConsumeShopName).trim(),
notes: String(rawValue.notes || '').trim(),
}
}
@@ -27,7 +27,7 @@ export function resolveCloudtentaclesConfig(overrides = {}) {
vnBindUrlPath: '/vn/bind_url',
vnBindInfoPath: '/vn/bind_info',
vnBackPath: '/vn/back',
bindUrlTtlSeconds: 300,
bindUrlTtlSeconds: 600,
bindUrlProbeIntervalSeconds: 30,
bindUrlProbeTimeoutMs: 5000,
bindUrlProbeUserAgent: '',
@@ -71,7 +71,7 @@ export function resolveCloudtentaclesConfig(overrides = {}) {
vnBindUrlPath: normalizePath(overrides.vnBindUrlPath || baseConfig.vnBindUrlPath, '/vn/bind_url'),
vnBindInfoPath: normalizePath(overrides.vnBindInfoPath || baseConfig.vnBindInfoPath, '/vn/bind_info'),
vnBackPath: normalizePath(overrides.vnBackPath || baseConfig.vnBackPath, '/vn/back'),
bindUrlTtlSeconds: normalizePositiveInteger(overrides.bindUrlTtlSeconds || baseConfig.bindUrlTtlSeconds, 300),
bindUrlTtlSeconds: normalizePositiveInteger(overrides.bindUrlTtlSeconds || baseConfig.bindUrlTtlSeconds, 600),
bindUrlProbeIntervalSeconds: normalizePositiveInteger(
overrides.bindUrlProbeIntervalSeconds || baseConfig.bindUrlProbeIntervalSeconds,
30,