diff --git a/changelogs/2026-03/31_feat_young_child_baby_price_mode.md b/changelogs/2026-03/31_feat_young_child_baby_price_mode.md new file mode 100644 index 0000000..8a3da44 --- /dev/null +++ b/changelogs/2026-03/31_feat_young_child_baby_price_mode.md @@ -0,0 +1,65 @@ +# 小童/幼童定价模式扩展 + +**日期**: 2026-03-31 +**PR**: #83 +**类型**: feat(新功能) +**影响服务**: hl-product-service, hl-mp-service + +--- + +## 变更说明 + +小童和幼童的定价方式从固定模式改为"百分比 / 固定价"二选一。 + +### 之前 +- 小童:只能按儿童价百分比(`childDiscountPercent`) +- 幼童:只能用固定价(`babyPrice`) + +### 现在 +- 小童:**百分比**或**固定价**,由 `youngChildPriceMode` 控制 +- 幼童:**百分比**或**固定价**,由 `babyPriceMode` 控制 +- 百分比基数统一为**儿童售价** + +--- + +## 新增字段(定价配置接口) + +### POST/PUT `/api/product/internal/{productId}/pricing` + +| 字段 | 类型 | 默认值 | 说明 | +|------|------|--------|------| +| `youngChildPriceMode` | String | `"PERCENT"` | 小童定价模式:`PERCENT`=按儿童价百分比, `FIXED`=固定价 | +| `youngChildFixedPrice` | BigDecimal | null | 小童固定价格(`FIXED`模式时使用) | +| `babyPriceMode` | String | `"FIXED"` | 幼童定价模式:`PERCENT`=按儿童价百分比, `FIXED`=固定价 | +| `babyDiscountPercent` | BigDecimal | null | 幼童折扣百分比(`PERCENT`模式时使用,如50=儿童价的50%) | + +### GET `/api/product/internal/{productId}/pricing` 响应同步新增以上4个字段 + +--- + +## 前端适配要点 + +### 管理后台 - 定价配置页面 + +1. **小童定价**区域新增切换: + - 百分比模式(默认):显示 `childDiscountPercent` 输入框(已有) + - 固定价模式:显示 `youngChildFixedPrice` 输入框(新增) + +2. **幼童定价**区域新增切换: + - 固定价模式(默认):显示 `babyPrice` 输入框(已有) + - 百分比模式:显示 `babyDiscountPercent` 输入框(新增) + +### 小程序端 + +无需改动。价格日历返回的 `youngChildPrice` 和 `babyPrice` 已经是计算后的最终价格。 + +--- + +## 向后兼容 + +- 不传 `youngChildPriceMode`/`babyPriceMode` 时使用默认值,行为与改动前完全一致 +- 已有产品数据无需迁移 + +## 部署注意 + +需要执行 SQL 迁移脚本:`sql/young_child_baby_price_mode.sql`