2.1 KiB
2.1 KiB
【后端修复·管理后台】取消绑定服务标准模板清不掉旧值(updateById 忽略 null)
PR: #3489 | 关联工单: 无(PR #3484 deferred 项收口 / 工单 #3147 followup) 服务: hl-product-service-v2(Step5 补充信息保存)| 更新时间: 2026-06-05
存放目录:
changelogs-v2/2026-06/影响范围: 管理后台「产品编辑 → 补充信息(Step5) → 服务标准」tab 的「取消绑定」 前端动作: 无需改代码,「取消绑定」现在能真正生效,可重新测试
⚠️ 关键说明
接 PR #3484(修复绑定回显)的遗留项。现象:服务标准模板下拉清空(取消绑定)后保存,旧绑定清不掉,刷新仍显示原模板。
接口路径/结构未变,纯后端行为修复。
1. 根因
PUT /admin/product/item/{id}/supplement 用 MyBatis-Plus updateById 持久化 serviceStandardTemplateId,默认 FieldStrategy.NOT_NULL 会忽略 null 字段——取消绑定时该列被跳过,旧值残留。
2. 修复
仅在 serviceStandardTemplateId == null(取消绑定)时追加一次定向清列(绑定/改绑路径零改动):
ProductMapper.clearServiceStandardTemplateId(productId)用LambdaUpdateWrapper.set(column, null)显式置空(与既有clearApprovalFields同款)
3. 前端动作
- 无需改代码:下拉本就
clearable,清空后保存即触发后端清列。 - 请重新测试:服务标准 tab → 清空模板下拉 → 保存 → 刷新,应显示「未绑定模板」。
4. 验证(测试服已实测)
| 操作 | 结果 |
|---|---|
| 取消绑定(templateId=null)后查详情 | supplement.serviceStandardTemplateId = null ✅ |
| 重新绑定后查详情 | 恢复为原模板ID ✅ |
| 其余 Step5 字段(费用/人群优惠/保险等) | 完全不受影响 ✅ |
5. 关联 / 联系人
- 本次 PR:#3489(已合并 dev-v3,已部署测试服并 API 实测取消绑定生效)
- 前序 PR:#3484(绑定回显修复)
- 后端负责人:@wx | 前端对接(管理后台):mmg