From 9e4ae547ad577ffbff79f5ff1f62e1d41f5fc57a Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 6 May 2026 20:15:39 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20mp=20=E7=AB=AF=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=9B=9E=E6=98=BE=20agency?= =?UTF-8?q?Id+agencyName=20(wx/HL=20#1753)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../06_fix_mp_product_detail_agency_resp.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 changelogs/2026-05/06_fix_mp_product_detail_agency_resp.md diff --git a/changelogs/2026-05/06_fix_mp_product_detail_agency_resp.md b/changelogs/2026-05/06_fix_mp_product_detail_agency_resp.md new file mode 100644 index 0000000..6e00340 --- /dev/null +++ b/changelogs/2026-05/06_fix_mp_product_detail_agency_resp.md @@ -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 +出团旅行社: {{ detail.agencyName || '呼籁旅行' }} +``` + +## 六、测试服 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