feat(fulfillment): 增加统一渠道配置搜索与筛选

This commit is contained in:
yml2213
2026-11-03 14:32:44 +08:00
parent bcf5eb09ec
commit eeb9fada63
5 changed files with 154 additions and 14 deletions
@@ -249,6 +249,8 @@ router.get(
(req) =>
listChannelRulesPage({
channel: String(req.query.channel || ''),
source: String(req.query.source || ''),
keyword: String(req.query.keyword || ''),
page: Number(req.query.page),
pageSize: Number(req.query.pageSize),
...(req.query.enabled === undefined
@@ -1098,6 +1098,8 @@ export async function assignChannelBySku(input: {
type ChannelRuleFilterInput = {
channel?: string
source?: string
keyword?: string
enabled?: boolean
}
@@ -1108,6 +1110,20 @@ function buildChannelRuleFilter(input: ChannelRuleFilterInput) {
params.push(input.channel)
clauses.push(`channel = $${params.length}`)
}
const source = String(input.source || '').trim()
if (source === 'rule') {
clauses.push(`source LIKE 'rule:%'`)
} else if (source) {
params.push(source)
clauses.push(`source = $${params.length}`)
}
const keyword = String(input.keyword || '').trim()
if (keyword) {
params.push(`%${keyword}%`)
clauses.push(
`(match_key ILIKE $${params.length} OR config_json::text ILIKE $${params.length} OR COALESCE(note, '') ILIKE $${params.length})`,
)
}
if (typeof input.enabled === 'boolean') {
params.push(input.enabled)
clauses.push(`enabled = $${params.length}`)
@@ -401,6 +401,15 @@ test(
assert.equal(firstRulePage.pageSize, 2)
assert.ok(firstRulePage.items.length <= 2)
assert.equal(firstRulePage.total, listedRules.length)
const searchedRules = await listChannelRulesPage({
keyword: voucherSku,
source: 'operator',
enabled: true,
page: 1,
pageSize: 10,
})
assert.ok(searchedRules.items.some((rule) => rule.id === savedRule.id))
assert.ok(searchedRules.items.every((rule) => rule.source === 'operator'))
const deletedRules = await deleteChannelRules([savedRule.id])
assert.equal(deletedRules.deletedCount, 1)
assert.deepEqual(deletedRules.deletedIds, [savedRule.id])