有一种优惠券既可以通过收藏领取(attention_can_received=1),又可以通过好评赠券。当前逻辑会如何处理这种情况?
位置:LifeDiscountCouponServiceImpl.issueCouponsForStoreCollect
检查逻辑:
// 查询用户已领取的该店铺所有优惠券(不限制领取来源)
// 通过优惠券类型判断,如果用户已领取过某类型的优惠券(无论通过什么方式),不再发放
特点:
位置:LifeDiscountCouponStoreFriendServiceImpl.issueCouponForGoodRating
检查逻辑:
// 直接发放优惠券,不检查用户是否已领取过
// 只检查库存和活动参与次数限制
特点:
流程:
issueSource=2)issueSource=3)当前处理:
结果:用户会获得2张类型1的优惠券
流程:
issueSource=3)issueSource=2)当前处理:
结果:用户只会获得1张类型1的优惠券
逻辑不一致:
可能重复发放:
业务规则不明确:
业务规则:好评赠券和收藏领券不冲突,可以分别领取
逻辑:
issueSource=2),不检查好评等其他方式实现:
issueSource=2 的优惠券优点:
场景示例:
issueSource=2)issueSource=3)文件:LifeDiscountCouponServiceImpl.issueCouponsForStoreCollect
修改内容:
// 修改前:检查所有领取来源
userCouponWrapper.eq(LifeDiscountCouponUser::getUserId, userId)
.eq(LifeDiscountCouponUser::getDeleteFlag, 0)
.in(LifeDiscountCouponUser::getCouponId, availableCouponIds);
// 修改后:只检查收藏领取的来源(issueSource=2)
userCouponWrapper.eq(LifeDiscountCouponUser::getUserId, userId)
.eq(LifeDiscountCouponUser::getDeleteFlag, 0)
.eq(LifeDiscountCouponUser::getIssueSource, 2) // 只检查收藏店铺领取的
.in(LifeDiscountCouponUser::getCouponId, availableCouponIds);
效果:
收藏店铺:
好评送券: