docs(changelog-v2): 服务标准模板回显修复 PR#3484(Step5刷新后绑定不显·管理后台)
这个提交包含在:
父节点
8c14545452
当前提交
24e3181976
@ -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` 单独修。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户