feat(orders): 订单读取与筛选只认渠道/状态三列

- 展示与筛选全部改读 fulfillment_channel/status,不再回退旧列
- 支持 third_party_voucher 与 archived,legacy_platform 映射为归档
- 前端类型、筛选项与标签同步
This commit is contained in:
yml2213
2026-10-31 19:52:13 +08:00
parent 65b7f4f9dc
commit 4272515956
10 changed files with 122 additions and 31 deletions
@@ -107,8 +107,8 @@ test('订单列表按当前履约模式筛选,不再依赖任务执行器', as
fulfillmentMode: 'manual',
})
assert.match(calls[0]?.sql || '', /oi\.fulfillment_mode = \$1/)
assert.match(calls[0]?.sql || '', /oi\.fulfillment_mode <> \$1/)
assert.match(calls[0]?.sql || '', /oi\.fulfillment_channel = \$1/)
assert.match(calls[0]?.sql || '', /oi\.fulfillment_channel IS DISTINCT FROM \$1/)
assert.doesNotMatch(calls[0]?.sql || '', /COUNT\(DISTINCT/)
assert.doesNotMatch(calls[0]?.sql || '', /ft\.executor_key/)
assert.deepEqual(calls[0]?.params, ['manual'])
@@ -121,12 +121,23 @@ test('订单列表待判定筛选不扫描任务执行器', async () => {
fulfillmentMode: 'pending',
})
assert.match(calls[0]?.sql || '', /NOT EXISTS/)
assert.match(calls[0]?.sql || '', /oi\.fulfillment_mode IN/)
assert.match(calls[0]?.sql || '', /EXISTS/)
assert.match(calls[0]?.sql || '', /oi\.fulfillment_status = 'pending'/)
assert.doesNotMatch(calls[0]?.sql || '', /COUNT\(DISTINCT/)
assert.deepEqual(calls[0]?.params, [])
})
test('订单列表历史平台筛选映射为 archived', async () => {
const calls: Array<{ sql: string; params: unknown[] }> = []
await listOrdersWithExecutor(createExecutor(calls, 0), {
fulfillmentMode: 'legacy_platform',
})
assert.match(calls[0]?.sql || '', /oi\.fulfillment_status = 'archived'/)
assert.deepEqual(calls[0]?.params, [])
})
test('订单列表混合履约筛选按订单项聚合判定', async () => {
const calls: Array<{ sql: string; params: unknown[] }> = []
@@ -134,7 +145,7 @@ test('订单列表混合履约筛选按订单项聚合判定', async () => {
fulfillmentMode: 'mixed',
})
assert.match(calls[0]?.sql || '', /HAVING COUNT\(DISTINCT oi\.fulfillment_mode\) > 1/)
assert.match(calls[0]?.sql || '', /HAVING COUNT\(DISTINCT oi\.fulfillment_channel\) > 1/)
assert.deepEqual(calls[0]?.params, [])
})
+19 -11
View File
@@ -335,32 +335,40 @@ export async function listOrdersWithExecutor(
}
if (fulfillmentMode) {
const knownModes = `('work_order', 'affiliate_dash', 'legacy_platform', 'manual')`
if (fulfillmentMode === 'pending') {
filters.push(`NOT EXISTS (
// v2:渠道/状态拆列后按新列筛选;legacy_platform 统一映射成 archived。
const normalizedMode = fulfillmentMode === 'legacy_platform' ? 'archived' : fulfillmentMode
if (normalizedMode === 'pending') {
filters.push(`EXISTS (
SELECT 1 FROM order_items oi
WHERE oi.order_id = o.id AND oi.fulfillment_mode IN ${knownModes}
WHERE oi.order_id = o.id AND oi.fulfillment_status = 'pending'
)`)
} else if (fulfillmentMode === 'mixed') {
} else if (normalizedMode === 'archived') {
filters.push(`EXISTS (
SELECT 1 FROM order_items oi
WHERE oi.order_id = o.id AND oi.fulfillment_status = 'archived'
)`)
} else if (normalizedMode === 'mixed') {
filters.push(`o.id IN (
SELECT oi.order_id FROM order_items oi
WHERE oi.fulfillment_mode IN ${knownModes}
WHERE oi.fulfillment_status = 'assigned'
GROUP BY oi.order_id
HAVING COUNT(DISTINCT oi.fulfillment_mode) > 1
HAVING COUNT(DISTINCT oi.fulfillment_channel) > 1
)`)
} else {
params.push(fulfillmentMode)
params.push(normalizedMode)
const modeParam = `$${params.length}`
filters.push(`(
EXISTS (
SELECT 1 FROM order_items oi
WHERE oi.order_id = o.id AND oi.fulfillment_mode = ${modeParam}
WHERE oi.order_id = o.id
AND oi.fulfillment_status = 'assigned'
AND oi.fulfillment_channel = ${modeParam}
)
AND NOT EXISTS (
SELECT 1 FROM order_items oi
WHERE oi.order_id = o.id
AND oi.fulfillment_mode IN ${knownModes}
AND oi.fulfillment_mode <> ${modeParam}
AND oi.fulfillment_status = 'assigned'
AND oi.fulfillment_channel IS DISTINCT FROM ${modeParam}
)
)`)
}