luofl
2025-03-13 4f97bdbaadcdc19df9dfb0971b930d799c4aeddc
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,7 +1512,7 @@
      appUser.setLastShopTime(LocalDateTime.now());
      appUserClient.editAppUserById(appUser);
      //变更等级
      appUserClient.vipUpgrade(appUser.getId());
      applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
      //修改订支付状态
      order.setPayStatus(2);
      //自提
@@ -1548,15 +1542,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 +1596,7 @@
      appUser.setLastShopTime(LocalDateTime.now());
      appUserClient.editAppUserById(appUser);
      //变更等级
      appUserClient.vipUpgrade(appUser.getId());
      applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
      //修改订支付状态
      order.setPayStatus(2);