From 210828d1a6947596fe00ab30fcd8725c6714dde4 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 02 一月 2025 21:04:16 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java |  102 +++++++++++++++++---------------------------------
 1 files changed, 35 insertions(+), 67 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 db2b7cd..8fbdf6e 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
@@ -101,12 +101,6 @@
 	@Resource
 	private UserChangeLogClient userChangeLogClient;
 
-
-
-
-
-
-	
 	@Resource
 	private PointSettingClient pointSettingClient;
 	
@@ -372,7 +366,7 @@
 			confirmOrderVo.setDiscountAmount(orderMoney.subtract(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
 		}
 		BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
-		confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1"));
+		confirmOrderVo.setUseSimultaneously(JSON.parseObject(baseSetting.getContent()).getInteger("status") == 1);
 		int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
 		confirmOrderVo.setEarnPoint(earnPoint);
 		//支付金额,订单金额-订单优惠
@@ -394,7 +388,7 @@
 			List<PaymentUserCouponVo> data = userCouponClient.getPaymentUserCoupon(paymentUserCoupon).getData();
 			if(null != data){
 				for (PaymentUserCouponVo couponInfo : data) {
-					List<Integer> forGoodIds = couponInfo.getForGoodIds();
+					List<String> forGoodIds = couponInfo.getForGoodIds();
 					//全部商品适用
 					if(null == forGoodIds){
 						//满减券
@@ -602,7 +596,7 @@
 			String goodsName = "";
 			for (Integer goodsId : goodsIds) {
 				Goods goods = goodsClient.getGoodsById(goodsId).getData();
-				if(1 == goods.getAppointStore() && !collect.contains(goodsId)){
+				if(goods.getType() == 1 && 1 == goods.getAppointStore() && !collect.contains(goodsId)){
 					goodsName = goods.getName();
 					break;
 				}
@@ -623,7 +617,6 @@
 				orderMoney = orderMoney.add(myShoppingCartVo.getCash().multiply(new BigDecimal(myShoppingCartVo.getNumber())));
 			}
 		}else{
-			orderPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getPoint).sum();
 			for (MyShoppingCartVo myShoppingCartVo : goodsList) {
 				orderPoint += (myShoppingCartVo.getPoint() * myShoppingCartVo.getNumber());
 			}
@@ -647,9 +640,10 @@
 		if(null != shoppingCartPayment.getUserCouponId() && 3 != shoppingCartPayment.getPaymentType()){
 			couponInfoVo = userCouponClient.getCouponInfo(shoppingCartPayment.getUserCouponId()).getData();
 			String forGoodIds = couponInfoVo.getForGoodIds();
-			List<Integer> parseArray = JSON.parseArray(forGoodIds, Integer.class);
+			String[] split = forGoodIds.split(",");
+			List<String> parseArray = Arrays.asList(split);
 			//全部商品
-			if(parseArray.contains(-1)){
+			if("-1".equals(forGoodIds)){
 				//满减
 				if(1 == couponInfoVo.getCouponType() && couponInfoVo.getConditionAmount().compareTo(paymentMoney) <= 0){
 					paymentMoney = paymentMoney.subtract(couponInfoVo.getDiscountAmount());
@@ -676,7 +670,7 @@
 				paymentMoney = BigDecimal.ZERO;
 				BigDecimal goodsMoney = BigDecimal.ZERO;
 				for (MyShoppingCartVo myShoppingCartVo : goodsList) {
-					Integer goodsId = myShoppingCartVo.getGoodsId();
+					String goodsId = myShoppingCartVo.getGoodsId().toString();
 					BigDecimal cash = myShoppingCartVo.getCash();
 					if(parseArray.contains(goodsId)){
 						goodsMoney = goodsMoney.add(cash);
@@ -814,6 +808,12 @@
 				return R.fail("账户余额不足");
 			}
 		}
+		if(3 == shoppingCartPayment.getPaymentType()){
+			Integer availablePoint = appUser.getAvailablePoint();
+			if(availablePoint < orderPoint){
+				return R.fail("账户积分不足");
+			}
+		}
 		//判断运费支付是否足够
 		if(null != shoppingCartPayment.getFreightPaymentType() && 2 == shoppingCartPayment.getFreightPaymentType() && expressFee.compareTo(BigDecimal.ZERO) > 0){
 			BigDecimal balance = appUser.getBalance();
@@ -910,17 +910,21 @@
 			//构建积分流水记录
 			if(earnPoint > 0){
 				PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
-				int earnPoint1 = earnPoint;
+				int earnPoint1 = 0;
 				if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
-					earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint());
+					earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
 				}
 				appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
-				appUser.setLavePoint(appUser.getLavePoint() + earnPoint1);
+				appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
 				appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
+				appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
+				if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
+					appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1);
+				}
 
 				UserPoint userPoint = new UserPoint();
 				userPoint.setType(1);
-				userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint1);
+				userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
 				userPoint.setVariablePoint(earnPoint);
 				userPoint.setBalance(appUser.getLavePoint());
 				userPoint.setCreateTime(LocalDateTime.now());
@@ -931,6 +935,8 @@
 			appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
 			appUser.setLastShopTime(LocalDateTime.now());
 			appUserClient.editAppUserById(appUser);
+			//变更等级
+			appUserClient.vipUpgrade(appUser.getId());
 			//构建余额明细变动记录
 			BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
 			balanceChangeRecord.setAppUserId(appUser.getId());
@@ -950,26 +956,31 @@
 			orderService.updateById(order);
 			//删除购物车数据
 			this.removeBatchByIds(ids);
-			//检查消费积分满足后升级会员
-			vipUpgrade(appUser);
 		}
 		//积分支付
 		if(3 == shoppingCartPayment.getPaymentType()){
 			Integer lavePoint = appUser.getLavePoint();
 			PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
-			int earnPoint1 = earnPoint;
+			int earnPoint1 = 0;
 			//计算可用积分比例
 			if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
-				earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint());
+				earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
 			}
+			//扣减订单支付积分
 			appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
+			appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);
+			
 			appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
-			appUser.setLavePoint(appUser.getLavePoint() + earnPoint1);
+			appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+			appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
+			if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
+				appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1);
+			}
 			appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
 			appUser.setLastShopTime(LocalDateTime.now());
 			appUserClient.editAppUserById(appUser);
