feat: 退款政策refund_type + 产品多退款政策绑定(详细变更说明)

这个提交包含在:
API Changelog Bot 2026-03-19 14:48:48 +08:00
父节点 18f072bb29
当前提交 b4ce794de6

查看文件

@ -1,26 +1,28 @@
# 退款政策新增 refund_type 字段
# 退款政策 + 产品多退款政策绑定
**日期**: 2026-03-19
**类型**: 功能增强
**影响模块**: 退款管理 → 退款政策
**影响模块**: 退款管理 → 退款政策、产品管理 → 产品设计
---
## 变更说明
## 一、退款政策新增 refund_type 字段
退款政策表新增 `refund_type` 字段,支持按退款类型区分不同的退款政策。
### 变更说明
## 数据库变更
退款政策表新增 `refund_type` 字段,区分定金/尾款/全款退款政策。同类型只能有一个默认政策。
### 数据库变更
```sql
ALTER TABLE refund_policy ADD COLUMN refund_type VARCHAR(20) DEFAULT NULL
COMMENT '退款类型字典refund_typeDEPOSIT/BALANCE/FULL' AFTER policy_name;
```
## 接口影响
### 接口影响
### 创建退款政策 `POST /order/refund-policy`
### 更新退款政策 `PUT /order/refund-policy/{policyId}`
#### 创建退款政策 `POST /order/refund-policy`
#### 更新退款政策 `PUT /order/refund-policy/{policyId}`
请求参数新增:
@ -28,7 +30,7 @@ ALTER TABLE refund_policy ADD COLUMN refund_type VARCHAR(20) DEFAULT NULL
|------|------|------|------|
| refundType | String | 否 | 退款类型字典refund_type |
### 查询退款政策(列表/详情)
#### 查询退款政策(列表/详情)
响应新增字段:
@ -36,7 +38,7 @@ ALTER TABLE refund_policy ADD COLUMN refund_type VARCHAR(20) DEFAULT NULL
|------|------|------|
| refundType | String | 退款类型字典refund_type |
## 关联字典refund_type
### 关联字典refund_type
| dict_value | dict_label | 说明 |
|-----------|-----------|------|
@ -44,6 +46,105 @@ ALTER TABLE refund_policy ADD COLUMN refund_type VARCHAR(20) DEFAULT NULL
| BALANCE | 尾款 | 尾款退款政策 |
| FULL | 全款 | 全款退款政策 |
## 前端处理
### 业务规则
编辑退款政策弹窗中的"退款类型"下拉框,从字典 `refund_type` 加载选项,保存时传 `refundType` 字段,回显时从接口返回的 `refundType` 取值即可。
- 退款政策必须指定退款类型
- 同一退款类型下,**只能有一个默认政策**
- 不同退款类型可以各有自己的默认政策
---
## 二、产品支持多退款政策绑定
### 变更说明
产品现在支持按退款类型绑定不同的退款政策。例如:
- 全款支付方式 → 绑定一个 FULL 类型的退款政策
- 定金+尾款支付方式 → 分别绑定 DEPOSIT 和 BALANCE 类型的退款政策
### 数据库变更
```sql
ALTER TABLE product ADD COLUMN refund_policy_ids TEXT DEFAULT NULL
COMMENT '退款政策映射JSON' AFTER refund_policy_id;
```
### 接口影响
#### 创建/更新/保存产品
请求参数新增:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| refundPolicyIds | Map<String, String> | 否 | 退款政策映射,key=退款类型,value=政策ID |
请求示例:
```json
{
"refundPolicyIds": {
"FULL": "1893012345678901234",
"DEPOSIT": "1893012345678901235",
"BALANCE": "1893012345678901236"
}
}
```
#### 查询产品详情
响应新增字段:
| 字段 | 类型 | 说明 |
|------|------|------|
| refundPolicyIds | Map<String, String> | 退款政策映射,key=退款类型,value=政策ID |
响应示例:
```json
{
"refundPolicyIds": {
"FULL": "1893012345678901234",
"DEPOSIT": "1893012345678901235"
}
}
```
> 旧字段 `refundPolicyId`单个ID保留兼容,但建议迁移到 `refundPolicyIds`
### 前端实现建议
```
┌─────────────────────────────────────────┐
│ 退款政策配置 │
├─────────────────────────────────────────┤
│ │
│ 全款退款政策: [下拉选择: FULL类型政策] │
│ │
│ ── 以下仅"定金+尾款"支付方式显示 ── │
│ │
│ 定金退款政策: [下拉选择: DEPOSIT类型政策] │
│ │
│ 尾款退款政策: [下拉选择: BALANCE类型政策] │
│ │
└─────────────────────────────────────────┘
```
- 根据产品的**支付方式**决定显示哪些退款政策选择器
- 全款支付 → 只显示 FULL 类型的退款政策下拉
- 定金+尾款 → 显示 DEPOSIT 和 BALANCE 两个退款政策下拉
- 退款政策下拉列表调用 `GET /order/refund-policy/list`,按 `refundType` 字段过滤
- 保存时将选中的政策ID组装成 `refundPolicyIds` Map 传给后端
### 退款政策列表页
- 编辑弹窗中的"退款类型"下拉从字典 `refund_type` 加载
- 列表中"退款类型"列显示字典翻译值DEPOSIT→定金,BALANCE→尾款,FULL→全款
---
## 三、已有数据处理
已自动迁移旧数据:
- 政策名含"定金" → refund_type = DEPOSIT
- 政策名含"尾款" → refund_type = BALANCE
- 政策名含"全款" → refund_type = FULL
- 其余 → refund_type = FULL