changelog(mp): 微信小程序 · 订单行李推荐接口

GET /mp/order/{orderId}/supplies-checklist

按分类分组返回订单备品清单 + 装备建议富文本,对应原型 zgNiD 行李推荐弹窗。

PR #1042 (Closes #1041)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
这个提交包含在:
yaosutu 2026-04-21 16:34:43 +08:00
父节点 b5941e4f34
当前提交 34621d845b

查看文件

@ -0,0 +1,107 @@
# 微信小程序 · 订单行李推荐接口
**日期**:2026-04-21
**影响**:**微信小程序** 订单详情行李推荐弹窗(原型 `zgNiD`)
**PR**:#1042(Closes #1041)
---
## 概述
订单详情页"行李推荐"弹窗独立查询接口。从产品快照中解析备品清单,按分类分组返回,附装备建议富文本。
> C 端展示已去除成本字段(`hasCost` / `unitPrice`),后端已过滤掉成本项(`hasCost=true`),仅返回给用户看的推荐行李。
---
## 接口
```
GET /mp/order/{orderId}/supplies-checklist
```
**鉴权**:Bearer token。
**缓存**:5 分钟。
### 入参
| 参数 | 位置 | 类型 | 必填 |
|---|---|---|---|
| orderId | Path | Long | ✅ |
### 出参 `Result<MpSuppliesChecklistRespVO>`
| 字段 | 类型 | 说明 |
|---|---|---|
| orderId | Long | 订单ID |
| categories | `List<MpSuppliesCategoryVO>` | 备品清单(按分类分组;空列表表示无推荐) |
| equipmentAdvice | String | 装备建议富文本 HTML(可能为 null) |
**`MpSuppliesCategoryVO`**:
| 字段 | 类型 | 说明 |
|---|---|---|
| category | String | 分类名,如 `衣物` / `配件` / `药品` |
| items | `List<MpSuppliesItemVO>` | 该分类下的备品列表 |
**`MpSuppliesItemVO`**:
| 字段 | 类型 | 说明 |
|---|---|---|
| suppliesName | String | 备品名称,如 `冲锋衣` |
| category | String | 分类(冗余,便于扁平化处理) |
| quantity | Integer | 数量 |
| billingType | String | `PER_PERSON`(按人数)/ `PER_QUANTITY`(按数量) |
| sortOrder | Integer | 排序(升序) |
### 响应示例
```json
{
"code": 200,
"message": "成功",
"data": {
"orderId": 20439,
"categories": [
{
"category": "衣物",
"items": [
{"suppliesName":"冲锋衣","category":"衣物","quantity":1,"billingType":"PER_PERSON","sortOrder":1},
{"suppliesName":"保暖内衣","category":"衣物","quantity":1,"billingType":"PER_PERSON","sortOrder":2}
]
},
{
"category": "配件",
"items": [
{"suppliesName":"防晒霜","category":"配件","quantity":1,"billingType":"PER_QUANTITY","sortOrder":1},
{"suppliesName":"墨镜","category":"配件","quantity":1,"billingType":"PER_PERSON","sortOrder":2}
]
}
],
"equipmentAdvice": "<p>呼伦贝尔 7 月早晚温差大,建议携带薄款冲锋衣。防晒需求高,墨镜 + 防晒霜必备。</p>"
},
"success": true
}
```
### 边界行为
- 订单不存在或无权限:500,`message``orderId`
- 产品快照无备品配置:`categories=[]`,`equipmentAdvice=null`
- 所有备品都是成本项:`categories=[]`(已过滤)
---
## 数据来源
字段从订单绑定产品的**产品快照**中解析得到,下单时刻的备品清单锁定,后续产品端备品变动不影响已下单订单。
---
## 关联字段(其他接口)
订单详情 `GET /mp/order/{orderId}` 的返回 VO(`MpOrderDetailVO`)本身也带 `supplies``equipmentAdvice` 字段,用于整单数据一次读取场景。本独立接口专用于弹窗按需拉取。
| 接口 | 字段 | 说明 |
|---|---|---|
| `GET /mp/order/{orderId}` | `supplies: List<OrderSuppliesVO>` | 订单备品(扁平列表,不分组) |
| `GET /mp/order/{orderId}` | `equipmentAdvice: String` | 装备建议富文本 |
| `GET /mp/order/{orderId}/supplies-checklist` | 见上文 | 按分类分组 + 装备建议,弹窗专用 |