# 优惠券拆分为满减券和折扣券 - 改动清单 ## ✅ 已完成的改动 ### 1. 数据库层面 - ✅ 实体类 `LifeDiscountCoupon` 添加 `couponType` 和 `discountRate` 字段 - ✅ DTO类 `LifeDiscountCouponDto` 添加 `couponType` 和 `discountRate` 字段 - ✅ VO类 `LifeDiscountCouponVo` 添加 `couponType` 和 `discountRate` 字段 - ✅ VO类 `LifeDiscountCouponFriendRuleVo` 添加 `couponType` 和 `discountRate` 字段 ### 2. 业务逻辑层面 - ✅ **创建优惠券验证** (`LifeDiscountCouponServiceImpl.addDiscountCoupon`) - 满减券:验证 `nominalValue` 和 `minimumSpendingAmount` - 折扣券:验证 `discountRate` 和 `minimumSpendingAmount` - ✅ **使用优惠券计算** (`LifeUserOrderService`) - 满减券:直接使用 `nominalValue` 作为减免金额 - 折扣券:根据订单金额和折扣率计算优惠金额 - ✅ **优惠券规则构建** (`LifeDiscountCouponServiceImpl.buildDiscountCouponRule`) - 满减券:显示面值和最低消费 - 折扣券:显示折扣率和最低消费 - ✅ **好评赠券通知** (`LifeDiscountCouponStoreFriendServiceImpl.issueCouponForGoodRating`) - 通知消息中包含优惠券类型和详情(满减金额或折扣率) ### 3. 数据查询层面 - ✅ **好友赠券SQL查询** (`LifeDiscountCouponStoreFriendMapper`) - `getReceivedSendFriendCouponList` (好友赠我-优惠券):添加 `coupon_type` 和 `discount_rate` - `getReceivedSendFriendCouponListwzhy` (我赠好友-优惠券):添加 `coupon_type` 和 `discount_rate` - ✅ **好友赠券规则查询** (`LifeDiscountCouponFriendRuleDetailMapper`) - `getRuleList`:添加 `coupon_type` 和 `discount_rate` ## 📋 需要执行的SQL ```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` 折 - 兼容旧数据:`couponType` 为 `null` 时,按满减券处理 ### 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.verifyCoupon`、`CouponManageServiceImpl.verifyOrder` ### 2. 好友赠券发放逻辑 - 发放流程对满减券和折扣券一致,无需修改 - 文件:`LifeDiscountCouponStoreFriendServiceImpl.setFriendCoupon`、`issueFriendCoupon` ### 3. 好评赠券发放逻辑 - 发放流程对满减券和折扣券一致,无需修改 - 文件:`LifeDiscountCouponStoreFriendServiceImpl.issueCouponForGoodRating` ### 4. 优惠券统计 - 统计逻辑不涉及优惠券类型区分,无需修改 - 文件:`StoreOperationalStatisticsServiceImpl.getCouponData` ## 📝 注意事项 1. **兼容性**:对于旧数据,`couponType` 为 `null` 时,代码按满减券处理 2. **数据迁移**:如需将旧数据统一为满减券,可执行: ```sql UPDATE `life_discount_coupon` SET `coupon_type` = 1 WHERE `coupon_type` IS NULL; ``` 3. **前端适配**:前端需要根据 `couponType` 字段判断显示方式,这是必须的改动 4. **验证逻辑**:创建优惠券时必须选择类型并填写对应字段,已添加验证 ## 🎯 总结 **后端改动已完成**,主要包括: - ✅ 实体类、DTO、VO 字段添加 - ✅ 创建优惠券验证逻辑 - ✅ 使用优惠券计算逻辑 - ✅ 优惠券规则显示逻辑 - ✅ 好评赠券通知优化 - ✅ SQL查询字段添加 **前端需要适配**: - ⚠️ 创建优惠券页面:添加类型选择和对应输入框 - ⚠️ 优惠券显示页面:根据类型显示不同内容 - ⚠️ 好友赠券列表:根据类型显示不同信息