From 2ed6444f45d227e2acc6de65c3e8b582440fb83a Mon Sep 17 00:00:00 2001
From: luofl <1442745593@qq.com>
Date: 星期四, 06 三月 2025 09:20:40 +0800
Subject: [PATCH] 迭代版本:2.28

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index 7166cae..d4c663a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/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();
 	}
 	

--
Gitblit v1.7.1