快手发码数据接入发单平台工单侧
- 新增 sync-work-orders-from-send-code 服务:91 先到则回填 shopId/补建工单/凭证回填 material_json;91 未到则兜底建单建工单 - order-service 与 ninetyone order-service 改用 findLatestOrderByPlatformOrderId,放宽 shopId 查重避免重复建单 - work-order-repo 新增 listWorkOrdersByPlatformOrderId 供兜底查重 - send-code-service 挂接同步逻辑并吞错,不影响发码主流程 - ProductRulesPanel 新增店铺列 - .gitignore 忽略 send_code/ 与 .reasonix/
This commit is contained in:
@@ -10,8 +10,9 @@ import {
|
||||
} from '../../../repositories/kuaishou-industry-voucher-repo.js'
|
||||
import { OPEN_91_PLATFORM, OPEN_91_PROVIDER } from '../../open-91/config.js'
|
||||
import { retryOpen91Order } from '../ninetyone/order-service.js'
|
||||
import { syncWorkOrdersFromKuaishouSendCode } from '../../worker-platform/sync-work-orders-from-send-code.js'
|
||||
import { normalizeTimestampIso } from '../../../utils/time.js'
|
||||
import { logIntegration } from '../../../utils/logger.js'
|
||||
import { logWarn, logIntegration } from '../../../utils/logger.js'
|
||||
import {
|
||||
getKuaishouIndustryConfig,
|
||||
assertMatchingAppKey,
|
||||
@@ -119,6 +120,24 @@ export async function handleSendCode(rawBody: JsonObject = {}) {
|
||||
})
|
||||
}
|
||||
|
||||
await syncWorkOrdersFromKuaishouSendCode({
|
||||
oid: normalizedOid,
|
||||
sellerId: params.sellerId,
|
||||
itemId: params.itemId,
|
||||
itemTitle: params.itemTitle,
|
||||
skuId: params.skuId,
|
||||
num: params.num,
|
||||
paymentFen: resolveSendCodePaymentFen(params.ext),
|
||||
rawParams: params,
|
||||
vouchers,
|
||||
now,
|
||||
}).catch((error) => {
|
||||
logWarn('[kuaishou-industry/send-code]', '发单平台工单同步失败,不影响发码主流程', {
|
||||
oid: normalizedOid,
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
})
|
||||
})
|
||||
|
||||
scheduleKuaishouIndustrySendCallbackRetry(normalizedOid, SEND_CALLBACK_INITIAL_DELAY_MS, {
|
||||
source: 'send_code_accepted',
|
||||
})
|
||||
@@ -671,6 +690,17 @@ function normalizePositiveInteger(value: unknown): number {
|
||||
return Number.isFinite(parsed) && parsed > 0 ? Math.trunc(parsed) : 0
|
||||
}
|
||||
|
||||
function resolveSendCodePaymentFen(ext: unknown): number {
|
||||
const parsed = parseJsonObject(ext)
|
||||
return normalizePositiveInteger(
|
||||
parsed.payment
|
||||
?? parsed.totalGoodsValue
|
||||
?? parsed.goodsValue
|
||||
?? parsed.payAmount
|
||||
?? parsed.amount,
|
||||
)
|
||||
}
|
||||
|
||||
function parseJsonObject(value: unknown): JsonObject {
|
||||
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
||||
return value as JsonObject
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { query } from '../../../db/client.js'
|
||||
import {
|
||||
createOrder,
|
||||
findOrderByPlatformOrderId,
|
||||
findLatestOrderByPlatformOrderId,
|
||||
getOrderById,
|
||||
updateOrder,
|
||||
} from '../../../repositories/order-repo.js'
|
||||
@@ -122,10 +122,9 @@ export function parseOpen91ProductNo(value: unknown) {
|
||||
export async function upsertOpen91PendingOrder(payload: JsonObject = {}, config: JsonObject = {}) {
|
||||
const event = buildOpen91SourceEvent(payload, config)
|
||||
const now = nowIso()
|
||||
const existing = await findOrderByPlatformOrderId({
|
||||
const existing = await findLatestOrderByPlatformOrderId({
|
||||
provider: event.provider,
|
||||
platform: event.platform,
|
||||
shopId: event.shopId,
|
||||
platformOrderId: event.platformOrderId,
|
||||
})
|
||||
|
||||
@@ -137,8 +136,8 @@ export async function upsertOpen91PendingOrder(payload: JsonObject = {}, config:
|
||||
const orderPayload = {
|
||||
provider: event.provider,
|
||||
platform: event.platform,
|
||||
shopId: event.shopId,
|
||||
shopName: event.shopName,
|
||||
shopId: String(existing?.shop_id || event.shopId || '').trim(),
|
||||
shopName: String(existing?.shop_name || event.shopName || '').trim(),
|
||||
platformOrderId: event.platformOrderId,
|
||||
orderStatus: OPEN_91_PENDING_CONFIG_STATUS,
|
||||
payStatus: 'paid',
|
||||
|
||||
Reference in New Issue
Block a user