# 退款政策简化 + 预订须知必填校验 ## 日期 2026-03-22 --- ## 一、退款政策管理简化 ### 变更说明 退款政策现在**直接绑定到产品**,不再区分退款类型,不再有默认政策概念。 ### 删除的字段 | 接口 | 删除字段 | 说明 | |------|---------|------| | 退款政策列表/详情 VO | `refundType` | 不再区分定金/全款/尾款类型 | | 退款政策列表/详情 VO | `isDefault` | 不再有默认政策概念 | | 退款政策创建/修改请求 | `refundType` | 同上 | | 退款政策创建/修改请求 | `isDefault` | 同上 | | 产品详情 VO | `refundPolicyId` | 已废弃,用 refundPolicyIds | | 产品详情 VO | `refundPolicyName` | 已废弃 | ### 退款政策列表页(退款管理 > 退款政策) **需要删除的列:** - ~~退款类型~~ - ~~生效开始~~ - ~~生效结束~~ - ~~默认~~ **保留的列:** - 政策名称 - 规则数(规则条数) - 状态(启用/禁用) - 创建时间 - 操作 ### 退款政策创建/修改表单 **需要删除的字段:** - ~~退款类型(DEPOSIT/BALANCE/FULL 下拉)~~ - ~~是否默认(开关)~~ **保留的字段:** - 政策名称(必填) - 备注(选填) - 退款规则列表(必填,每条规则包含:距出发天数 + 退款比例%) ### 接口无变化 - `GET /admin/order/refund-policy/list` — 退款政策列表 - `GET /admin/order/refund-policy/enabled` — 启用的政策列表(产品设计选择用) - `GET /admin/order/refund-policy/{policyId}` — 政策详情 - `POST /admin/order/refund-policy` — 创建政策 - `PUT /admin/order/refund-policy/{policyId}` — 修改政策 - `DELETE /admin/order/refund-policy/{policyId}` — 删除政策(不再限制"默认不能删") - `PUT /admin/order/refund-policy/{policyId}/toggle?enabled=true/false` — 启用/禁用 --- ## 二、产品退款政策绑定格式变更 ### `refundPolicyIds` 字段类型变更 **之前(Map):** ```json { "refundPolicyIds": { "DEPOSIT": "1", "FULL": "3", "BALANCE": "4" } } ``` **现在(List):** ```json { "refundPolicyIds": ["1", "3", "4"] } ``` **影响接口:** - `POST /admin/product` — 创建产品 - `PUT /admin/product/{id}` — 更新产品 - `PUT /admin/product/{id}/save` — 保存产品(草稿) - `GET /admin/product/{id}` — 产品详情(响应) ### 产品"预订须知"页面 - **退款政策选择器**:从 Map 形式改为简单多选。调用 `GET /admin/order/refund-policy/enabled` 获取列表,选中的 policyId 数组直接存入 `refundPolicyIds` --- ## 三、产品上架/完成新增必填校验 以下字段在**上架(PUBLISHED)**和**定制完成(COMPLETED)**时必须填写,否则校验不通过: | 字段 | 说明 | 选择来源 | |------|------|---------| | `bookingTermsId` | 预订条款 | `GET /admin/product/booking-terms/enabled` | | `refundPolicyIds` | 退款政策(可多选) | `GET /admin/order/refund-policy/enabled` | | `warmTipsId` | 温馨提示 | `GET /admin/product/warm-tips/enabled` | | `insuranceSchemeId` | 保险方案 | 已有 | | `contractSchemeId` | 合同方案 | 已有 | --- ## 四、所有产品改为预约产品 所有产品的 `isBooking` 已设为 `true`(预约产品)。产品列表"预约"列应全部显示"是"。