From 392b42c4891cf2e6beda57ab32c51598f290f4b7 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 14 三月 2025 20:56:27 +0800
Subject: [PATCH] bug修改

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java |   83 +++++++++++++++++++++++++++++++----------
 1 files changed, 63 insertions(+), 20 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
index c292639..e678045 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
@@ -25,10 +25,12 @@
 import com.ruoyi.system.api.domain.dto.RefundDTO;
 import com.ruoyi.system.api.domain.vo.PayInfoVO;
 import com.ruoyi.system.api.feignClient.AuctionClient;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
@@ -77,25 +79,29 @@
             wrapper1.last("limit 1");
             Paylog paylog = iPaylogService.getOne(wrapper1);
             log.info("paylog:{}", paylog);
-            if (paylog.getPayType() == 1) {//支付宝
-                boolean bo = paylogServiceImpl.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), orderAuctionBond.getBond().doubleValue());
-                if (!bo) {
-                    return R.fail("支付宝退款失败!");
+            if (Objects.nonNull(paylog)) {
+                if (paylog.getPayType() == 1) {// 支付宝
+                    boolean bo = paylogServiceImpl.refundForAlipay(paylog.getOutTradeNo(),
+                            paylog.getTradeNo(), orderAuctionBond.getBond().doubleValue());
+                    if (!bo) {
+                        return R.fail("支付宝退款失败!");
+                    }
+                } else {// 微信
+                    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 = Integer.parseInt(money.substring(0, money.length() - 3));
+                    String refundNo = OrderUtil.getOrderNoForPrefix("R");
+                    boolean bo = paylogServiceImpl.refundForWxpay(4, paylog.getTradeNo(),
+                            paylog.getOutTradeNo(), refundNo, totalFee, refundFee, "2");
+                    if (!bo) {
+                        return R.fail("微信退款失败!");
+                    }
                 }
-            } else {//微信
-                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 = Integer.parseInt(money.substring(0, money.length() - 3));
-                String refundNo = OrderUtil.getOrderNoForPrefix("R");
-                boolean bo = paylogServiceImpl.refundForWxpay(4, paylog.getTradeNo(),
-                        paylog.getOutTradeNo(), refundNo, totalFee, refundFee, "2");
-                if (!bo) {
-                    return R.fail("微信退款失败!");
-                }
+                orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
             }
-            orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
         }
         this.updateBatchById(orderAuctionBondList);
         return R.ok();
@@ -137,14 +143,43 @@
     @Override
     public PayInfoVO SaveOrderAuctionBond(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO) {
         PayInfoVO payInfoVO = new PayInfoVO();
+        // 查询参与记录
+        Optional<OrderAuctionBond> orderAuctionBondOpt = this.lambdaQuery()
+                .eq(OrderAuctionBond::getMemberId, memberAuctionSalesroomBondDTO.getMemberId())
+                .eq(memberAuctionSalesroomBondDTO.getBondType()
+                                .equals(AuctionOrderTypeEnum.AUCTION_ITEMS.getCode()),
+                        OrderAuctionBond::getAuctionSalesroomId,
+                        memberAuctionSalesroomBondDTO.getAuctionSalesroomId())
+                .eq(memberAuctionSalesroomBondDTO.getBondType()
+                                .equals(AuctionOrderTypeEnum.REGULAR_ITEMS.getCode()),
+                        OrderAuctionBond::getAuctionGoodsId,
+                        memberAuctionSalesroomBondDTO.getAuctionGoodsId()).oneOpt();
+        if (orderAuctionBondOpt.isPresent()) {
+            OrderAuctionBond orderAuctionBond = orderAuctionBondOpt.get();
+            orderAuctionBond.setPaymentMethod(
+                    PaymentMethodEnum.fromCode(memberAuctionSalesroomBondDTO.getPaymentMethod()));
+            orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
+            this.updateById(orderAuctionBond);
+            payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
+            if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
+                payInfoVO.setType(2);
+            } else {
+                payInfoVO.setType(1);
+            }
+            payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
+            payInfoVO.setSubject("保证金");
+            payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
+            payInfoVO.setBody("保证金");
+            return payInfoVO;
+        }
         if (memberAuctionSalesroomBondDTO.getBondType() == 1) {
             AuctionGoods data = auctionClient.getauctionGoodsOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
-
+            log.info("商品竞价立即报名的商品:{}", data);
             if (data.getListingStatus().getCode()==1){
                 throw new ServiceException("商品拍卖下线");
             }
 
-            if (data.getBond()==null||data.getBond().intValue() == 0) {
+            if (data.getBond() == null || data.getBond().compareTo(BigDecimal.ZERO) == 0) {
                 OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
                 orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
                 orderAuctionBond.setAuctionGoodsId(memberAuctionSalesroomBondDTO.getAuctionGoodsId());
@@ -152,6 +187,7 @@
                 orderAuctionBond.setBond(data.getBond());
                 orderAuctionBond.setBoundStatus(BondStatusEnum.PAID);
                 orderAuctionBond.setBondType(AuctionOrderTypeEnum.REGULAR_ITEMS);
+                orderAuctionBond.setOrderTimeSx(data.getEndTime());
                 this.save(orderAuctionBond);
                 payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 payInfoVO.setType(0);
@@ -172,6 +208,7 @@
                 } else {
                     orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
                 }
+                log.info("保存保证金订单:{}", orderAuctionBond);
                 this.save(orderAuctionBond);
                 payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
@@ -186,7 +223,9 @@
             }
         } else {
             AuctionSalesroom data = auctionClient.getauctionSalesroomOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
-            if (data.getBond()==null||data.getBond().intValue() == 0) {
+            log.info("拍卖会报名的拍卖会:{}", data);
+            if (data.getBond() == null || data.getBond().compareTo(BigDecimal.ZERO) == 0) {
+
                 OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
                 orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
                 orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId());
@@ -194,6 +233,8 @@
                 orderAuctionBond.setBond(data.getBond());
                 orderAuctionBond.setBoundStatus(BondStatusEnum.PAID);
                 orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
+                orderAuctionBond.setOrderTimeSx(data.getEndTime());
+                log.info("添加保证金为0的记录:{}", orderAuctionBond);
                 this.save(orderAuctionBond);
                 payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 payInfoVO.setType(0);
@@ -206,6 +247,7 @@
                 orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId());
                 orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
                 orderAuctionBond.setBond(data.getBond());
+                orderAuctionBond.setOrderTimeSx(data.getEndTime());
                 orderAuctionBond.setBoundStatus(BondStatusEnum.TO_PLAY);
                 orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
                 if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
@@ -213,6 +255,7 @@
                 } else {
                     orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
                 }
+                log.info("添加保证金不为0的记录:{}", orderAuctionBond);
                 this.save(orderAuctionBond);
                 payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {

--
Gitblit v1.7.1