feat(orders): 订单读取与筛选只认渠道/状态三列
- 展示与筛选全部改读 fulfillment_channel/status,不再回退旧列 - 支持 third_party_voucher 与 archived,legacy_platform 映射为归档 - 前端类型、筛选项与标签同步
This commit is contained in:
@@ -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, [])
|
||||
})
|
||||
|
||||
|
||||
@@ -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}
|
||||
)
|
||||
)`)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user