From b0cc9bd3619e69fa4c8bbdedebb56435cfd74a8f Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期五, 17 一月 2025 11:24:51 +0800
Subject: [PATCH] 12.18

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java |   40 +++++++++++++++++++++++++++-------------
 1 files changed, 27 insertions(+), 13 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 64920fb..6df1678 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
@@ -330,9 +330,27 @@
 	@Override
 	public Long addGoods(ShoppingCart shoppingCart) {
 		Long userid = tokenService.getLoginUserApplet().getUserid();
-		Integer goodsSaleNum = orderService.getGoodsSaleNum(shoppingCart.getGoodsId(), null, userid);
+		long goodsSaleNum = orderService.getGoodsSaleNum(shoppingCart.getGoodsId(), null, userid);
+		long count = count(new LambdaQueryWrapper<ShoppingCart>()
+				.eq(ShoppingCart::getGoodsId, shoppingCart.getGoodsId())
+				.eq(ShoppingCart::getStatus,1)
+				.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)
@@ -358,13 +376,7 @@
 	@Override
 	public R setGoodsNumber(SetGoodsNumber setGoodsNumber) {
 
-		Long userid = tokenService.getLoginUserApplet().getUserid();
 		ShoppingCart shoppingCart = this.getById(setGoodsNumber.getId());
-		Integer goodsSaleNum = orderService.getGoodsSaleNum(shoppingCart.getGoodsId(), null, userid);
-		Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
-		if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && (goodsSaleNum + shoppingCart.getNumber()) > goods.getPurchaseLimit()){
-			throw new ServiceException("超出购买数量限制");
-		}
 		if(0 >= setGoodsNumber.getNumber()){
 			return R.fail("修改数量不能小于等于0");
 		}
@@ -372,7 +384,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("修改数量不能大于限购数量");
 			}
 
@@ -1196,7 +1210,7 @@
 					totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney1);
 					balance = balance.subtract(paymentMoney1);
 					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
-					appUser.setTotalDistributionAmount(totalDistributionAmount);
+//					appUser.setTotalDistributionAmount(totalDistributionAmount);
 					appUser.setBalance(balance);
 					distributionAmount = paymentMoney1;
 				}else{
@@ -1204,7 +1218,7 @@
 					totalDistributionAmount = BigDecimal.ZERO;
 					balance = balance.subtract(paymentMoney1);
 					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
-					appUser.setTotalDistributionAmount(totalDistributionAmount);
+//					appUser.setTotalDistributionAmount(totalDistributionAmount);
 					appUser.setBalance(balance);
 					distributionAmount = totalDistributionAmount;
 				}
@@ -1353,7 +1367,7 @@
 							totalDistributionAmount = totalDistributionAmount.subtract(expressFee1);
 							balance = balance.subtract(expressFee1);
 							appUser.setTotalRedPacketAmount(totalRedPacketAmount);
-							appUser.setTotalDistributionAmount(totalDistributionAmount);
+//							appUser.setTotalDistributionAmount(totalDistributionAmount);
 							appUser.setBalance(balance);
 							distributionAmount = expressFee1;
 						}else{
@@ -1361,7 +1375,7 @@
 							totalDistributionAmount = BigDecimal.ZERO;
 							balance = balance.subtract(expressFee1);
 							appUser.setTotalRedPacketAmount(totalRedPacketAmount);
-							appUser.setTotalDistributionAmount(totalDistributionAmount);
+//							appUser.setTotalDistributionAmount(totalDistributionAmount);
 							appUser.setBalance(balance);
 							distributionAmount = totalDistributionAmount;
 						}

--
Gitblit v1.7.1