diff --git a/CLAUDE.md b/CLAUDE.md index 63c9ce5..6c92571 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # CLAUDE.md -本文件为 Claude Code (claude.ai/code) 在此代码仓库中工作时提供指导。 +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 构建和开发命令 @@ -120,4 +120,71 @@ mvn test -DskipTests=false 1. 在 `com.ycwl.basic.task` 包中创建类 2. 添加 `@Component` 和 `@Profile("prod")` 注解 3. 使用 `@Scheduled` 进行基于 cron 的执行 -4. 遵循现有的错误处理和日志记录模式 \ No newline at end of file +4. 遵循现有的错误处理和日志记录模式 + +## 价格查询系统 (Pricing Module) + +### 核心架构 +价格查询系统是一个独立的业务模块,位于 `com.ycwl.basic.pricing` 包中,提供商品定价、优惠券管理和价格计算功能。 + +#### 关键组件 +- **PriceCalculationController** (`/api/pricing/calculate`):价格计算API +- **CouponManagementController** (`/api/pricing/admin/coupons/`):优惠券管理API +- **PricingConfigController** (`/api/pricing/config/`):价格配置管理API + +#### 商品类型支持 +```java +ProductType枚举定义了支持的商品类型: +- VLOG_VIDEO: Vlog视频 +- RECORDING_SET: 录像集 +- PHOTO_SET: 照相集 +- PHOTO_PRINT: 照片打印 +- MACHINE_PRINT: 一体机打印 +``` + +#### 价格计算流程 +1. 接收PriceCalculationRequest(包含商品列表和用户ID) +2. 查找商品基础配置和分层定价 +3. 处理套餐商品(BundleProductItem) +4. 自动应用最优优惠券 +5. 返回PriceCalculationResult(包含原价、最终价格、优惠详情) + +#### 优惠券系统 +- **CouponType**: PERCENTAGE(百分比)、FIXED_AMOUNT(固定金额) +- **CouponStatus**: CLAIMED(已领取)、USED(已使用)、EXPIRED(已过期) +- 支持商品类型限制 (`applicableProducts` JSON字段) +- 最小消费金额和最大折扣限制 +- 时间有效期控制 + +#### 分页查询功能 +所有管理接口都支持分页查询,使用PageHelper实现: +- 优惠券配置分页:支持按状态、名称筛选 +- 领取记录分页:支持按用户、优惠券、状态、时间范围筛选 + +#### 统计功能 +- 基础统计:领取数、使用数、可用数 +- 详细统计:使用率、平均使用天数 +- 时间范围统计:指定时间段的整体数据分析 + +### 开发模式 + +#### 添加新商品类型 +1. 在ProductType枚举中添加新类型 +2. 在PriceProductConfig表中配置default配置 +3. 根据需要添加分层定价(PriceTierConfig) +4. 更新前端产品类型映射 + +#### 添加新优惠券类型 +1. 在CouponType枚举中添加类型 +2. 在CouponServiceImpl中实现计算逻辑 +3. 更新applicableProducts验证规则 + +#### 自定义TypeHandler使用 +项目使用自定义TypeHandler处理复杂JSON字段: +- `BundleProductListTypeHandler`:处理套餐商品列表JSON序列化 + +### 测试策略 +- 单元测试:每个服务类都有对应测试类 +- 配置验证测试:DefaultConfigValidationTest验证default配置 +- JSON序列化测试:验证复杂对象的数据库存储 +- 分页功能测试:验证PageHelper集成 \ No newline at end of file