From 210828d1a6947596fe00ab30fcd8725c6714dde4 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 02 一月 2025 21:04:16 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 102 +++++++++++++++++--------------------------------- 1 files changed, 35 insertions(+), 67 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java index db2b7cd..8fbdf6e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java @@ -101,12 +101,6 @@ @Resource private UserChangeLogClient userChangeLogClient; - - - - - - @Resource private PointSettingClient pointSettingClient; @@ -372,7 +366,7 @@ confirmOrderVo.setDiscountAmount(orderMoney.subtract(paymentMoney).setScale(2, RoundingMode.HALF_EVEN)); } BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData(); - confirmOrderVo.setUseSimultaneously(baseSetting.getContent().equals("1")); + confirmOrderVo.setUseSimultaneously(JSON.parseObject(baseSetting.getContent()).getInteger("status") == 1); int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum(); confirmOrderVo.setEarnPoint(earnPoint); //支付金额,订单金额-订单优惠 @@ -394,7 +388,7 @@ List<PaymentUserCouponVo> data = userCouponClient.getPaymentUserCoupon(paymentUserCoupon).getData(); if(null != data){ for (PaymentUserCouponVo couponInfo : data) { - List<Integer> forGoodIds = couponInfo.getForGoodIds(); + List<String> forGoodIds = couponInfo.getForGoodIds(); //全部商品适用 if(null == forGoodIds){ //满减券 @@ -602,7 +596,7 @@ String goodsName = ""; for (Integer goodsId : goodsIds) { Goods goods = goodsClient.getGoodsById(goodsId).getData(); - if(1 == goods.getAppointStore() && !collect.contains(goodsId)){ + if(goods.getType() == 1 && 1 == goods.getAppointStore() && !collect.contains(goodsId)){ goodsName = goods.getName(); break; } @@ -623,7 +617,6 @@ 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()); } @@ -647,9 +640,10 @@ if(null != shoppingCartPayment.getUserCouponId() && 3 != shoppingCartPayment.getPaymentType()){ couponInfoVo = userCouponClient.getCouponInfo(shoppingCartPayment.getUserCouponId()).getData(); String forGoodIds = couponInfoVo.getForGoodIds(); - List<Integer> parseArray = JSON.parseArray(forGoodIds, Integer.class); + String[] split = forGoodIds.split(","); + List<String> parseArray = Arrays.asList(split); //全部商品 - if(parseArray.contains(-1)){ + if("-1".equals(forGoodIds)){ //满减 if(1 == couponInfoVo.getCouponType() && couponInfoVo.getConditionAmount().compareTo(paymentMoney) <= 0){ paymentMoney = paymentMoney.subtract(couponInfoVo.getDiscountAmount()); @@ -676,7 +670,7 @@ paymentMoney = BigDecimal.ZERO; BigDecimal goodsMoney = BigDecimal.ZERO; for (MyShoppingCartVo myShoppingCartVo : goodsList) { - Integer goodsId = myShoppingCartVo.getGoodsId(); + String goodsId = myShoppingCartVo.getGoodsId().toString(); BigDecimal cash = myShoppingCartVo.getCash(); if(parseArray.contains(goodsId)){ goodsMoney = goodsMoney.add(cash); @@ -814,6 +808,12 @@ return R.fail("账户余额不足"); } } + if(3 == shoppingCartPayment.getPaymentType()){ + Integer availablePoint = appUser.getAvailablePoint(); + if(availablePoint < orderPoint){ + return R.fail("账户积分不足"); + } + } //判断运费支付是否足够 if(null != shoppingCartPayment.getFreightPaymentType() && 2 == shoppingCartPayment.getFreightPaymentType() && expressFee.compareTo(BigDecimal.ZERO) > 0){ BigDecimal balance = appUser.getBalance(); @@ -910,17 +910,21 @@ //构建积分流水记录 if(earnPoint > 0){ PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData(); - int earnPoint1 = earnPoint; + int earnPoint1 = 0; if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){ - earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint()); + earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue(); } appUser.setShopPoint(appUser.getShopPoint() + earnPoint); - appUser.setLavePoint(appUser.getLavePoint() + earnPoint1); + appUser.setLavePoint(appUser.getLavePoint() + earnPoint); appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint); + appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1); + if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){ + appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1); + } UserPoint userPoint = new UserPoint(); userPoint.setType(1); - userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint1); + userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint); userPoint.setVariablePoint(earnPoint); userPoint.setBalance(appUser.getLavePoint()); userPoint.setCreateTime(LocalDateTime.now()); @@ -931,6 +935,8 @@ appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN)); appUser.setLastShopTime(LocalDateTime.now()); appUserClient.editAppUserById(appUser); + //变更等级 + appUserClient.vipUpgrade(appUser.getId()); //构建余额明细变动记录 BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); balanceChangeRecord.setAppUserId(appUser.getId()); @@ -950,26 +956,31 @@ orderService.updateById(order); //删除购物车数据 this.removeBatchByIds(ids); - //检查消费积分满足后升级会员 - vipUpgrade(appUser); } //积分支付 if(3 == shoppingCartPayment.getPaymentType()){ Integer lavePoint = appUser.getLavePoint(); PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData(); - int earnPoint1 = earnPoint; + int earnPoint1 = 0; //计算可用积分比例 if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){ - earnPoint1 = earnPoint1 * (100 - pointSetting.getBuyPoint()); + earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue(); } + //扣减订单支付积分 appUser.setLavePoint(appUser.getLavePoint() - orderPoint); + appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint); + appUser.setShopPoint(appUser.getShopPoint() + earnPoint); - appUser.setLavePoint(appUser.getLavePoint() + earnPoint1); + appUser.setLavePoint(appUser.getLavePoint() + earnPoint); + appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1); + if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){ + appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1); + } appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint); appUser.setLastShopTime(LocalDateTime.now()); appUserClient.editAppUserById(appUser); - //检查消费积分满足后升级会员 - vipUpgrade(appUser); + //变更等级 + appUserClient.vipUpgrade(appUser.getId()); //构建积分流水记录 UserPoint userPoint = new UserPoint(); @@ -1072,47 +1083,4 @@ } - /** - * 会员等级变化 - * @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(null != vipLevelUpShopRole && 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(null != vipLevelUpShopRole && 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); - } - } } -- Gitblit v1.7.1