# 【后端修复·管理后台】产品详情回显补 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` 单独修。