# 【后端修复·管理后台】取消绑定服务标准模板清不掉旧值(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