From fc8b51f40e71aa09bb49f407c1e9f68ac94ceb58 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 29 七月 2024 18:51:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java |   51 +++++++++++++++++++++++++++++++++++----------------
 1 files changed, 35 insertions(+), 16 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 9ec9827..34bc269 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
@@ -8,6 +8,7 @@
 import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
 import com.ruoyi.common.core.enums.BondStatusEnum;
 import com.ruoyi.common.core.enums.PaymentMethodEnum;
+import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.order.domain.Paylog;
 import com.ruoyi.order.mapper.OrderAuctionBondMapper;
@@ -18,6 +19,7 @@
 import com.ruoyi.system.api.domain.AuctionGoods;
 import com.ruoyi.system.api.domain.AuctionSalesroom;
 import com.ruoyi.system.api.domain.OrderAuctionBond;
+import com.ruoyi.system.api.domain.dto.BondReturnDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
 import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO;
 import com.ruoyi.system.api.domain.dto.RefundDTO;
@@ -27,7 +29,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
@@ -63,10 +66,13 @@
     public R<T> getOrderAuctionBond(OrderAuctionBondDTO orderAuctionBondDTO) {
 
         LambdaQueryWrapper<OrderAuctionBond> wrapper = Wrappers.lambdaQuery();
-        wrapper.notIn(OrderAuctionBond::getMemberId, orderAuctionBondDTO.getUserList());
+        if (orderAuctionBondDTO.getUserList().size()>0){
+            wrapper.notIn(OrderAuctionBond::getMemberId, orderAuctionBondDTO.getUserList());
+        }
         wrapper.eq(OrderAuctionBond::getDelFlag, 0);
         wrapper.eq(OrderAuctionBond::getAuctionSalesroomId, orderAuctionBondDTO.getAuctionSalesroomId());
         List<OrderAuctionBond> orderAuctionBondList = this.list(wrapper);
+
         for (OrderAuctionBond orderAuctionBond : orderAuctionBondList) {
             LambdaQueryWrapper<Paylog> wrapper1 = Wrappers.lambdaQuery();
             wrapper1.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo());
@@ -78,17 +84,24 @@
                     return R.fail("支付宝退款失败!");
                 }
             } else {//微信
-                String refundMoney = SinataUtil.doubleRetainTwo(orderAuctionBond.getBond().doubleValue() * 100d);
+                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));
-                boolean bo = paylogServiceImpl.refundForWxpay(1, paylog.getTradeNo(), paylog.getOutTradeNo(), orderAuctionBond.getOrderNo(), totalFee, refundFee, "2");
+                refundFee = Integer.parseInt(money.substring(0, money.length() - 3));
+
+                String regEx = "[^0-9]";
+                Pattern p = Pattern.compile(regEx);
+                Matcher m = p.matcher(paylog.getOutTradeNo());
+                String ma = m.replaceAll("").trim();
+                boolean bo = paylogServiceImpl.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2");
                 if (!bo) {
                     return R.fail("微信退款失败!");
                 }
             }
-
+            orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
         }
+        this.updateBatchById(orderAuctionBondList);
         return R.ok();
     }
 
@@ -130,14 +143,19 @@
         PayInfoVO payInfoVO = new PayInfoVO();
         if (memberAuctionSalesroomBondDTO.getBondType() == 1) {
             AuctionGoods data = auctionClient.getauctionGoodsOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
-            if (data.getBond().intValue() == 0) {
+
+            if (data.getListingStatus().getCode()==1){
+                throw new ServiceException("商品拍卖下线");
+            }
+
+            if (data.getBond()==null||data.getBond().intValue() == 0) {
                 OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
                 orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
                 orderAuctionBond.setAuctionGoodsId(memberAuctionSalesroomBondDTO.getAuctionGoodsId());
                 orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
                 orderAuctionBond.setBond(data.getBond());
                 orderAuctionBond.setBoundStatus(BondStatusEnum.PAID);
-                orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
+                orderAuctionBond.setBondType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                 this.save(orderAuctionBond);
                 payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 payInfoVO.setType(0);
@@ -150,30 +168,29 @@
                 orderAuctionBond.setAuctionGoodsId(memberAuctionSalesroomBondDTO.getAuctionGoodsId());
                 orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
                 orderAuctionBond.setBond(data.getBond());
+                orderAuctionBond.setOrderTimeSx(data.getEndTime());
                 orderAuctionBond.setBoundStatus(BondStatusEnum.TO_PLAY);
-                orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
+                orderAuctionBond.setBondType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                 if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
                     orderAuctionBond.setPaymentMethod(PaymentMethodEnum.WECHAT);
                 } else {
                     orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
                 }
-
                 this.save(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("保证金");
             }
         } else {
             AuctionSalesroom data = auctionClient.getauctionSalesroomOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
-
-            if (data.getBond().intValue() == 0) {
+            if (data.getBond()==null||data.getBond().intValue() == 0) {
                 OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
                 orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
                 orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId());
@@ -207,6 +224,7 @@
                 } else {
                     payInfoVO.setType(1);
                 }
+                payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 payInfoVO.setSubject("保证金");
                 payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
                 payInfoVO.setBody("保证金");
@@ -217,12 +235,13 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
-    public void returnBondByAuctionGoodsId(Long id) {
+    public void returnBondByAuctionGoodsId(BondReturnDTO bondReturnDTO) {
+        Long id = bondReturnDTO.getId();
         List<OrderAuctionBond> list = this.lambdaQuery().eq(OrderAuctionBond::getAuctionGoodsId, id)
                 .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID).list();
-        Set<String> orderNoSet = list.stream().map(OrderAuctionBond::getOrderNo)
-                .collect(Collectors.toSet());
-        List<RefundDTO> refundDTOList = list.stream().map(item -> {
+        List<Long> memberIdList = bondReturnDTO.getMemberIdList();
+        List<RefundDTO> refundDTOList = list.stream()
+                .filter(r -> !memberIdList.contains(r.getMemberId())).map(item -> {
             RefundDTO refundDTO = new RefundDTO();
             refundDTO.setAmount(item.getBond());
             refundDTO.setOrderNo(item.getOrderNo());

--
Gitblit v1.7.1