luofl
2025-03-06 2ed6444f45d227e2acc6de65c3e8b582440fb83a
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -41,6 +41,9 @@
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Slf4j
@@ -142,6 +145,9 @@
         throw new RuntimeException("根据类型(1=服务商品,2=单品商品)获取商品数据失败");
      }
      List<Integer> goodsIds = data.stream().map(Goods::getId).collect(Collectors.toList());
      if(goodsIds.isEmpty()){
         return new ArrayList<>();
      }
      //查询符合商品类型的商品数据
      List<ShoppingCart> list = this.list(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid)
            .in(ShoppingCart::getGoodsId, goodsIds).eq(ShoppingCart::getStatus, 1));
@@ -337,7 +343,20 @@
            .eq(ShoppingCart::getAppUserId, userid));
      goodsSaleNum += count;
      Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
      if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && (goodsSaleNum + shoppingCart.getNumber()) > goods.getPurchaseLimit()){
      Integer maxNum = 0;
      if(shoppingCart.getType() == 2){
         R<SeckillActivityInfo> r = seckillActivityInfoClient.getSeckillActivityInfoByGoodsId(shoppingCart.getGoodsId());
         if (R.isError(r)){
            throw new ServiceException("获取秒杀商品失败!");
         }
         SeckillActivityInfo seckillActivityInfo = r.getData();
         maxNum = seckillActivityInfo.getMaxNum();
      }else {
         maxNum = goods.getPurchaseLimit();
      }
      if(null != goods.getPurchaseLimit() && -1 != maxNum && (goodsSaleNum + shoppingCart.getNumber()) > maxNum){
         throw new ServiceException("超出购买数量限制");
      }
      ShoppingCart one = this.getOne(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid)
@@ -371,7 +390,9 @@
      if(null != shoppingCart){
         Goods goods1 = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
         if(null != goods1.getPurchaseLimit() && -1 != goods1.getPurchaseLimit() && goods1.getPurchaseLimit() < setGoodsNumber.getNumber()){
         if(null != goods1.getPurchaseLimit() && -1 != goods1.getPurchaseLimit()
               && goods1.getPurchaseLimit() < setGoodsNumber.getNumber()
               && setGoodsNumber.getNumber() >= shoppingCart.getNumber()){
            return R.fail("修改数量不能大于限购数量");
         }
@@ -1413,8 +1434,18 @@
         orderBalancePayment.setDistributionAmount(distributionAmount);
         orderBalancePaymentService.save(orderBalancePayment);
      }
      commissionService.calculationCommissionUser(order.getId());
      return R.ok(order.getId().toString());
   }
   
   public String getNumber(Integer size){
@@ -1508,6 +1539,8 @@
      for (Integer goodsId : goodsIds) {
         goodsClient.editGoodsNum(goodsId, 1);
      }
      commissionService.calculationCommissionUser(order.getId());
      return R.ok();
   }