1.
phpcjl
2024-12-06 d554bbbccd22b081452373a821fda9222e2dc0a2
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);
@@ -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("账户余额不足");
@@ -850,14 +853,12 @@
            orderGood.setSeckillJson(JSON.toJSONString(goodsSeckill));
         }
         for (int i = 0; i < objects.size(); i++) {
            Long id = objects.getJSONObject(i).getLong("id");
            if(myShoppingCartVo.getId().equals(id)){
               Integer num1 = objects.getJSONObject(i).getInteger("num");
               orderGood.setNum(num1);
               Goods goods1 = goodsClient.getGoodsById(myShoppingCartVo.getGoodsId()).getData();
               orderGood.setGoodJson(JSON.toJSONString(goods1));
               break;
            }
            Integer id = objects.getJSONObject(i).getInteger("id");
            Integer num1 = objects.getJSONObject(i).getInteger("num");
            orderGood.setNum(num1);
            Goods goods1 = goodsClient.getGoodsById(id).getData();
            orderGood.setGoodJson(JSON.toJSONString(goods1));
            break;
         }
         orderGood.setDelFlag(0);
         orderGood.setCreateTime(LocalDateTime.now());