# 早鸟优惠改造:产品 1:N 多方案 + 阶梯文案(BUG 20) **日期**:2026-04-20 **PR**:#964 + hotfix #967 **影响**:管理端早鸟优惠管理页 + 小程序产品详情页 + 下单报价 --- ## 业务变化 ### 1. 一个产品可绑定多个早鸟方案 **改造前**:产品 1:1 方案。管理端创建第 2 个绑定同一产品的方案报错「以下产品已绑定其他早鸟计划,不能重复绑定」。 **改造后**:产品 1:N。可以配阶梯: - 2 人打 9 折 (`minPeople=2, maxPeople=2, discountType=PERCENT, discountPercent=90`) - 3-5 人打 85 折 (`minPeople=3, maxPeople=5, discountType=PERCENT, discountPercent=85`) - 6 人及以上打 8 折 (`minPeople=6, maxPeople=null, discountType=PERCENT, discountPercent=80`) 报价时后端按订单人数自动匹配最优方案,落 `order_discount` 表。 ### 2. 优惠类型扩展(3 种) `discount_type` 字段新增: | 值 | 含义 | 示例 | 需填字段 | |---|---|---|---| | `AMOUNT_TOTAL`(**默认**) | 整单立减 | 整单减 500 元 | `discountAmount` | | `AMOUNT_PER_PERSON` | 每人立减 | 每人减 100 元 | `discountAmount` | | `PERCENT` | 按比例打折 | 8 折 | `discountPercent` (0-100) | **⚠️ 重要:老数据默认为 `AMOUNT_TOTAL`**(历史上运营侧约定 `discountAmount=500` 即整单立减 500,所以迁移时存量数据全部回正为 `AMOUNT_TOTAL`)。 --- ## 接口变化 ### 1. 创建/更新方案(兼容老调用,新字段可选) **`POST /admin/order/early-bird`** **`PUT /admin/order/early-bird/{planId}`** `EarlyBirdPlanSaveReqVO` 新增字段: ```ts { "planName": "阶梯档 3-5 人 85 折", "startDate": "2026-04-01", "endDate": "2026-12-31", "enabled": true, "productIds": [123456], // 老字段 "minPeople": 3, "discountAmount": 0, // AMOUNT_TOTAL/PER_PERSON 必填;PERCENT 可为 null // 新字段 "maxPeople": 5, // NEW 最高人数(含),不传=不限 "discountType": "PERCENT", // NEW 默认 AMOUNT_TOTAL "discountPercent": 85, // NEW PERCENT 时必填 (0 totalPeople >= l.minPeople && (l.maxPeople == null || totalPeople <= l.maxPeople)) ``` 2. 匹配到方案时,提示文案可参考:`"您当前 N 人,命中 '${peopleRangeText} ${discountText}'"` 3. 可顺带提示"更优档位":若 `ladder` 里有 `minPeople > totalPeople` 且折扣更大的,提示"满 X 人可享 Y" --- ## 兼容性 - 老数据:全部默认 `discount_type=AMOUNT_TOTAL`,行为不变(整单立减) - 老接口:`EarlyBirdPlanSaveReqVO` 新字段全部可选,旧版管理端提交不传也可 - 老订单:已支付订单不回溯,`order_discount` 持久化的 `discount_amount` 不变 - 废弃但保留:`earlyBirdText/earlyBirdPlanName/earlyBirdDiscount` 三个老字段继续下发(值按新逻辑计算),下个大版本下架