无关风月
2025-01-11 8093bf217b5dbe59a5703b013f3fc79ed0d4fc36
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -410,6 +410,9 @@
      //总优惠金额
      BigDecimal activityAmount = BigDecimal.ZERO;
      BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
      confirmOrderVo.setUseSimultaneously(JSON.parseObject(baseSetting.getContent()).getInteger("status") == 1);
      //减去优惠券优惠金额
      CouponInfoVo couponInfoVo = null;
      if(null != confirmOrder.getCouponId() && 2 != confirmOrder.getPaymentType()){
@@ -480,7 +483,8 @@
      //查询当前是否有订单活动
      List<OrderActivityInfo> orderActivityInfo = orderActivityInfoClient.getNowOrderActivityInfo(appUser.getVipId()).getData();
      //满XX才打折,只有现金才能优惠
      if(null != orderActivityInfo && confirmOrder.getPaymentType() == 1){
      if((confirmOrderVo.getUseSimultaneously() || (!confirmOrderVo.getUseSimultaneously() && activityAmount.equals(BigDecimal.ZERO)))
            && null != orderActivityInfo && confirmOrder.getPaymentType() == 1){
         for (OrderActivityInfo activityInfo : orderActivityInfo) {
            if(activityInfo.getConditionAmount().compareTo(paymentMoney) <= 0){
               confirmOrderVo.setActivityName(activityInfo.getActivityName());
@@ -496,8 +500,6 @@
      }
      confirmOrderVo.setDiscountAmount(activityAmount);
      BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
      confirmOrderVo.setUseSimultaneously(JSON.parseObject(baseSetting.getContent()).getInteger("status") == 1);
      int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
      confirmOrderVo.setEarnPoint(earnPoint);
      //支付金额,订单金额-订单优惠
@@ -1007,6 +1009,10 @@
         orderGood.setBoundShopPoints(myShoppingCartVo.getBoundShopPoints());
         orderGood.setBoundShopSuperiorsCharges(myShoppingCartVo.getBoundShopSuperiorsCharges());
         orderGood.setBoundShopSuperiorsPoints(myShoppingCartVo.getBoundShopSuperiorsPoints());
         orderGood.setCashPayment(myShoppingCartVo.getCashPayment() ? 1 : 0);
         orderGood.setPointPayment(myShoppingCartVo.getPointPayment() ? 1 : 0);
         orderGood.setSellingPrice(myShoppingCartVo.getCash());
         orderGood.setIntegral(myShoppingCartVo.getPoint());
         orderGoodService.save(orderGood);
      }
@@ -1076,8 +1082,13 @@
            appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
            appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
            appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("shopPoint", earnPoint);
            jsonObject.put("availablePoint", earnPoint1);
            if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
               appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1);
               jsonObject.put("transferablePoint", earnPoint1);
            }
            if(earnPoint > 0){
@@ -1089,6 +1100,7 @@
               userPoint.setCreateTime(LocalDateTime.now());
               userPoint.setAppUserId(appUser.getId());
               userPoint.setObjectId(order.getId());
               userPoint.setExtention(jsonObject.toJSONString());
               userPointClient.saveUserPoint(userPoint);
            }
         }
