feat(pricing): 新增打包购买优惠功能

- 添加打包购买优惠信息类 BundleDiscountInfo
- 实现打包购买优惠提供者 BundleDiscountProvider
- 添加打包购买优惠服务接口 IBundleDiscountService 及其实现类 BundleDiscountServiceImpl
- 在 DiscountInfo 中添加 bundleDiscountInfo 字段以支持打包优惠
- 更新 CLAUDE.md 文档,详细说明打包购买优惠系统的设计和实现
This commit is contained in:
2025-09-18 10:47:40 +08:00
parent e86dc85afe
commit e9102e8e58
6 changed files with 761 additions and 10 deletions

View File

@@ -0,0 +1,79 @@
package com.ycwl.basic.pricing.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 打包购买优惠信息
*/
@Data
public class BundleDiscountInfo {
/**
* 打包配置ID
*/
private Long bundleConfigId;
/**
* 打包名称
*/
private String bundleName;
/**
* 打包描述
*/
private String bundleDescription;
/**
* 打包优惠类型
* FIXED_DISCOUNT: 固定减免金额
* PERCENTAGE_DISCOUNT: 百分比折扣
* FIXED_PRICE: 固定价格
*/
private String discountType;
/**
* 优惠值(根据类型不同含义不同)
* FIXED_DISCOUNT: 减免金额
* PERCENTAGE_DISCOUNT: 折扣百分比(如0.8表示8折)
* FIXED_PRICE: 固定价格
*/
private BigDecimal discountValue;
/**
* 满足条件的商品列表
*/
private List<ProductItem> eligibleProducts;
/**
* 最低购买数量要求
*/
private Integer minQuantity;
/**
* 最低购买金额要求
*/
private BigDecimal minAmount;
/**
* 实际优惠金额
*/
private BigDecimal actualDiscountAmount;
/**
* 是否可与其他优惠叠加
*/
private Boolean canUseWithCoupon = true;
/**
* 是否可与券码叠加
*/
private Boolean canUseWithVoucher = true;
/**
* 是否可与一口价叠加
*/
private Boolean canUseWithOnePrice = true;
}

View File

@@ -84,4 +84,9 @@ public class DiscountInfo {
* 一口价信息(如果是一口价优惠)
*/
private OnePriceInfo onePriceInfo;
/**
* 打包优惠信息(如果是打包优惠)
*/
private BundleDiscountInfo bundleDiscountInfo;
}