-			//检查消费积分满足后升级会员
-			vipUpgrade(appUser);
+			//变更等级
+			appUserClient.vipUpgrade(appUser.getId());
 
 			//构建积分流水记录
 			UserPoint userPoint = new UserPoint();
@@ -1072,47 +1083,4 @@
 	}
 
 
-	/**
-	 * 会员等级变化
-	 * @param appUser
-	 */
-	public void vipUpgrade(AppUser appUser){
-		Integer shopPoint = appUser.getShopPoint();
-		Integer vipId = appUser.getVipId();
-		//钻石会员
-		VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData();
-		Integer vipLevelUpShopRole = vipSetting3.getVipLevelUpShopRole();
-		Integer vipLevelUpShop = vipSetting3.getVipLevelUpShop();
-		if(null != vipLevelUpShopRole && 1 == vipLevelUpShopRole && appUser.getVipId() < 3 && shopPoint >= vipLevelUpShop){
-			appUser.setVipId(3);
-			appUserClient.editAppUserById(appUser);
-			//添加等级变化记录
-			UserChangeLog userChangeLog = new UserChangeLog();
-			userChangeLog.setDelFlag(0);
-			userChangeLog.setCreateTime(LocalDateTime.now());
-			userChangeLog.setAppUserId(appUser.getId());
-			userChangeLog.setBeforeVipId(vipId);
-			userChangeLog.setAfterVipId(appUser.getVipId());
-			userChangeLog.setChangeType(1);
-			userChangeLogClient.saveUserChangeLog(userChangeLog);
-			return;
-		}
-		//黄金会员
-		VipSetting vipSetting2 = vipSettingClient.getVipSetting(2).getData();
-		vipLevelUpShopRole = vipSetting2.getVipLevelUpShopRole();
-		vipLevelUpShop = vipSetting2.getVipLevelUpShop();
-		if(null != vipLevelUpShopRole && 1 == vipLevelUpShopRole && appUser.getVipId() < 2 && shopPoint >= vipLevelUpShop){
-			appUser.setVipId(2);
-			appUserClient.editAppUserById(appUser);
-			//添加等级变化记录
-			UserChangeLog userChangeLog = new UserChangeLog();
-			userChangeLog.setDelFlag(0);
-			userChangeLog.setCreateTime(LocalDateTime.now());
-			userChangeLog.setAppUserId(appUser.getId());
-			userChangeLog.setBeforeVipId(vipId);
-			userChangeLog.setAfterVipId(appUser.getVipId());
-			userChangeLog.setChangeType(1);
-			userChangeLogClient.saveUserChangeLog(userChangeLog);
-		}
-	}
 }

--
Gitblit v1.7.1