@@ -1164,38 +1176,13 @@
         userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
         userPointClient.saveUserPoint(userPoint);
         lavePoint = appUser.getLavePoint();
         PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
         int earnPoint1 = 0;
         //计算可用积分比例
         if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
            earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
         }
         appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
         appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
         appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
         appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1);
         if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
            appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1);
         }
         appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
         appUser.setLastShopTime(LocalDateTime.now());
         appUserClient.editAppUserById(appUser);
         //变更等级
         appUserClient.vipUpgrade(appUser.getId());
         //构建积分流水记录
         if(earnPoint > 0){
            userPoint = new UserPoint();
            userPoint.setType(1);
            userPoint.setHistoricalPoint(lavePoint);
            userPoint.setVariablePoint(earnPoint);
            userPoint.setBalance(appUser.getLavePoint());
            userPoint.setCreateTime(LocalDateTime.now());
            userPoint.setAppUserId(appUser.getId());
            userPoint.setObjectId(order.getId());
            userPointClient.saveUserPoint(userPoint);
         }
         //积分支付不返佣
         //如果有运费,需要先扣除账户积分,再进行支付。支付成功后修改订单状态,未支付成功则回退积分,删除的订单
         if(expressFee.compareTo(BigDecimal.ZERO) > 0){
            if(shoppingCartPayment.getFreightPaymentType() == 2){
@@ -1262,6 +1249,7 @@
            this.removeBatchByIds(ids);
         }
      }
      //添加账户余额支付明细
      if(redPacketAmount.compareTo(BigDecimal.ZERO) > 0 || distributionAmount.compareTo(BigDecimal.ZERO) > 0){
         OrderBalancePayment orderBalancePayment = new OrderBalancePayment();
@@ -1296,31 +1284,39 @@
      }
      Integer earnPoint = order.getGetPoint();
      AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
      Integer lavePoint = appUser.getLavePoint();
      BigDecimal paymentMoney = order.getPaymentAmount();
      //构建积分流水记录
      if(earnPoint > 0){
         PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
         int earnPoint1 = earnPoint;
         int earnPoint1 = 0;
         if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
            earnPoint1 = new BigDecimal(earnPoint1).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
            earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
         }
         appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
         appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
         appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
         appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
         appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1);
         if(earnPoint > 0){
            UserPoint userPoint = new UserPoint();
            userPoint.setType(1);
            userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
            userPoint.setVariablePoint(earnPoint);
            userPoint.setBalance(appUser.getLavePoint());
            userPoint.setCreateTime(LocalDateTime.now());
            userPoint.setAppUserId(appUser.getId());
            userPoint.setObjectId(order.getId());
            userPointClient.saveUserPoint(userPoint);
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("shopPoint", earnPoint);
         jsonObject.put("availablePoint", earnPoint1);
         if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
            appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1);
            jsonObject.put("transferablePoint", earnPoint1);
         }
         UserPoint userPoint = new UserPoint();
         userPoint.setType(1);
         userPoint.setHistoricalPoint(lavePoint);
         userPoint.setVariablePoint(earnPoint);
         userPoint.setBalance(appUser.getLavePoint());
         userPoint.setCreateTime(LocalDateTime.now());
         userPoint.setAppUserId(appUser.getId());
         userPoint.setObjectId(order.getId());
         userPoint.setExtention(jsonObject.toJSONString());
         userPointClient.saveUserPoint(userPoint);
      }
      appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
      appUser.setLastShopTime(LocalDateTime.now());
@@ -1356,36 +1352,42 @@
      if(null == order || order.getPayStatus() == 2){
         return R.ok();
      }
      Integer earnPoint = order.getGetPoint();
      Integer orderPoint = order.getPoint();
      AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
      Integer lavePoint = appUser.getLavePoint();
      PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
      int earnPoint1 = 0;
      //计算可用积分比例
      if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
         earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
      //扣减订单支付积分
      appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
      appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);
      //可转增积分
      Integer transferablePoint = appUser.getTransferablePoint();
      Integer tra = 0;
      if(transferablePoint > 0){
         tra = transferablePoint - orderPoint;
         appUser.setTransferablePoint(tra >= 0 ? tra : 0);
      }else{
         appUser.setTransferablePoint(appUser.getTransferablePoint() - orderPoint);
      }
      appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
      appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
      appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
      appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1);
      appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
      appUser.setLastShopTime(LocalDateTime.now());
      appUserClient.editAppUserById(appUser);
      //变更等级
      appUserClient.vipUpgrade(appUser.getId());
      //构建积分流水记录
      UserPoint userPoint = new UserPoint();
      userPoint.setType(1);
      userPoint.setType(11);
      userPoint.setHistoricalPoint(lavePoint);
      userPoint.setVariablePoint(earnPoint);
      userPoint.setVariablePoint(orderPoint);
      userPoint.setBalance(appUser.getLavePoint());
      userPoint.setCreateTime(LocalDateTime.now());
      userPoint.setAppUserId(appUser.getId());
      userPoint.setObjectId(order.getId());
      userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
      userPointClient.saveUserPoint(userPoint);
      //积分支付不反积分
      appUser.setLastShopTime(LocalDateTime.now());
      appUserClient.editAppUserById(appUser);
      //变更等级
      appUserClient.vipUpgrade(appUser.getId());
      //修改订支付状态
      order.setPayStatus(2);
      //自提