# 优惠券功能使用指南 ## 功能概述 本系统实现了完整的优惠券功能,包括优惠券模板管理、用户优惠券管理、优惠券使用、统计分析等功能。 ## 核心功能 ### 1. 优惠券模板管理 - 创建优惠券模板(满减券、折扣券、免费券) - 设置发放数量限制和个人领取限制 - 配置适用范围(全部商品、指定商品、指定分类) - 设置有效期(领取后生效或固定时间) ### 2. 用户优惠券管理 - 用户主动领取优惠券 - 系统自动发放优惠券 - 优惠券使用和退还 - 优惠券状态管理(未使用、已使用、已过期) ### 3. 订单优惠券功能 - 获取订单可用优惠券 - 计算优惠券优惠金额 - 验证优惠券适用性 - 推荐最优优惠券组合 ### 4. 业务场景支持 - 新用户注册赠送 - 生日优惠券发放 - 消费返券 - 活动批量发放 ## 数据库表结构 ### 优惠券模板表 (shop_coupon) ```sql - id: 主键 - name: 优惠券名称 - description: 优惠券描述 - type: 优惠券类型(10满减券 20折扣券 30免费券) - reduce_price: 满减金额 - discount: 折扣率(0-100) - min_price: 最低消费金额 - total_count: 发放总数量(-1无限制) - issued_count: 已发放数量 - limit_per_user: 每人限领数量(-1无限制) - expire_type: 到期类型(10领取后生效 20固定时间) - expire_day: 有效天数 - start_time: 有效期开始时间 - end_time: 有效期结束时间 - apply_range: 适用范围(10全部商品 20指定商品 30指定分类) - apply_range_config: 适用范围配置(JSON格式) - enabled: 是否启用 - status: 状态 ``` ### 用户优惠券表 (shop_user_coupon) ```sql - id: 主键 - coupon_id: 优惠券模板ID - user_id: 用户ID - name: 优惠券名称 - type: 优惠券类型 - reduce_price: 满减金额 - discount: 折扣率 - min_price: 最低消费金额 - start_time: 有效期开始时间 - end_time: 有效期结束时间 - status: 使用状态(0未使用 1已使用 2已过期) - use_time: 使用时间 - order_id: 使用订单ID - order_no: 使用订单号 - obtain_type: 获取方式(10主动领取 20系统发放 30活动赠送) - obtain_source: 获取来源描述 ``` ## API接口说明 ### 优惠券模板管理 - `GET /api/shop/shop-coupon/page` - 分页查询优惠券模板 - `POST /api/shop/shop-coupon` - 创建优惠券模板 - `PUT /api/shop/shop-coupon` - 更新优惠券模板 - `DELETE /api/shop/shop-coupon/{id}` - 删除优惠券模板 ### 用户优惠券管理 - `GET /api/shop/user-coupon/my` - 获取当前用户优惠券 - `GET /api/shop/user-coupon/my/available` - 获取可用优惠券 - `POST /api/shop/user-coupon/receive/{couponId}` - 领取优惠券 - `PUT /api/shop/user-coupon/use` - 使用优惠券 - `PUT /api/shop/user-coupon/return/{orderId}` - 退还优惠券 ### 优惠券业务功能 - `POST /api/shop/coupon-business/available-for-order` - 获取订单可用优惠券 - `POST /api/shop/coupon-business/calculate-order-amount` - 计算使用优惠券后的订单金额 - `POST /api/shop/coupon-business/recommend-best-combination` - 推荐最优优惠券组合 - `POST /api/shop/coupon-business/batch-issue-activity` - 批量发放活动优惠券 ## 使用示例 ### 1. 创建优惠券模板 ```json { "name": "新用户专享券", "description": "新用户注册即可领取", "type": 10, "reducePrice": 20.00, "minPrice": 100.00, "totalCount": 1000, "limitPerUser": 1, "expireType": 10, "expireDay": 30, "applyRange": 10, "enabled": 1 } ``` ### 2. 用户领取优惠券 ```javascript // 前端调用 POST /api/shop/user-coupon/receive/1 ``` ### 3. 订单使用优惠券 ```json { "goodsItems": [ { "goodsId": 1, "categoryId": 1, "price": 150.00, "quantity": 1 } ], "totalAmount": 150.00 } ``` ### 4. 计算优惠金额 ```javascript // 获取可用优惠券 POST /api/shop/coupon-business/available-for-order // 计算优惠金额 POST /api/shop/coupon-business/calculate-order-amount?userCouponId=1 ``` ## 定时任务 系统包含以下定时任务: 1. **过期优惠券处理** - 每天凌晨2点执行 - 自动更新过期优惠券状态 2. **优惠券到期提醒** - 每天上午10点执行 - 提醒用户即将过期的优惠券 3. **生日优惠券发放** - 每天凌晨1点执行 - 为当天生日的用户发放生日优惠券 ## 配置说明 ### 优惠券类型配置 - `TYPE_REDUCE = 10` - 满减券 - `TYPE_DISCOUNT = 20` - 折扣券 - `TYPE_FREE = 30` - 免费券 ### 适用范围配置 - `APPLY_ALL = 10` - 全部商品 - `APPLY_GOODS = 20` - 指定商品 - `APPLY_CATEGORY = 30` - 指定分类 ### 获取方式配置 - `OBTAIN_RECEIVE = 10` - 主动领取 - `OBTAIN_SYSTEM = 20` - 系统发放 - `OBTAIN_ACTIVITY = 30` - 活动赠送 ## 注意事项 1. **数据一致性**:优惠券使用和退还操作需要保证数据一致性 2. **并发控制**:优惠券领取需要考虑并发情况,避免超发 3. **性能优化**:大量用户时需要考虑查询性能优化 4. **业务规则**:根据实际业务需求调整优惠券规则和限制 ## 扩展功能 可以根据业务需要扩展以下功能: - 优惠券分享功能 - 优惠券兑换码功能 - 优惠券组合使用 - 优惠券使用统计分析 - 优惠券营销活动管理