docs: mp 端产品详情接口回显 agencyId+agencyName (wx/HL #1753)
这个提交包含在:
父节点
8b5a71e2ab
当前提交
9e4ae547ad
@ -0,0 +1,83 @@
|
||||
# fix(mp-product): /mp/product/{id} 详情接口回显 agencyId + agencyName
|
||||
|
||||
**日期**: 2026-05-06 20:30
|
||||
**通知对象**: @mmg (前端)
|
||||
**关联 PR**: wx/HL #1753 (已 merge dev,等测试服部署后 round-trip)
|
||||
**关联工单**: wx/HL #1748
|
||||
|
||||
---
|
||||
|
||||
## 一、用户反馈
|
||||
|
||||
小程序产品详情页希望展示「出团旅行社」公司信息,但 `GET /mp/product/{id}` 返回的 50+ 字段里没有任何 agency/公司字段,前端无法展示。
|
||||
|
||||
## 二、根因
|
||||
|
||||
PR #1707 已在 `product` 表加 `agency_id` 字段 (NOT NULL,Flyway 回填 hulai 主体)。
|
||||
PR #1722 给 admin 详情接口补了 agencyId/agencyName,但 **mp 端 `MpProductDetailAssembler` 完全未补 agency 字段**;快照路径 `MpProductSnapshotService` 同样未处理。
|
||||
|
||||
## 三、修复
|
||||
|
||||
| 文件 | 改动 |
|
||||
|---|---|
|
||||
| `MpProductDetailRespVO` | 顶层加 `agencyId: Long` + `agencyName: String` |
|
||||
| `MpProductDetailAssembler` (实时路径) | 注入 `AgencyFeignClient`,显式 `setAgencyId(product.getAgencyId())` + Feign 调 order-v2 拿 `agencyName` (异常 catch 不阻断主流程) |
|
||||
| `MpProductSnapshotService.fillAgency` (快照路径) | `productHelperService.selectById(productId).getAgencyId()` + Feign 取 agencyName。**agency 不冻结进快照**,公司主体保持当前真值 (与 refundPolicy 同样语义) |
|
||||
| 单测 | 新增 5 例覆盖实时/快照 + Feign 成功/异常/agencyId=null 各种分支 |
|
||||
|
||||
## 四、API 改动
|
||||
|
||||
### 4.1 实时路径 `GET /mp/product/{id}`
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"data": {
|
||||
"productId": 2043595351268519937,
|
||||
"name": "草原环线 5 日",
|
||||
"agencyId": 2051922156798779394, // ← 新增
|
||||
"agencyName": "内蒙古呼籁国际旅行社有限公司", // ← 新增, Feign 拿中文
|
||||
"productType": "CORE",
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.2 快照路径 `GET /mp/product/{id}?orderId=X`
|
||||
|
||||
同样返 `agencyId` + `agencyName`,但**不冻结进订单产品快照** (订单内的产品 snapshot JSON 仍不含这俩字段),公司主体永远取实时值。
|
||||
|
||||
## 五、前端建议
|
||||
|
||||
详情页直接读 `data.agencyName` 展示「出团旅行社: 内蒙古呼籁国际旅行社有限公司」即可。
|
||||
若想做点击跳转旅行社详情页,可用 `data.agencyId` 拼接路径。
|
||||
|
||||
Feign 极少数失败场景下 `agencyName` 可能为 null,前端建议加 placeholder 兜底:
|
||||
|
||||
```vue
|
||||
<span>出团旅行社: {{ detail.agencyName || '呼籁旅行' }}</span>
|
||||
```
|
||||
|
||||
## 六、测试服 round-trip 验证 (待 dev 部署后补)
|
||||
|
||||
部署完成后调用:
|
||||
|
||||
```bash
|
||||
curl -sk "https://api.test.1814.love:9443/mp/product/2043595351268519937" \
|
||||
| python -c "
|
||||
import json,sys
|
||||
d = json.load(sys.stdin)['data']
|
||||
print(f'agencyId = {d.get(\"agencyId\")}')
|
||||
print(f'agencyName = {d.get(\"agencyName\")}')
|
||||
"
|
||||
# 预期: agencyId 非 null Long, agencyName 非 null 中文
|
||||
```
|
||||
|
||||
## 七、关联 PR
|
||||
|
||||
- PR #1722 (admin 端产品详情 agency 回显, 已合并)
|
||||
- **PR #1753 (本 PR, mp 端产品详情 agency 回显)**
|
||||
|
||||
---
|
||||
|
||||
cc @mmg
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户