Commit c25bf38f50eb8d9917faa7db4754723793e8acb5

Authored by YunaiV
1 parent 9c0d0c80

code review:交易订单的取消

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