Pu Zhibing
2024-12-06 8cdadf81127b9d34a54d250a3abc878a8d5339c5
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -421,35 +421,37 @@
      paymentUserCoupon.setType(confirmOrder.getType());
      if(confirmOrder.getPaymentType() == 1){
         List<PaymentUserCouponVo> data = userCouponClient.getPaymentUserCoupon(paymentUserCoupon).getData();
         for (PaymentUserCouponVo couponInfo : data) {
            List<Integer> forGoodIds = couponInfo.getForGoodIds();
            //全部商品适用
            if(null == forGoodIds){
               //满减券
               if(1 == couponInfo.getCouponType() && orderMoney.compareTo(couponInfo.getConditionAmount()) >= 0){
                  couponInfo.setAvailable(true);
               }
               //代金券和折扣券
               if(2 == couponInfo.getCouponType() || 3 == couponInfo.getCouponType()){
                  couponInfo.setAvailable(true);
               }
            }else{
               //部分商品适用
               BigDecimal goodsMoney = BigDecimal.ZERO;
               for (MyShoppingCartVo myShoppingCartVo : goodsList) {
                  Integer goodsId = myShoppingCartVo.getGoodsId();
                  BigDecimal cash = myShoppingCartVo.getCash();
                  if(forGoodIds.contains(goodsId)){
                     goodsMoney = goodsMoney.add(cash);
         if(null != data){
            for (PaymentUserCouponVo couponInfo : data) {
               List<Integer> forGoodIds = couponInfo.getForGoodIds();
               //全部商品适用
               if(null == forGoodIds){
                  //满减券
                  if(1 == couponInfo.getCouponType() && orderMoney.compareTo(couponInfo.getConditionAmount()) >= 0){
                     couponInfo.setAvailable(true);
                  }
               }
               //满减
               if(1 == couponInfo.getCouponType() && couponInfo.getConditionAmount().compareTo(goodsMoney) <= 0){
                  couponInfo.setAvailable(true);
               }
               //代金券
               if(2 == couponInfo.getCouponType() || 3 == couponInfo.getCouponType()){
                  couponInfo.setAvailable(true);
                  //代金券和折扣券
                  if(2 == couponInfo.getCouponType() || 3 == couponInfo.getCouponType()){
                     couponInfo.setAvailable(true);
                  }
               }else{
                  //部分商品适用
                  BigDecimal goodsMoney = BigDecimal.ZERO;
                  for (MyShoppingCartVo myShoppingCartVo : goodsList) {
                     Integer goodsId = myShoppingCartVo.getGoodsId();
                     BigDecimal cash = myShoppingCartVo.getCash();
                     if(forGoodIds.contains(goodsId)){
                        goodsMoney = goodsMoney.add(cash);
                     }
                  }
                  //满减
                  if(1 == couponInfo.getCouponType() && couponInfo.getConditionAmount().compareTo(goodsMoney) <= 0){
                     couponInfo.setAvailable(true);
                  }
                  //代金券
                  if(2 == couponInfo.getCouponType() || 3 == couponInfo.getCouponType()){
                     couponInfo.setAvailable(true);
                  }
               }
            }
         }
@@ -493,7 +495,7 @@
      for (ShoppingCart shoppingCart : list) {
         Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
         MyShoppingCartVo vo = new MyShoppingCartVo();
         vo.setId(shoppingCart.getId());
         vo.setId(shoppingCart.getId().toString());
         vo.setGoodsId(goods.getId());
         vo.setHomePicture(goods.getHomePagePicture());
         vo.setName(goods.getName());
@@ -510,6 +512,7 @@
         //获取支付价格
         Price price = getPrice(appUser, shoppingCart.getGoodsId(), shopId);
         if(null == price){
            price = new Price();
            //使用商品的基础价格
            price.setCash(1 == goods.getCashPayment() ? goods.getSellingPrice() : null);
            price.setPoint(1 == goods.getPointPayment() ? goods.getIntegral() : null);
@@ -527,7 +530,7 @@
         goodsShop.setGoodsId(shoppingCart.getGoodsId());
         goodsShop.setShopId(shopId);
         GoodsShop goodsShop1 = goodsShopClient.getGoodsShop(goodsShop).getData();
         vo.setVerifiable(null == goodsShop1 ? false : true);
         vo.setVerifiable(goods.getAppointStore() == 1 && null == goodsShop1 ? false : true);
         //判断当前数量是否已经超出限购数量(需要计算已经购买的数量)
         if(null == goods.getPurchaseLimit() || -1 == goods.getPurchaseLimit()){
            vo.setPurchaseLimit(false);
@@ -829,7 +832,7 @@
         }
      }
      //判断运费支付是否足够
      if(2 == shoppingCartPayment.getFreightPaymentType() && expressFee.compareTo(BigDecimal.ZERO) > 0){
      if(null != shoppingCartPayment.getFreightPaymentType() && 2 == shoppingCartPayment.getFreightPaymentType() && expressFee.compareTo(BigDecimal.ZERO) > 0){
         BigDecimal balance = appUser.getBalance();
         if(balance.compareTo(expressFee) < 0){
            return R.fail("账户余额不足");