From 356b6e4b0a11a6e44717dc9b92beaacc9c0c4b7a Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 06 八月 2024 10:13:18 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 130 +++++++++++++++++++++++++------------------ 1 files changed, 75 insertions(+), 55 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index 6cf205f..f760ddc 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -734,8 +734,7 @@ CustomConfig memberPointsPoints = sysUserClient.getconfig("MEMBER_POINTS_POINTS").getData(); if (pice.doubleValue()>0){ - BigDecimal pic=pice.multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())); - BigDecimal divide = pic.divide(new BigDecimal(memberPointsMoney.getConfigValue())); + BigDecimal divide = pice.divide(new BigDecimal(memberPointsMoney.getConfigValue())); BigDecimal roundedDown = divide.setScale(0, RoundingMode.DOWN); BigDecimal aDouble= roundedDown.multiply(new BigDecimal(memberPointsPoints.getConfigValue())); order.setPoints(aDouble.intValue()); @@ -1051,6 +1050,12 @@ MembeOneDTO.setTotalPoints(order.getPoints()); memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER); + MemberPointsDTO memberPointsDTO = new MemberPointsDTO(); + memberPointsDTO.setMemberId(order.getMemberId()); + memberPointsDTO.setPointsType(2); + memberPointsDTO.setPointsStatus(PointStatusEnum.REDUCE); + memberPointsDTO.setPoints(order.getPoints()); + memberClient.addMemberPoints(memberPointsDTO); if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//支付宝 //获取支付信息 @@ -1087,6 +1092,9 @@ } } + } + if (order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) { + refundBond(order); } } @@ -1166,48 +1174,59 @@ }else{ } - LambdaQueryWrapper<OrderAuctionBond> wrapper= Wrappers.lambdaQuery(); - wrapper.eq(OrderAuctionBond::getOrderId,order.getId()); - OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper); - if(orderAuctionBond!=null){ - if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//支付宝 - //获取支付信息 - LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); - paylogEntityWrapper.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()); - Paylog paylog = iPaylogService.getOne(paylogEntityWrapper); - boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney()); - if (!bo) { - System.out.println("支付宝退款失败"); - } - } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//微信 - //获取支付信息 - LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); - paylogEntityWrapper.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()); - Paylog paylog = iPaylogService.getOne(paylogEntityWrapper); - - String refundMoney = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); - Integer refundFee = Integer.parseInt(refundMoney.substring(0, refundMoney.length() - 3)); - String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); - Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3)); - refundFee = 1; - - String regEx = "[^0-9]"; - Pattern p = Pattern.compile(regEx); - Matcher m = p.matcher(order.getOrderNo()); - String ma = m.replaceAll("").trim(); - boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2"); - if (!bo) { - System.out.println("微信退款失败"); - } - } - } - - - - }else{ + refundBond(order); + } else { order.setOrderStatus(OrderStatusEnum.FINISHED); order.setReceiveTime(LocalDateTime.now()); baseMapper.updateById(order); + } + } + + private void refundBond(Order order) { + LambdaQueryWrapper<OrderAuctionBond> wrapper = Wrappers.lambdaQuery(); + wrapper.eq(order.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS), + OrderAuctionBond::getAuctionSalesroomId, order.getAuctionSalesroomId()); + wrapper.eq(order.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS), + OrderAuctionBond::getAuctionGoodsId, order.getGoodsSkuId()); + wrapper.eq(OrderAuctionBond::getMemberId, order.getMemberId()); + wrapper.eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID); + OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper); + if (orderAuctionBond != null && orderAuctionBond.getBond() != null) { + if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {// 支付宝 + // 获取支付信息 + LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); + paylogEntityWrapper.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()); + Paylog paylog = iPaylogService.getOne(paylogEntityWrapper); + boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), + paylog.getTradeNo(), paylog.getPayMoney()); + if (!bo) { + System.out.println("支付宝退款失败"); + } else { + orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); + } + } else if (order.getPaymentMethod() != null + && order.getPaymentMethod().getCode() == 1) {// 微信 + // 获取支付信息 + LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); + paylogEntityWrapper.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()); + Paylog paylog = iPaylogService.getOne(paylogEntityWrapper); + + String refundMoney = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); + Integer refundFee = Integer.parseInt( + refundMoney.substring(0, refundMoney.length() - 3)); + String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); + Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3)); + refundFee = 1; + String refundNo = OrderUtil.getOrderNoForPrefix("R"); + boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), + paylog.getOutTradeNo(), refundNo, totalFee, refundFee, "2"); + if (!bo) { + System.out.println("微信退款失败"); + } else { + orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); + } + } + orderAuctionBondMapper.updateById(orderAuctionBond); } } @@ -1730,12 +1749,9 @@ refundMoney.substring(0, refundMoney.length() - 3)); String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100D); Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3)); - String regEx = "[^0-9]"; - Pattern p = Pattern.compile(regEx); - Matcher m = p.matcher(orderNo); - String ma = m.replaceAll("").trim(); + String refundNo = OrderUtil.getOrderNoForPrefix("R"); result = paylogService.refundForWxpay(2, paylog.getTradeNo(), - paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "4"); + paylog.getOutTradeNo(), refundNo, totalFee, refundFee, "4"); } else if (paymentMethod == PaymentMethodEnum.ALIPAY) { result = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney()); @@ -1811,17 +1827,21 @@ .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID)); } if (StringUtils.isNotNull(orderAuctionBond)) { - Paylog paylog = iPaylogService.lambdaQuery() + Optional<Paylog> paylogOpt = iPaylogService.lambdaQuery() .in(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()) - .one(); - boolean result = handleRefund(orderAuctionBond.getPaymentMethod(), paylog, - orderAuctionBond.getOrderNo()); - if (result) { - paylog.setState(3);// 已退款 - orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); - iPaylogService.updateById(paylog); - orderAuctionBondMapper.updateById(orderAuctionBond); + .oneOpt(); + if (paylogOpt.isPresent()) { + Paylog paylog = paylogOpt.get(); + boolean result = handleRefund(orderAuctionBond.getPaymentMethod(), paylog, + orderAuctionBond.getOrderNo()); + if (result) { + paylog.setState(3);// 已退款 + orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); + iPaylogService.updateById(paylog); + orderAuctionBondMapper.updateById(orderAuctionBond); + } } + } } -- Gitblit v1.7.1