Commit 42fcbe0501eb61a7e10f74061f4bb729679bad3f

Authored by puhui999
1 parent 245f14b8

砍价活动:完成订单取消时恢复活动库存

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/bargain/BargainActivityServiceImpl.java
... ... @@ -85,11 +85,16 @@ public class BargainActivityServiceImpl implements BargainActivityService {
85 85  
86 86 @Override
87 87 public void updateBargainActivityStock(Long id, Integer count) {
88   - // 更新库存。如果更新失败,则抛出异常
89   - int updateCount = bargainActivityMapper.updateStock(id, count);
90   - if (updateCount == 0) {
91   - throw exception(BARGAIN_ACTIVITY_STOCK_NOT_ENOUGH);
  88 + if (count < 0) {
  89 + // 更新库存。如果更新失败,则抛出异常
  90 + int updateCount = bargainActivityMapper.updateStock(id, count);
  91 + if (updateCount == 0) {
  92 + throw exception(BARGAIN_ACTIVITY_STOCK_NOT_ENOUGH);
  93 + }
  94 + } else if (count > 0) {
  95 + bargainActivityMapper.updateStock(id, count);
92 96 }
  97 +
93 98 }
94 99  
95 100 private void validateBargainConflict(Long spuId, Long activityId) {
... ... @@ -140,7 +145,7 @@ public class BargainActivityServiceImpl implements BargainActivityService {
140 145  
141 146 @Override
142 147 public List<BargainActivityDO> getBargainActivityList(Set<Long> ids) {
143   - return bargainActivityMapper.selectBatchIds(ids);
  148 + return bargainActivityMapper.selectBatchIds(ids);
144 149 }
145 150  
146 151 @Override
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBargainHandler.java
1 1 package cn.iocoder.yudao.module.trade.service.order.handler;
2 2  
  3 +import cn.hutool.core.lang.Assert;
3 4 import cn.iocoder.yudao.module.promotion.api.bargain.BargainActivityApi;
4 5 import cn.iocoder.yudao.module.promotion.api.bargain.BargainRecordApi;
5 6 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
... ... @@ -28,6 +29,8 @@ public class TradeBargainHandler implements TradeOrderHandler {
28 29 if (TradeOrderTypeEnum.isBargain(order.getType())) {
29 30 return;
30 31 }
  32 + // 明确校验一下
  33 + Assert.isTrue(orderItems.size() == 1, "砍价时,只允许选择一个商品");
31 34  
32 35 // 扣减砍价活动的库存
33 36 bargainActivityApi.updateBargainActivityStock(order.getBargainActivityId(),
... ... @@ -39,6 +42,8 @@ public class TradeBargainHandler implements TradeOrderHandler {
39 42 if (TradeOrderTypeEnum.isBargain(order.getType())) {
40 43 return;
41 44 }
  45 + // 明确校验一下
  46 + Assert.isTrue(orderItems.size() == 1, "砍价时,只允许选择一个商品");
42 47  
43 48 // 记录砍价记录对应的订单编号
44 49 bargainRecordApi.updateBargainRecordOrderId(order.getBargainRecordId(), order.getId());
... ... @@ -49,7 +54,12 @@ public class TradeBargainHandler implements TradeOrderHandler {
49 54 if (TradeOrderTypeEnum.isBargain(order.getType())) {
50 55 return;
51 56 }
52   - // TODO 芋艿:取消订单时,需要增加库存
  57 + // 明确校验一下
  58 + Assert.isTrue(orderItems.size() == 1, "砍价时,只允许选择一个商品");
  59 +
  60 + // 恢复砍价活动的库存
  61 + bargainActivityApi.updateBargainActivityStock(order.getBargainActivityId(),
  62 + orderItems.get(0).getCount());
53 63 }
54 64  
55 65 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java
... ... @@ -76,11 +76,4 @@ public class TradeCombinationHandler implements TradeOrderHandler {
76 76 recordIdAndHeadId.getKey(), recordIdAndHeadId.getValue());
77 77 }
78 78  
79   - @Override
80   - public void cancelOrder(TradeOrderDO order, List<TradeOrderItemDO> orderItems) {
81   - if (TradeOrderTypeEnum.isCombination(order.getType())) {
82   - return;
83   - }
84   - }
85   -
86 79 }
... ...