From a747412fc348e718eb4359378b18f779ac58d374 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 6 May 2026 17:43:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(product):=20=E4=BA=A7=E5=93=81=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=9B=9E=E6=98=BE=20agencyId=20+=20agencyName=20(PR?= =?UTF-8?q?=20#1722)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通知 mmg 前端: - ProductDetailRespVO 加 agencyId + agencyName - 新加 AgencyFeignClient (product-v2 → order-v2) - 编辑页打开 form.agencyId 自动绑定回显, 下拉自动选中 测试服 round-trip 通过 (2026-05-06 17:45). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../06_fix_product_detail_agency_resp.md | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 changelogs/2026-05/06_fix_product_detail_agency_resp.md diff --git a/changelogs/2026-05/06_fix_product_detail_agency_resp.md b/changelogs/2026-05/06_fix_product_detail_agency_resp.md new file mode 100644 index 0000000..557a33d --- /dev/null +++ b/changelogs/2026-05/06_fix_product_detail_agency_resp.md @@ -0,0 +1,87 @@ +# fix(product): 产品详情接口回显 agencyId + agencyName + +**日期**: 2026-05-06 17:45 +**通知对象**: @mmg (前端) +**关联 PR**: wx/HL #1722 (已 merge dev + 测试服部署 + round-trip 通过) + +--- + +## 一、用户反馈 + +产品编辑页「所属公司」字段下拉选中保存后,**重新打开编辑页不回显**,看起来像「保存不上」。 + +## 二、根因 + +DB `product` 表 `agency_id` 字段已**正确保存**(SQL 直查 `product_id=2045018534152478721 → agency_id=2051922156798779394 hulai`)。 + +但 `ProductDetailRespVO` **没有 agencyId / agencyName 字段** → `BeanUtil.toBean(product, vo)` 复制不到 → 前端 GET 拿到 50+ 字段 response 但**无 agencyId** → 前端下拉绑不上。 + +## 三、修复 + +| 文件 | 改动 | +|---|---| +| `ProductDetailRespVO` | 加 `agencyId: Long` + `agencyName: String` | +| `ProductQueryService.getProductDetail` | 显式 `setAgencyId(product.getAgencyId())` (BeanUtil 兜底防跨 BaseDO null 覆盖); Feign 调 order-v2 拿 `agencyName` 中文 (失败 log.warn 不阻断) | +| `AgencyFeignClient` (新) | product-v2 → order-v2 `/internal/agency/{id}` | +| `AgencyDTO` (新) | 简版 4 字段 (agencyId/code/agencyName/isPrimary), 不与 order-v2 AgencyInternalDTO 强耦合 | + +## 四、API 改动 + +`GET /admin/product/item/{id}` 响应新增 2 字段: + +```json +{ + "code": 200, + "data": { + "productId": 2045018534152478721, + "name": "游牧的森林·南线经典", + "agencyId": 2051922156798779394, // ← 新增, 编辑页下拉绑定值 + "agencyName": "内蒙古呼籁国际旅行社有限公司", // ← 新增, 中文回显 (Feign 拿) + "productType": "CORE", + ... + } +} +``` + +## 五、前端建议 + +编辑页打开后, 直接绑定: + +```vue + + :options="agencyOptions" + :placeholder="form.agencyName || '请选择所属公司'" +/> +``` + +下拉选项仍调 `GET /admin/travel-agency/enabled` 拿全部启用公司, 编辑页打开时 `form.agencyId` 自动绑定后端返的 id, 下拉自动选中对应项。 + +## 六、测试服 round-trip 验证 (2026-05-06 17:45) + +```bash +TOK=$(curl -sk -X POST "https://api.test.1814.love:9443/admin/auth/login" \ + -H "Content-Type: application/json" \ + -d '{"username":"admin","password":"Admin@123456"}' \ + | python -c "import json,sys; print(json.load(sys.stdin)['data']['token'])") + +curl -sk "https://api.test.1814.love:9443/admin/product/item/2045018534152478721" \ + -H "Authorization: Bearer $TOK" | python -c " +import json,sys +d = json.load(sys.stdin)['data'] +print(f'agencyId = {d[\"agencyId\"]}') +print(f'agencyName = {d[\"agencyName\"]}') +" +# agencyId = 2051922156798779394 +# agencyName = 内蒙古呼籁国际旅行社有限公司 +``` + +## 七、关联 + +agency 模块 PR 清单: +- #1715 / #1717 / #1718 / #1719 / #1720 / #1721 (公司模块完整闭合) +- **#1722 (本 PR — 产品详情回显)** + +--- + +cc @mmg