3.5 KiB
3.5 KiB
【后端修复·管理后台】产品详情回显补 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}的响应 VOProductDetailRespVO.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 |
请求/响应示例(测试服已验证):
curl -k "https://api.test.1814.love:9443/admin/product/item/2045345825172639746" \
-H "Authorization: Bearer {admin_token}"
{
"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 单独修。