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:
yml2213
2026-09-12 16:25:37 +08:00
parent 1217da7393
commit ede9a87b97
9 changed files with 405 additions and 78 deletions
@@ -180,11 +180,13 @@ router.post(
const body = (req.body || {}) as {
shopId?: string
pageSize?: number
maxPages?: number
orderType?: number
}
const shopId = String(body.shopId || '').trim()
const config = getPddSourcesConfig()
const pageSize = Math.min(100, Math.max(1, Number(body.pageSize || config.pageSize || 50)))
const maxPages = Math.min(20, Math.max(1, Number(body.maxPages || config.maxPages || 5)))
const orderType = Number(body.orderType ?? config.orderType ?? 2)
if (shopId) {
@@ -195,10 +197,10 @@ router.post(
errorCode: 'pdd_store_not_found',
})
}
return syncStoreOrders(store, { pageSize, orderType })
return syncStoreOrders(store, { pageSize, maxPages, orderType })
}
return syncAllPddStores({ pageSize, orderType })
return syncAllPddStores({ pageSize, maxPages, orderType })
},
{
successMessage: '拼多多同步已触发',