diff --git a/changelogs/2026-03/31_scheme_delete_validation.md b/changelogs/2026-03/31_scheme_delete_validation.md new file mode 100644 index 0000000..c668f01 --- /dev/null +++ b/changelogs/2026-03/31_scheme_delete_validation.md @@ -0,0 +1,75 @@ +# 保险方案/合同方案 — 支持删除 + 引用校验 + +> **PR** #92 · **日期** 2026-03-31 · **影响服务** hl-order-service, hl-product-service + +## 前端需要做什么 + +保险方案和合同方案的管理页面需要**新增删除按钮**,后端接口已就绪。 + +--- + +## 1. 保险方案删除 + +### `DELETE` /admin/insurance/scheme/{id} + +> 网关路径:`/order/admin/insurance/scheme/{id}` + +**请求**:无 body,路径参数 `id` 为方案ID + +**成功响应**: +```json +{ "code": 200, "data": null } +``` + +**失败响应**(被产品引用时): +```json +{ "code": 500, "message": "无法删除:以下产品正在使用该保险方案:精品九寨沟5日游、云南大理7日游" } +``` + +--- + +## 2. 合同方案删除 + +### `DELETE` /admin/contract/scheme/{schemeId} + +> 网关路径:`/order/admin/contract/scheme/{schemeId}` + +**请求**:无 body,路径参数 `schemeId` 为方案ID + +**成功响应**: +```json +{ "code": 200, "data": null } +``` + +**失败响应**(被产品引用时): +```json +{ "code": 500, "message": "无法删除:以下产品正在使用该合同方案:精品九寨沟5日游" } +``` + +--- + +## 3. 禁用校验(已有接口行为变更) + +以下两个已有的**切换状态**接口增加了校验逻辑: + +- `PUT /admin/insurance/scheme/{id}/toggle-status` +- `PUT /admin/contract/scheme/{schemeId}/toggle-status` + +**变更**:从启用→停用时,如果有活跃产品(已上架/已下单/已完成/待审核/已审核)引用该方案,将返回错误: + +```json +{ "code": 500, "message": "无法禁用:以下产品正在使用该保险方案:精品九寨沟5日游" } +``` + +> 启用→停用被阻止时,前端正常展示错误提示即可。 + +--- + +## 4. 前端交互建议 + +| 操作 | 建议 | +|------|------| +| 删除按钮位置 | 方案列表每行操作栏,与编辑/启停按钮并列 | +| 删除确认 | 点击删除前弹二次确认对话框("确定删除该方案?") | +| 错误处理 | 删除/禁用失败时,展示后端返回的 message(含引用的产品名) | +| 删除成功 | 刷新列表 |