From fb6eee80334ae23a2eca8c37baeef05e86c919ed Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 10 十二月 2024 17:09:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java |   79 ++++++++++++++++++++++++++++++++++++---
 1 files changed, 73 insertions(+), 6 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 d0dad92..d589c8d 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
@@ -6,10 +6,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.feignClient.*;
-import com.ruoyi.account.api.model.AppUser;
-import com.ruoyi.account.api.model.BalanceChangeRecord;
-import com.ruoyi.account.api.model.UserAddress;
-import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.model.*;
 import com.ruoyi.account.api.vo.CouponInfoVo;
 import com.ruoyi.account.api.vo.PaymentUserCoupon;
 import com.ruoyi.account.api.vo.PaymentUserCouponVo;
@@ -101,6 +98,12 @@
 	
 	@Resource
 	private CommissionService commissionService;
+	
+	@Resource
+	private VipSettingClient vipSettingClient;
+	
+	@Resource
+	private UserChangeLogClient userChangeLogClient;
 	
 	
 	
@@ -664,9 +667,14 @@
 		//积分支付的订单积分
 		Integer orderPoint = 0;
 		if(3 != shoppingCartPayment.getPaymentType()){
-			orderMoney = goodsList.stream().map(MyShoppingCartVo::getCash).reduce(BigDecimal::add).get();
+			for (MyShoppingCartVo myShoppingCartVo : goodsList) {
+				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());
+			}
 			if(appUser.getLavePoint().intValue() < orderPoint){
 				return R.fail("账户剩余积分不足");
 			}
@@ -768,7 +776,10 @@
 		}
 		
 		//可获得的消费积分
-		int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
+		int earnPoint = 0;
+		for (MyShoppingCartVo myShoppingCartVo : goodsList) {
+			earnPoint += (myShoppingCartVo.getEarnSpendingPoints() * myShoppingCartVo.getNumber());
+		}
 		if(null != shoppingCartPayment.getUserAddressId()){
 			userAddressClient.getUserAddressById(shoppingCartPayment.getUserAddressId()).getData();
 		}
@@ -940,6 +951,7 @@
 			if(earnPoint > 0){
 				appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
 				appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+				appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
 				
 				UserPoint userPoint = new UserPoint();
 				userPoint.setType(1);
@@ -951,6 +963,8 @@
 				userPoint.setObjectId(order.getId());
 				userPointClient.saveUserPoint(userPoint);
 			}
+			appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
+			appUser.setLastShopTime(LocalDateTime.now());
 			appUserClient.editAppUserById(appUser);
 			//构建余额明细变动记录
 			BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
@@ -968,6 +982,8 @@
 			orderService.updateById(order);
 			//删除购物车数据
 			this.removeBatchByIds(ids);
+			//检查消费积分满足后升级会员
+			vipUpgrade(appUser);
 		}
 		//积分支付
 		if(3 == shoppingCartPayment.getPaymentType()){
@@ -975,7 +991,13 @@
 			appUser.setLavePoint(lavePoint - orderPoint);
 			appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
 			appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+			appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
+			appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
+			appUser.setLastShopTime(LocalDateTime.now());
 			appUserClient.editAppUserById(appUser);
+			//检查消费积分满足后升级会员
+			vipUpgrade(appUser);
+			
 			//构建积分流水记录
 			UserPoint userPoint = new UserPoint();
 			userPoint.setType(4);
@@ -1067,4 +1089,49 @@
 		}
 		return str;
 	}
+	
+	
+	/**
+	 * 会员等级变化
+	 * @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(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(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