From eaeeb34e74c14d1b89c95c727bae8a2f64ca6aaa Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 2 Sep 2024 12:25:53 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E3=80=91=E5=95=86=E5=9F=8E=EF=BC=9A=E6=BB=A1=E5=87=8F=E9=80=81?= =?UTF-8?q?=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dal/mysql/coupon/CouponMapper.java | 8 -------- .../service/coupon/CouponService.java | 2 +- .../service/coupon/CouponServiceImpl.java | 19 +++++++------------ .../dal/dataobject/order/TradeOrderDO.java | 3 ++- .../order/TradeOrderUpdateServiceImpl.java | 6 +----- 5 files changed, 11 insertions(+), 27 deletions(-) diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/coupon/CouponMapper.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/coupon/CouponMapper.java index a06b92338..e5f1daf6c 100755 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/coupon/CouponMapper.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/coupon/CouponMapper.java @@ -8,7 +8,6 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.coupon.CouponPageReqVO; import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponDO; import cn.iocoder.yudao.module.promotion.enums.common.PromotionProductScopeEnum; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.github.yulichang.toolkit.MPJWrappers; import org.apache.ibatis.annotations.Mapper; @@ -108,11 +107,4 @@ public interface CouponMapper extends BaseMapperX { ); } - default List selectListByIdAndUserIdAndTakeType(Long couponId, Long userId, Integer takeType) { - return selectList(new LambdaQueryWrapper() - .eq(CouponDO::getId, couponId) - .eq(CouponDO::getUserId, userId) - .eq(CouponDO::getTakeType, takeType)); - } - } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponService.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponService.java index 622b09a5b..5fdcd0669 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponService.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponService.java @@ -123,7 +123,7 @@ public interface CouponService { */ int expireCoupon(); - //======================= 查询相关 ======================= + // ======================= 查询相关 ======================= /** * 获得未使用的优惠劵数量 diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java index ecc1adb46..e6cd4ba0e 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java @@ -179,7 +179,7 @@ public class CouponServiceImpl implements CouponService { // 循环收回 for (Long couponId : giveCouponIds) { try { - getSelf().takeBackCoupon(couponId, userId, CouponTakeTypeEnum.ADMIN); + getSelf().invalidateCoupon(couponId, userId); } catch (Exception e) { log.error("[invalidateCouponsByAdmin][couponId({}) 收回优惠券失败]", couponId, e); } @@ -191,10 +191,9 @@ public class CouponServiceImpl implements CouponService { * * @param couponId 模版编号 * @param userId 用户编号 - * @param takeType 领取方式 */ @Transactional(rollbackFor = Exception.class) - public void takeBackCoupon(Long couponId, Long userId, CouponTakeTypeEnum takeType) { + public void invalidateCoupon(Long couponId, Long userId) { // 1.1 校验优惠券 CouponDO coupon = couponMapper.selectByIdAndUserId(couponId, userId); if (coupon == null) { @@ -205,19 +204,15 @@ public class CouponServiceImpl implements CouponService { if (couponTemplate == null) { throw exception(COUPON_TEMPLATE_NOT_EXISTS); } - // 1.3 校验领取方式 - if (ObjectUtil.notEqual(couponTemplate.getTakeType(), takeType.getValue())) { - throw exception(COUPON_TEMPLATE_CANNOT_TAKE); - } - - // 2.1 校验优惠券是否已经使用,如若使用则先不管 + // 1.3 校验优惠券是否已经使用,如若使用则先不管 if (ObjUtil.equal(coupon.getStatus(), CouponStatusEnum.USED.getStatus())) { + log.info("[invalidateCoupon][coupon({}) 已经使用,无法作废]", couponId); return; } - // 2.2 减少优惠劵模板的领取数量 + + // 2.1 减少优惠劵模板的领取数量 couponTemplateService.updateCouponTemplateTakeCount(couponTemplate.getId(), -1); - // 2.3 批量作废优惠劵 - // TODO @puhui999:捉摸了下,貌似搞成逻辑删除好了?不然好多地方的 status 都要做一些变动。可能未来加个 invalidateType 来标识,是管理后台删除,还是取消回收。或者优惠劵的 change log 可能更好。 + // 2.2 作废优惠劵 couponMapper.deleteById(couponId); } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java index 1409561d5..4cfee5e17 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java @@ -296,10 +296,11 @@ public class TradeOrderDO extends BaseDO { */ private Integer vipPrice; + // TODO @puhui999:我们要不要把相关的字段,定义的更明确一点?例如说,giveCouponTemplateCounts 赠送的优惠劵模版数量,或者 giveCouponCounts 赠送的优惠劵数量。感受上,Coupons 和 Map 有点点重叠哈。 /** * 赠送的优惠劵 * - * key: 优惠劵编号 + * key: 优惠劵模版编号 * value:对应的优惠券数量 * * 目的:用于订单支付后赠送优惠券 diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java index bdae8f227..379be205f 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java @@ -892,15 +892,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @Override public void updateOrderGiveCouponIds(Long userId, Long orderId, List giveCouponIds) { - // 1.1 检验订单存在 + // 1. 检验订单存在 TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(orderId, userId); if (order == null) { throw exception(ORDER_NOT_FOUND); } - // 1.2 校验订单是否支付 - if (!order.getPayStatus()) { - throw exception(ORDER_CANCEL_PAID_FAIL, "已支付"); - } // 2. 更新订单赠送的优惠券编号列表 tradeOrderMapper.updateById(new TradeOrderDO().setId(orderId).setGiveCouponIds(giveCouponIds));