优惠券拆分改动清单.md 4.9 KB

优惠券拆分为满减券和折扣券 - 改动清单

✅ 已完成的改动

1. 数据库层面

  • ✅ 实体类 LifeDiscountCoupon 添加 couponTypediscountRate 字段
  • ✅ DTO类 LifeDiscountCouponDto 添加 couponTypediscountRate 字段
  • ✅ VO类 LifeDiscountCouponVo 添加 couponTypediscountRate 字段
  • ✅ VO类 LifeDiscountCouponFriendRuleVo 添加 couponTypediscountRate 字段

2. 业务逻辑层面

  • 创建优惠券验证 (LifeDiscountCouponServiceImpl.addDiscountCoupon)

    • 满减券:验证 nominalValueminimumSpendingAmount
    • 折扣券:验证 discountRateminimumSpendingAmount
  • 使用优惠券计算 (LifeUserOrderService)

    • 满减券:直接使用 nominalValue 作为减免金额
    • 折扣券:根据订单金额和折扣率计算优惠金额
  • 优惠券规则构建 (LifeDiscountCouponServiceImpl.buildDiscountCouponRule)

    • 满减券:显示面值和最低消费
    • 折扣券:显示折扣率和最低消费
  • 好评赠券通知 (LifeDiscountCouponStoreFriendServiceImpl.issueCouponForGoodRating)

    • 通知消息中包含优惠券类型和详情(满减金额或折扣率)

3. 数据查询层面

  • 好友赠券SQL查询 (LifeDiscountCouponStoreFriendMapper)

    • getReceivedSendFriendCouponList (好友赠我-优惠券):添加 coupon_typediscount_rate
    • getReceivedSendFriendCouponListwzhy (我赠好友-优惠券):添加 coupon_typediscount_rate
  • 好友赠券规则查询 (LifeDiscountCouponFriendRuleDetailMapper)

    • getRuleList:添加 coupon_typediscount_rate

📋 需要执行的SQL

-- 添加优惠券类型字段
ALTER TABLE `life_discount_coupon` 
ADD COLUMN `coupon_type` INT DEFAULT NULL COMMENT '优惠券类型:1-满减券,2-折扣券' AFTER `valid_date`;

-- 添加折扣率字段
ALTER TABLE `life_discount_coupon` 
ADD COLUMN `discount_rate` DECIMAL(10,2) DEFAULT NULL COMMENT '折扣率(0-100,用于折扣券,例如80表示8折)' AFTER `coupon_type`;

⚠️ 前端需要适配的地方

1. 创建优惠券页面

  • 需要添加优惠券类型选择(满减券/折扣券)
  • 根据类型显示不同的输入框:
    • 满减券:显示"面值"输入框
    • 折扣券:显示"折扣率"输入框(0-100)

2. 优惠券列表/详情显示

  • 根据 couponType 判断显示方式:
    • couponType = 1(满减券):显示 nominalValue
    • couponType = 2(折扣券):显示 discountRate
  • 兼容旧数据:couponTypenull 时,按满减券处理

3. 好友赠券列表显示

  • 需要根据 couponType 显示不同的优惠信息
  • 文件位置:
    • group_merchant/src/pages/voucherRecord/index.vue (第81行)
    • group_merchant/src/pages/couponManagement/couponsDetail.vue (第13-20行)
    • group_merchant/src/components/IssueCoupons/IssueCoupons.vue (第14-19行)

4. 优惠券预览页面

  • 需要根据类型显示不同的预览效果
  • 文件位置:
    • group_merchant/src/pages/couponDetails/index.vue
    • group_merchant/src/pages/couponManagement/couponsDetail.vue

🔍 不需要改动的部分

1. 优惠券核销

  • 核销逻辑主要针对代金券(life_coupon)和团购券,不涉及优惠券(life_discount_coupon)的核销
  • 文件:CouponManageServiceImpl.verifyCouponCouponManageServiceImpl.verifyOrder

2. 好友赠券发放逻辑

  • 发放流程对满减券和折扣券一致,无需修改
  • 文件:LifeDiscountCouponStoreFriendServiceImpl.setFriendCouponissueFriendCoupon

3. 好评赠券发放逻辑

  • 发放流程对满减券和折扣券一致,无需修改
  • 文件:LifeDiscountCouponStoreFriendServiceImpl.issueCouponForGoodRating

4. 优惠券统计

  • 统计逻辑不涉及优惠券类型区分,无需修改
  • 文件:StoreOperationalStatisticsServiceImpl.getCouponData

📝 注意事项

  1. 兼容性:对于旧数据,couponTypenull 时,代码按满减券处理
  2. 数据迁移:如需将旧数据统一为满减券,可执行:

    UPDATE `life_discount_coupon` SET `coupon_type` = 1 WHERE `coupon_type` IS NULL;
    
  3. 前端适配:前端需要根据 couponType 字段判断显示方式,这是必须的改动

  4. 验证逻辑:创建优惠券时必须选择类型并填写对应字段,已添加验证

🎯 总结

后端改动已完成,主要包括:

  • ✅ 实体类、DTO、VO 字段添加
  • ✅ 创建优惠券验证逻辑
  • ✅ 使用优惠券计算逻辑
  • ✅ 优惠券规则显示逻辑
  • ✅ 好评赠券通知优化
  • ✅ SQL查询字段添加

前端需要适配

  • ⚠️ 创建优惠券页面:添加类型选择和对应输入框
  • ⚠️ 优惠券显示页面:根据类型显示不同内容
  • ⚠️ 好友赠券列表:根据类型显示不同信息