- 在不改变数据结构的前提下,完成“混合购物车 + 混合订单”新规则落地:
- 支持普通商品与福利商品在同一购物车中共存、一次勾选统一结算;
- 同一订单内按明细区分福利商品与普通商品,福利行禁优惠、仅换货,普通行沿用原优惠与售后规则;
- 自动下单仍仅针对“全福利单”,不受混合订单改造影响。
- 补齐福利模块在自动下单、售后、报表侧与 PRD 的差异,保证链路从“功能可用”走向“规则对齐、可审计”。
等等就不一一列出
- **M1-1 购物车层改造(cart 共存 + 价格计算)**
- 放开 `CartServiceImpl.calculatePrice` 中“福利购物车与普通购物车不可混用”的硬拦截,允许同一批次勾选普通+福利条目。
- 保持 `Cart.cartType`、`Cart.welfareActivityId` 与 `CartInfoResponse.cartType/welfareActivityId` 语义不变,前端通过响应区分展示普通/福利商品。
- 在价格计算时:
- 对福利条目:不参与优惠券/满减/积分/SVIP 折扣,只计算原价(+运费按后续策略处理);
- 对普通条目:继续执行原来的优惠券/积分逻辑。
- 验收点:混合勾选场景可以正常返回价格明细;普通商品仍可使用优惠,福利商品部分金额不受优惠影响。
- **M1-2 预下单与福利金额校验(按“福利商品小计”)**
- 在构建 `PreOrderInfoVo` / 预下单快照时,为明细增加“是否福利商品”的标记(如在 VO 层增加 `welfareItem`,从购物车 `cartType` 推导)。
- 同步调整福利校验与自动兜底逻辑:包括 `validateWelfareScene`、`autoFillWelfareIfNecessary`、`resolveUserWelfareCard` 等方法,改为在混合购物车场景下仅对福利条目做活动与商品池校验,允许普通购物车条目共存。
- 将 PRD 中“手动单金额校验”落地为:
- 仅对“福利商品小计金额”与福利卡面额进行三档校验(=面额、>面额、<面额);
- 不足时返回 `WELFARE_AMOUNT_NOT_ENOUGH`,文案为“福利商品金额未达到福利卡使用标准,请凑满 {diff} 元”;
- 自动下单仍保持原有“订单金额=面额”严格等额策略。
- 验收点:
- 纯福利单/混合单下,福利商品小计 < 面额时均被阻断;
- 纯普通单不触发福利校验。
- 【现状备注】当前 `PreOrderInfoVo` 已包含订单级 `welfareType/welfareCardId`,预下单和创建订单阶段已实现福利订单金额校验与 `WELFARE_AMOUNT_NOT_ENOUGH` 错误码,但校验口径基于“整单金额”且 `validateWelfareScene` 要求全部购物车条目为福利车,后续需按本计划改造为“明细级福利标记 + 福利小计金额校验”。
- **M1-3 优惠券与积分仅作用于普通明细**
- 在预下单、价格计算与创建订单阶段(`FrontOrderServiceImpl` 中涉及优惠/积分的逻辑)统一调整: