feat(C端定制): /mp/custom/products/all 改为按定制师 adminId 过滤 (PR #3037, #3036)

这个提交包含在:
API Changelog Bot 2026-05-26 14:39:19 +08:00
父节点 1b93c1b0ad
当前提交 fc07470760

查看文件

@ -0,0 +1,69 @@
# feat(C端定制): `/mp/custom/products/all` 改为按定制师过滤 —— 新增**必填** `adminId`
> **类型**: feat(**接口契约变更,前端必须改**)
> **关联 PR**: #3037(已合并 dev) / **关联工单**: #3036
> **日期**: 2026-05-26
> **影响接口**: `GET /mp/custom/products/all`
> **接收方**: mmg
> **前端**: **必须改**(否则调用直接 400);已部署测试服并实测通过
---
## 🎯 变更内容
`/mp/custom/products/all` 原为「无登录浏览**全部**定制产品」,返回所有定制产品。
现改为「**只返回指定定制师本人创建的定制产品**」:接口**新增必填 query 参数 `adminId`**(定制师 ID),后端按 `产品.created_by = adminId` 过滤。
> 业务语义:这里的 `adminId` 就是定制师身份接口 `GET /mp/customizer/me` 返回的 `adminId`(与分享名片链接 `?adminId={adminId}` 用的是同一个值)。前端已在拿/存这个值,本接口直接带上即可。
---
## 📋 接口契约(变更后)
### 请求 `GET /mp/custom/products/all`
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `adminId` | number(long) | **是(新增)** | 定制师 ID,只返回该定制师创建的定制产品;取自 `/mp/customizer/me``adminId` |
| `page` | number | 否 | 页码,默认 1,`<1` 纠正为 1 |
| `pageSize` | number | 否 | 每页条数,默认 20,上限 100 |
### 响应
- 结构**不变**(仍是 `PageResult<定制产品列表项>`:`{ code, data: { records: [...], total, page, pageSize }, success }`)。
- 仅是结果集从「全部」收窄为「该 `adminId` 创建的」。
### 示例
```
GET /mp/custom/products/all?page=1&pageSize=20&adminId=1002
→ 200 { code:200, data:{ total:3, records:[...3 条...] }, success:true }
```
---
## ⚠️ 前端需要做的事(Breaking)
1. **调用本接口时必须带 `adminId`**:值取自 `GET /mp/customizer/me` 返回的 `data.adminId`
2. **不传 `adminId` 会直接报错**:
```json
{ "code": 400, "message": "缺少必要参数: adminId", "data": null, "success": false }
```
原先「不带参数返回全部」的行为已**不存在**,请确认所有调用点都补上 `adminId`
3. 若页面语义是「查看某定制师的定制产品案例」,直接用该定制师的 `adminId`;若是「我(定制师本人)的定制产品」,用 `/mp/customizer/me` 返回的本人 `adminId`
---
## ✅ 测试服验证(已通过)
经测试服网关 `api.test.1814.love:9443` 实测:
| 请求 | 结果 |
|------|------|
| `adminId=1002` | `total=3`(= 该定制师在库的有效定制产品数) |
| `adminId=1001` | `total=3` |
| `adminId=999999999`(不存在) | `total=0`,空列表 |
| 不传 `adminId` | `400 缺少必要参数: adminId` |
软删除产品已被正确排除。