diff --git a/changelogs-v2/2026-06/05_3484_服务标准模板回显修复-Step5刷新后绑定不显-管理后台.md b/changelogs-v2/2026-06/05_3484_服务标准模板回显修复-Step5刷新后绑定不显-管理后台.md new file mode 100644 index 0000000..7d323df --- /dev/null +++ b/changelogs-v2/2026-06/05_3484_服务标准模板回显修复-Step5刷新后绑定不显-管理后台.md @@ -0,0 +1,80 @@ +# 【后端修复·管理后台】产品详情回显补 serviceStandardTemplateId(Step5 服务标准 tab 刷新后绑定不显) + +> **PR**: #3484 | **关联工单**: 无(小 bug 修复) +> **服务**: hl-product-service-v2(产品详情回显)| **更新时间**: 2026-06-05 +> +> **存放目录**: `changelogs-v2/2026-06/` +> **影响范围**: 管理后台「产品编辑 → 补充信息(Step5) → 服务标准」tab 的模板绑定回显 +> **前端动作**: **无需改代码**,重新测试即可(前端读取逻辑本就正确) + +--- + +## ⚠️ 关键说明 + +现象是「选了服务标准模板,保存后刷新页面,下拉变空、预览显示『未绑定模板』,像是没保存上」。 + +**实测真相**:绑定**早就保存成功**了(`product.service_standard_template_id` 在库里有值,预览接口也能返回完整模板内容)。问题在**详情回显接口漏返该字段**——保存写进去了,但编辑页重新加载时读不到,所以下拉回显不出来。 + +本次为纯后端修复,**接口路径/结构未变,仅在 `supplement` 段新增一个字段**,前端无破坏性变更。 + +--- + +## 1. 根因 + +工单 #3147 引入 `serviceStandardTemplateId`(服务标准模板绑定)时,漏改了详情回显 VO: + +- 保存接口 `PUT /admin/product/item/{id}/supplement` 已把它写入 **product 主表** ✅ +- 但详情接口 `GET /admin/product/item/{id}` 的响应 VO `ProductDetailRespVO.SupplementVO` **缺这个字段**(兄弟字段 `guaranteeTemplateId`/`faqTemplateId`/`safetyTemplateId` 都在,唯独漏了它) +- 前端从 `data.supplement.serviceStandardTemplateId` 读取(读取位置正确),后端不返 → 永远 `undefined` → 下拉空、预览「未绑定」 + +## 2. 修复 + +| 文件 | 改动 | +|---|---| +| `ProductDetailRespVO.SupplementVO` | 新增字段 `Long serviceStandardTemplateId` | +| `ProductQueryService.getProductDetail` | 从 product 主表显式回填进 `supplement` 段(缺 supplement 段时跳过,不回归) | + +## 3. 接口响应变化(前端关注) + +`GET /admin/product/item/{id}` 的 `data.supplement` 段**新增一个字段**: + +| 字段 | 类型 | 含义 | +|---|---|---| +| `serviceStandardTemplateId` | Long(雪花,JSON 透传字符串) | 当前绑定的服务标准模板 ID;未绑定为 `null` | + +请求/响应示例(测试服已验证): + +```bash +curl -k "https://api.test.1814.love:9443/admin/product/item/2045345825172639746" \ + -H "Authorization: Bearer {admin_token}" +``` + +```json +{ + "code": 200, + "data": { + "supplement": { + "serviceStandardTemplateId": "2061281473171775490", + "guaranteeTemplateId": "2044407984976486401", + "...": "其余字段不变" + } + } +} +``` + +## 4. 前端动作 + +- **无需改代码**:前端 `productEdit.js` 已正确读取 `sp.serviceStandardTemplateId` 并回填到下拉,本次后端补返该字段后即自动生效。 +- **请重新测试**:产品编辑页 → 补充信息 → 服务标准 → 选模板 → 保存 → **刷新页面**,下拉应保持选中、模板内容预览应正常渲染。 + +## 5. 关联 / 联系人 + +- **本次 PR**:#3484(已合并 dev-v3,已部署测试服并 API 验证回显成功) +- **后端负责人**:@wx +- **前端对接(管理后台)**:mmg + +--- + +## 备注(后端内部,前端无需关注) + +另发现一个潜在 bug:「取消绑定」(下拉清空 → null)因 MyBatis-Plus `updateById` 默认忽略 null 字段,清不掉旧值。改全局 `FieldStrategy` 对 partial-update 有风险,**未纳入本 PR**,后续以定向 `LambdaUpdateWrapper` 单独修。