Commit c25bf38f50eb8d9917faa7db4754723793e8acb5
1 parent
9c0d0c80
code review:交易订单的取消
Showing
5 changed files
with
43 additions
and
41 deletions
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/CouponApi.java
| @@ -21,6 +21,13 @@ public interface CouponApi { | @@ -21,6 +21,13 @@ public interface CouponApi { | ||
| 21 | void useCoupon(@Valid CouponUseReqDTO useReqDTO); | 21 | void useCoupon(@Valid CouponUseReqDTO useReqDTO); |
| 22 | 22 | ||
| 23 | /** | 23 | /** |
| 24 | + * 退还已使用的优惠券 | ||
| 25 | + * | ||
| 26 | + * @param id 优惠券编号 | ||
| 27 | + */ | ||
| 28 | + void returnUsedCoupon(Long id); | ||
| 29 | + | ||
| 30 | + /** | ||
| 24 | * 校验优惠劵 | 31 | * 校验优惠劵 |
| 25 | * | 32 | * |
| 26 | * @param validReqDTO 校验请求 | 33 | * @param validReqDTO 校验请求 |
| @@ -28,10 +35,4 @@ public interface CouponApi { | @@ -28,10 +35,4 @@ public interface CouponApi { | ||
| 28 | */ | 35 | */ |
| 29 | CouponRespDTO validateCoupon(@Valid CouponValidReqDTO validReqDTO); | 36 | CouponRespDTO validateCoupon(@Valid CouponValidReqDTO validReqDTO); |
| 30 | 37 | ||
| 31 | - /** | ||
| 32 | - * 退还已使用的优惠券 | ||
| 33 | - * | ||
| 34 | - * @param id 优惠券编号 | ||
| 35 | - */ | ||
| 36 | - void returnUsedCoupon(Long id); | ||
| 37 | } | 38 | } |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/CouponApiImpl.java
| @@ -29,14 +29,14 @@ public class CouponApiImpl implements CouponApi { | @@ -29,14 +29,14 @@ public class CouponApiImpl implements CouponApi { | ||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | @Override | 31 | @Override |
| 32 | - public CouponRespDTO validateCoupon(CouponValidReqDTO validReqDTO) { | ||
| 33 | - CouponDO coupon = couponService.validCoupon(validReqDTO.getId(), validReqDTO.getUserId()); | ||
| 34 | - return CouponConvert.INSTANCE.convert(coupon); | 32 | + public void returnUsedCoupon(Long id) { |
| 33 | + couponService.returnUsedCoupon(id); | ||
| 35 | } | 34 | } |
| 36 | 35 | ||
| 37 | @Override | 36 | @Override |
| 38 | - public void returnUsedCoupon(Long id) { | ||
| 39 | - couponService.returnUsedCoupon(id); | 37 | + public CouponRespDTO validateCoupon(CouponValidReqDTO validReqDTO) { |
| 38 | + CouponDO coupon = couponService.validCoupon(validReqDTO.getId(), validReqDTO.getUserId()); | ||
| 39 | + return CouponConvert.INSTANCE.convert(coupon); | ||
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | } | 42 | } |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponService.java
| @@ -55,6 +55,13 @@ public interface CouponService { | @@ -55,6 +55,13 @@ public interface CouponService { | ||
| 55 | void useCoupon(Long id, Long userId, Long orderId); | 55 | void useCoupon(Long id, Long userId, Long orderId); |
| 56 | 56 | ||
| 57 | /** | 57 | /** |
| 58 | + * 退还已使用的优惠券 | ||
| 59 | + * | ||
| 60 | + * @param id 优惠券编号 | ||
| 61 | + */ | ||
| 62 | + void returnUsedCoupon(Long id); | ||
| 63 | + | ||
| 64 | + /** | ||
| 58 | * 回收优惠劵 | 65 | * 回收优惠劵 |
| 59 | * | 66 | * |
| 60 | * @param id 优惠劵编号 | 67 | * @param id 优惠劵编号 |
| @@ -117,10 +124,4 @@ public interface CouponService { | @@ -117,10 +124,4 @@ public interface CouponService { | ||
| 117 | takeCoupon(templateId, CollUtil.newHashSet(userId), CouponTakeTypeEnum.REGISTER); | 124 | takeCoupon(templateId, CollUtil.newHashSet(userId), CouponTakeTypeEnum.REGISTER); |
| 118 | } | 125 | } |
| 119 | 126 | ||
| 120 | - /** | ||
| 121 | - * 退还已使用的优惠券 | ||
| 122 | - * | ||
| 123 | - * @param id 优惠券编号 | ||
| 124 | - */ | ||
| 125 | - void returnUsedCoupon(Long id); | ||
| 126 | } | 127 | } |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java
| @@ -103,6 +103,29 @@ public class CouponServiceImpl implements CouponService { | @@ -103,6 +103,29 @@ public class CouponServiceImpl implements CouponService { | ||
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | @Override | 105 | @Override |
| 106 | + public void returnUsedCoupon(Long id) { | ||
| 107 | + // 校验存在 | ||
| 108 | + CouponDO coupon = couponMapper.selectById(id); | ||
| 109 | + if (coupon == null) { | ||
| 110 | + throw exception(COUPON_NOT_EXISTS); | ||
| 111 | + } | ||
| 112 | + // 校验状态 | ||
| 113 | + if (ObjectUtil.notEqual(coupon.getTemplateId(), CouponStatusEnum.USED.getStatus())) { | ||
| 114 | + throw exception(COUPON_STATUS_NOT_USED); | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + // 退还 | ||
| 118 | + // TODO @疯狂:最好 where status,避免可能存在的并发问题 | ||
| 119 | + Integer status = LocalDateTimeUtils.beforeNow(coupon.getValidEndTime()) | ||
| 120 | + // 退还时可能已经过期了 | ||
| 121 | + ? CouponStatusEnum.EXPIRE.getStatus() | ||
| 122 | + : CouponStatusEnum.UNUSED.getStatus(); | ||
| 123 | + couponMapper.updateById(new CouponDO().setId(id).setStatus(status)); | ||
| 124 | + | ||
| 125 | + // TODO 增加优惠券变动记录? | ||
| 126 | + } | ||
| 127 | + | ||
| 128 | + @Override | ||
| 106 | @Transactional | 129 | @Transactional |
| 107 | public void deleteCoupon(Long id) { | 130 | public void deleteCoupon(Long id) { |
| 108 | // 校验存在 | 131 | // 校验存在 |
| @@ -202,27 +225,4 @@ public class CouponServiceImpl implements CouponService { | @@ -202,27 +225,4 @@ public class CouponServiceImpl implements CouponService { | ||
| 202 | userIds.removeIf(userId -> MapUtil.getInt(userTakeCountMap, userId, 0) >= couponTemplate.getTakeLimitCount()); | 225 | userIds.removeIf(userId -> MapUtil.getInt(userTakeCountMap, userId, 0) >= couponTemplate.getTakeLimitCount()); |
| 203 | } | 226 | } |
| 204 | 227 | ||
| 205 | - @Override | ||
| 206 | - public void returnUsedCoupon(Long id) { | ||
| 207 | - // 校验存在 | ||
| 208 | - CouponDO coupon = couponMapper.selectById(id); | ||
| 209 | - if (coupon == null) { | ||
| 210 | - throw exception(COUPON_NOT_EXISTS); | ||
| 211 | - } | ||
| 212 | - | ||
| 213 | - // 校验状态 | ||
| 214 | - if (!CouponStatusEnum.USED.getStatus().equals(coupon.getStatus())) { | ||
| 215 | - throw exception(COUPON_STATUS_NOT_USED); | ||
| 216 | - } | ||
| 217 | - | ||
| 218 | - // 退还 | ||
| 219 | - Integer status = LocalDateTimeUtils.beforeNow(coupon.getValidEndTime()) | ||
| 220 | - // 退还时可能已经过期了 | ||
| 221 | - ? CouponStatusEnum.EXPIRE.getStatus() | ||
| 222 | - : CouponStatusEnum.UNUSED.getStatus(); | ||
| 223 | - couponMapper.updateById(new CouponDO().setId(id).setStatus(status)); | ||
| 224 | - | ||
| 225 | - // TODO 增加优惠券变动记录? | ||
| 226 | - } | ||
| 227 | - | ||
| 228 | } | 228 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| @@ -699,7 +699,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -699,7 +699,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 699 | // 3.回滚优惠券 | 699 | // 3.回滚优惠券 |
| 700 | couponApi.returnUsedCoupon(order.getCouponId()); | 700 | couponApi.returnUsedCoupon(order.getCouponId()); |
| 701 | 701 | ||
| 702 | - // 4.回滚积分:积分是支付成功后才增加的吧? | 702 | + // 4.回滚积分:积分是支付成功后才增加的吧? 回复:每个项目不同,目前看下来,确认收货貌似更合适,我再看看其它项目的业务选择; |
| 703 | 703 | ||
| 704 | // TODO 芋艿:OrderLog | 704 | // TODO 芋艿:OrderLog |
| 705 | 705 |