puzhibing
2024-12-10 fb6eee80334ae23a2eca8c37baeef05e86c919ed
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);
      }
   }
}