# 价格档位是自动计算字段，前端不需要手动输入

**日期**: 2026-03-26
**类型**: 前端BUG

---

## 问题

产品编辑页出现了"价格档位"手动输入表单（档位名称+价格），这个不应该存在。

## 正确逻辑

`priceTiers` 是**后端自动计算**的只读字段，数据来源：

1. 管理端在**团期管理**中配置套餐组合（combo），如"1大1小 ¥12800"、"2大1小 ¥18800"
2. 后端自动取**最近一期可报名团期**的 combo 价格返回给小程序
3. 前端产品编辑页**不需要**价格档位的输入表单

## 前端需要做

- **删除**产品编辑页的"价格档位"输入区域
- 价格档位通过团期管理中的套餐（combo）配置，不在产品基本信息中配置

---

## 补充：组合在哪里配置

人员组合（1大1小、2大1小等）和价格在**团期的套餐管理**中配置：

| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/admin/product/group-batch/{batchId}/combos` | 查看团期套餐列表 |
| POST | `/admin/product/group-batch/{batchId}/combo` | 添加套餐 |
| PUT | `/admin/product/group-batch/combo/{comboId}` | 编辑套餐 |
| DELETE | `/admin/product/group-batch/combo/{comboId}` | 删除套餐 |

**套餐请求体**：
```json
{
  "comboName": "1大1小",
  "comboCode": "1A1C",
  "adultCount": 1,
  "childCount": 1,
  "sellPrice": 12800,
  "stock": 20
}
```

**流程**：团期管理 → 选择团期 → 配置套餐组合和价格 → 小程序详情页自动取最近可报名团期的套餐展示

产品编辑页的"价格档位"输入框应该去掉，改为提示"价格档位由团期套餐自动生成"。

---

## 更正：产品级别配置组合，价格后端自动算

### 管理端输入

产品编辑时配置 `priceTierLabels`（只输组合名称和人数，不输价格）：

```json
[
  { "label": "1大1小", "adultCount": 1, "childCount": 1 },
  { "label": "1大2小", "adultCount": 1, "childCount": 2 },
  { "label": "2大1小", "adultCount": 2, "childCount": 1 }
]
```

通过 `POST /admin/product/save` 或 `PUT /admin/product/{id}` 的 `priceTierLabels` 字段保存。

### 小程序展示

`priceTiers` 后端根据组合定义，匹配所有可报名团期 combo 的最低售价自动填入 `price`：

```json
[
  { "label": "1大1小", "adultCount": 1, "childCount": 1, "price": 12800 },
  { "label": "1大2小", "adultCount": 1, "childCount": 2, "price": 15800 },
  { "label": "2大1小", "adultCount": 2, "childCount": 1, "price": 18800 }
]
```

### 前端改造

产品编辑页的"价格档位"表单改为：
- 输入：档位名称（如"1大1小"）+ 成人数 + 儿童数
- **不输入价格**（价格由后端从团期combo自动算）
- 回显用 `priceTierLabels` 字段

---

## 补充：价格档位保存方式

价格档位没有独立的保存接口，跟产品一起保存。

前端在价格档位区域加个"保存"按钮，点击时调 `POST /admin/product/save`（或 `PUT /admin/product/{id}`），body 中带 `priceTierLabels` 字段：

```json
{
  "productId": "xxx",
  "priceTierLabels": [
    { "label": "1大1小", "adultCount": 1, "childCount": 1 },
    { "label": "2大1小", "adultCount": 2, "childCount": 1 }
  ]
}
```

和产品其他字段一起提交即可，不需要单独接口。
