feat(pdd): 支持根据数据库已有订单自适应翻页拉取,防高峰漏单
1. 新增数据库批量排查已有订单接口 findExistingPlatformOrderIds,利用 B-Tree 索引毫秒级判定当前页订单是否存在; 2. 优化 syncStoreOrders 支持自适应翻页拉取:当第 1 页全部为新订单时,自适应向后递增翻页拉取(支持 maxPages 默认 5 页,平滑限速 300ms); 3. 翻页终止自适应判定:当拉取到包含数据库已有旧订单的页面时立即 break 停止翻页,兼顾高性能与不漏单; 4. 扩展全局配置支持 maxPages(自适应最大翻页页数),支持后台管理员在 UI 设置与立即拉单参数联动; 5. 新增单元测试 pdd-sync-service.test.ts,验证全部新订单自适应翻页与命中已有订单提前终止行为。
This commit is contained in:
@@ -86,6 +86,29 @@ export async function findLatestOrderByAnyPlatformOrderId(
|
||||
return result.rows[0] || null
|
||||
}
|
||||
|
||||
|
||||
export async function findExistingPlatformOrderIds({
|
||||
provider = 'pdd',
|
||||
platform = 'pdd',
|
||||
platformOrderIds,
|
||||
}: {
|
||||
provider?: string
|
||||
platform: string
|
||||
platformOrderIds: string[]
|
||||
}): Promise<Set<string>> {
|
||||
if (!platformOrderIds || platformOrderIds.length === 0) {
|
||||
return new Set<string>()
|
||||
}
|
||||
const result = await query<{ platform_order_id: string }>(
|
||||
`
|
||||
SELECT platform_order_id
|
||||
FROM orders
|
||||
WHERE provider = $1 AND platform = $2 AND platform_order_id = ANY($3::text[])
|
||||
`,
|
||||
[provider, platform, platformOrderIds],
|
||||
)
|
||||
return new Set(result.rows.map((r) => String(r.platform_order_id)))
|
||||
}
|
||||
export async function createOrder(input: OrderCreateInput): Promise<OrderRow | null> {
|
||||
return createOrderWithExecutor(query, input)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user