docs: 27 admin 产品线列表按 productType 筛选 (PR #1457)
主题类型筛选生效, query 加 productType 参数, 字典 product_type. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
这个提交包含在:
父节点
c3e5ea13da
当前提交
66a13aeadd
@ -0,0 +1,48 @@
|
|||||||
|
# 主题列表(产品线)按主题类型筛选
|
||||||
|
|
||||||
|
**日期**: 2026-04-27
|
||||||
|
**PR**: #1457 (Closes #1456)
|
||||||
|
**影响端**: 管理端 admin
|
||||||
|
|
||||||
|
## 背景
|
||||||
|
|
||||||
|
管理后台「前端配置 → 主题列表」(项目术语「主题」=「产品线」, 接口 `/admin/product/line/list`) 筛选「主题类型 = 小蒙马」点搜索, 28 条返回不变, 后端忽略 `productType` 参数。
|
||||||
|
|
||||||
|
## 根因
|
||||||
|
|
||||||
|
后端双重缺失:
|
||||||
|
1. `ProductLinePageReqVO` 未声明 `productType` 字段, Spring 自动绑定丢弃 query
|
||||||
|
2. `ProductLineMapper` 的 `selectPage` + `selectPageWithCount` 也没消费 `productType` 字段做 WHERE 过滤
|
||||||
|
|
||||||
|
## 接口变化
|
||||||
|
|
||||||
|
`GET /admin/product/line/list` query 参数**新增 1 个可选参数**:
|
||||||
|
|
||||||
|
| 参数 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| `productType` | String | 否 | 产品类型过滤 (字典 `product_type`: `CORE`=核心 / `GROUP`=小蒙马 / `CUSTOM`=定制) |
|
||||||
|
|
||||||
|
不传时行为与原来一致(返回所有产品线)。
|
||||||
|
|
||||||
|
## 前端改动
|
||||||
|
|
||||||
|
筛选下拉「主题类型」选「小蒙马」时,发出 `?productType=GROUP`,本 PR 后端补齐过滤后**前端无需改动**自动生效。
|
||||||
|
|
||||||
|
## 验证 (测试服)
|
||||||
|
|
||||||
|
修复前 curl 实证:
|
||||||
|
```
|
||||||
|
?productType=GROUP total=28 (BUG, 期望 3)
|
||||||
|
?productType=CORE total=28 (BUG, 期望 5)
|
||||||
|
DB 实际分布: CORE=5 / GROUP=3 / CUSTOM=8 / NULL=12
|
||||||
|
```
|
||||||
|
|
||||||
|
修复后期望: `productType=GROUP` 返 3 条, `=CORE` 返 5 条, `=CUSTOM` 返 8 条。
|
||||||
|
|
||||||
|
## 数据权限边界
|
||||||
|
|
||||||
|
`productType` 过滤放在 `applyDataScopeFilter` **之前**, 复合 SQL 形如 `productType=? AND (datascope-OR-block)`, 超管 short-circuit, 普通管理员选 GROUP 在 datascope 收紧后仍命中 — 数据权限边界完整保留。
|
||||||
|
|
||||||
|
## C 端
|
||||||
|
|
||||||
|
`/internal` 同名筛选 `selectMpPage` 早已支持 productType 过滤, admin 漏掉, 修复后两端能力一致。
|
||||||
正在加载...
x
在新工单中引用
屏蔽一个用户