diff --git a/src/main/java/com/ycwl/basic/pricing/CLAUDE.md b/src/main/java/com/ycwl/basic/pricing/CLAUDE.md index 396d59e2..158caa9a 100644 --- a/src/main/java/com/ycwl/basic/pricing/CLAUDE.md +++ b/src/main/java/com/ycwl/basic/pricing/CLAUDE.md @@ -144,6 +144,17 @@ public enum ProductType { } ``` +#### 商品价格配置控制字段 +`PriceProductConfig` 实体包含以下优惠控制字段: +- `canUseCoupon`: 是否可使用优惠券 +- `canUseVoucher`: 是否可使用券码 +- `canUseOnePrice`: 是否可使用一口价优惠(新增) + +#### 一口价优惠控制机制 +- 当购物车中任何商品的 `canUseOnePrice` 为 `false` 时,将跳过整个购物车的一口价优惠检测 +- 配置优先级:具体商品配置 > 商品类型默认配置 > 系统默认(支持) +- 异常情况下默认支持一口价优惠,确保业务流程不受影响 + #### 分层定价 支持基于数量的分层定价策略,通过 `PriceTierConfig` 配置不同数量区间的单价。 @@ -339,6 +350,7 @@ public interface IDiscountDetectionService { #### OnePricePurchaseDiscountProvider (优先级: 120) - 处理一口价优惠逻辑(景区级统一价格) - **最高优先级**,优先于所有其他优惠类型 +- 商品级别控制:检查购物车中所有商品的 `canUseOnePrice` 配置,任一商品不支持则跳过检测 - 仅当一口价小于当前金额时产生优惠;是否可与券码/优惠券叠加由配置 `canUseCoupon/canUseVoucher` 决定 #### BundleDiscountProvider (优先级: 100) @@ -370,7 +382,7 @@ public interface IDiscountDetectionService { 特殊情况: - 全场免费券码:直接最终价=0,停止后续优惠 -- 一口价:可叠加性由配置 canUseCoupon / canUseVoucher 控制 +- 一口价:可叠加性由配置 canUseCoupon / canUseVoucher 控制;商品级别由 canUseOnePrice 控制参与检测 ``` #### 扩展支持 @@ -535,7 +547,7 @@ public class PriceCalculationResult { ## 数据库设计 ### 核心表结构(摘) -- `price_product_config`: 商品价格基础配置 +- `price_product_config`: 商品价格基础配置(包含 `can_use_coupon`、`can_use_voucher`、`can_use_one_price` 优惠控制字段) - `price_tier_config`: 分层定价配置 - `price_bundle_config`: 套餐配置 - `price_coupon_config`: 优惠券配置