From e23242d09e31e1c78f7ecdbc2859c9f99a3c4171 Mon Sep 17 00:00:00 2001
From: luofl <1442745593@qq.com>
Date: 星期一, 17 三月 2025 10:00:59 +0800
Subject: [PATCH] 迭代版本:2.28

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java |  101 ++++++++++++++++++++++----------------------------
 1 files changed, 45 insertions(+), 56 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 d4e8d6f..ee69283 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
@@ -14,6 +14,7 @@
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.event.PayEvent;
 import com.ruoyi.order.mapper.ShoppingCartMapper;
 import com.ruoyi.order.model.Order;
 import com.ruoyi.order.model.OrderBalancePayment;
@@ -31,6 +32,7 @@
 import com.ruoyi.other.api.vo.GetGoodsShopByGoodsIds;
 import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
@@ -108,12 +110,6 @@
 	private CommissionService commissionService;
 
 	@Resource
-	private VipSettingClient vipSettingClient;
-
-	@Resource
-	private UserChangeLogClient userChangeLogClient;
-
-	@Resource
 	private PointSettingClient pointSettingClient;
 	
 	@Resource
@@ -121,6 +117,9 @@
 	
 	@Resource
 	private RedisTemplate redisTemplate;
+
+	@Resource
+	private ApplicationEventPublisher applicationEventPublisher;
 	
 	
 	
@@ -1167,7 +1166,7 @@
 				appUser.setLastShopTime(LocalDateTime.now());
 				appUserClient.editAppUserById(appUser);
 				//变更等级
-				appUserClient.vipUpgrade(appUser.getId());
+				applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
 				//修改订支付状态
 				order.setPayStatus(2);
 				//自提
@@ -1204,33 +1203,36 @@
 			BigDecimal balance = appUser.getBalance();
 			//红包金额满足支付
 			BigDecimal paymentMoney1 = paymentMoney;
-			if(paymentMoney1.compareTo(totalRedPacketAmount) <= 0){
-				totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney1);
-				balance = balance.subtract(paymentMoney1);
-				appUser.setTotalRedPacketAmount(totalRedPacketAmount);
-				appUser.setBalance(balance);
-				redPacketAmount = paymentMoney1;
-			}else{
-				paymentMoney1 = paymentMoney1.subtract(totalRedPacketAmount);
-				redPacketAmount = totalRedPacketAmount;
-				totalRedPacketAmount = BigDecimal.ZERO;
-				if(paymentMoney1.compareTo(totalDistributionAmount) <= 0){
-					totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney1);
-					balance = balance.subtract(paymentMoney1);
-					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
-//					appUser.setTotalDistributionAmount(totalDistributionAmount);
-					appUser.setBalance(balance);
-					distributionAmount = paymentMoney1;
-				}else{
-					paymentMoney1 = paymentMoney1.subtract(totalDistributionAmount);
-					totalDistributionAmount = BigDecimal.ZERO;
-					balance = balance.subtract(paymentMoney1);
-					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
-//					appUser.setTotalDistributionAmount(totalDistributionAmount);
-					appUser.setBalance(balance);
-					distributionAmount = totalDistributionAmount;
-				}
-			}
+			balance = balance.subtract(paymentMoney1);
+			appUser.setBalance(balance);
+
+//			if(paymentMoney1.compareTo(totalRedPacketAmount) <= 0){
+//				totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney1);
+//				balance = balance.subtract(paymentMoney1);
+//				appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+//				appUser.setBalance(balance);
+//				redPacketAmount = paymentMoney1;
+//			}else{
+//				paymentMoney1 = paymentMoney1.subtract(totalRedPacketAmount);
+//				redPacketAmount = totalRedPacketAmount;
+//				totalRedPacketAmount = BigDecimal.ZERO;
+//				if(paymentMoney1.compareTo(totalDistributionAmount) <= 0){
+////					totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney1);
+//					balance = balance.subtract(paymentMoney1);
+//					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+////					appUser.setTotalDistributionAmount(totalDistributionAmount);
+//					appUser.setBalance(balance);
+//					distributionAmount = paymentMoney1;
+//				}else{
+//					paymentMoney1 = paymentMoney1.subtract(totalDistributionAmount);
+//					totalDistributionAmount = BigDecimal.ZERO;
+//					balance = balance.subtract(paymentMoney1);
+//					appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+////					appUser.setTotalDistributionAmount(totalDistributionAmount);
+//					appUser.setBalance(balance);
+//					distributionAmount = totalDistributionAmount;
+//				}
+//			}
 			//构建积分流水记录
 			if(earnPoint > 0){
 				PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
@@ -1269,7 +1271,7 @@
 			appUser.setLastShopTime(LocalDateTime.now());
 			appUserClient.editAppUserById(appUser);
 			//变更等级
-			appUserClient.vipUpgrade(appUser.getId());
+			applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
 			//构建余额明细变动记录
 			BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
 			balanceChangeRecord.setAppUserId(appUser.getId());
@@ -1352,7 +1354,7 @@
 			appUser.setLastShopTime(LocalDateTime.now());
 			appUserClient.editAppUserById(appUser);
 			//变更等级
-			appUserClient.vipUpgrade(appUser.getId());
+			applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
 
 			//积分支付不返佣
 
@@ -1435,15 +1437,7 @@
 			orderBalancePaymentService.save(orderBalancePayment);
 		}
 		
-		//异步线程执行分佣临时数据构建
-		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), new ThreadPoolExecutor.DiscardPolicy());
-		threadPoolExecutor.execute(new Runnable() {
-			@Override
-			public void run() {
-				commissionService.calculationCommissionUser();
-				commissionService.calculationCommissionShop();
-			}
-		});
+		commissionService.calculationCommissionUser(order.getId());
 		return R.ok(order.getId().toString());
 	}
 
@@ -1518,13 +1512,16 @@
 		appUser.setLastShopTime(LocalDateTime.now());
 		appUserClient.editAppUserById(appUser);
 		//变更等级
-		appUserClient.vipUpgrade(appUser.getId());
+		applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
 		//修改订支付状态
 		order.setPayStatus(2);
 		//自提
 		if(order.getOrderType() == 1 && StringUtils.isEmpty(order.getAddressJson())){
 			order.setOrderStatus(2);
 		}
+
+		String r7TrxNo = uniPayCallbackResult.getR9_BankTrxNo();
+		order.setSerialNumber(r7TrxNo);
 		orderService.updateById(order);
 
 		//处理优惠券
@@ -1548,15 +1545,7 @@
 			goodsClient.editGoodsNum(goodsId, 1);
 		}
 		
-		//异步线程执行分佣临时数据构建
-		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1), new ThreadPoolExecutor.DiscardPolicy());
-		threadPoolExecutor.execute(new Runnable() {
-			@Override
-			public void run() {
-				commissionService.calculationCommissionUser();
-				commissionService.calculationCommissionShop();
-			}
-		});
+		commissionService.calculationCommissionUser(order.getId());
 		return R.ok();
 	}
 	
@@ -1610,7 +1599,7 @@
 		appUser.setLastShopTime(LocalDateTime.now());
 		appUserClient.editAppUserById(appUser);
 		//变更等级
-		appUserClient.vipUpgrade(appUser.getId());
+		applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
 
 		//修改订支付状态
 		order.setPayStatus(2);

--
Gitblit v1.7.1