From 66a13aeadd6273f76da6f03993cc2a90d7696f8f Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 27 Apr 2026 09:49:18 +0800 Subject: [PATCH] =?UTF-8?q?docs:=2027=20admin=20=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E7=BA=BF=E5=88=97=E8=A1=A8=E6=8C=89=20productType=20=E7=AD=9B?= =?UTF-8?q?=E9=80=89=20(PR=20#1457)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主题类型筛选生效, query 加 productType 参数, 字典 product_type. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...min-product-line_filter-by-product-type.md | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 changelogs/2026-04/27_fix_admin-product-line_filter-by-product-type.md diff --git a/changelogs/2026-04/27_fix_admin-product-line_filter-by-product-type.md b/changelogs/2026-04/27_fix_admin-product-line_filter-by-product-type.md new file mode 100644 index 0000000..3439241 --- /dev/null +++ b/changelogs/2026-04/27_fix_admin-product-line_filter-by-product-type.md @@ -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 漏掉, 修复后两端能力一致。