From 07057a9a0c8624ec1876670e69b0631b1213793f Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 14 八月 2024 09:04:32 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |  253 ++++++++++++++++++++++++++++++--------------------
 1 files changed, 152 insertions(+), 101 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 80a84e4..300a804 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
@@ -1,5 +1,7 @@
 package com.ruoyi.order.service.impl;
 
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -515,6 +517,9 @@
         return memberOrderVO;
     }
 
+    public static void main(String[] args) {
+        System.err.println(DateUtil.format(LocalDateTime.now(), DatePattern.NORM_DATETIME_PATTERN));
+    }
     @Override
     public MemberTiOrderVO updMemberOrder(MemberOrderDTO memberOrderDTO) {
         Order order = baseMapper.selectById(memberOrderDTO.getId());
@@ -733,7 +738,7 @@
             CustomConfig memberPointsMoney = sysUserClient.getconfig("MEMBER_POINTS_MONEY").getData();
             CustomConfig memberPointsPoints = sysUserClient.getconfig("MEMBER_POINTS_POINTS").getData();
 
-            if (pice.intValue()>0){
+            if (pice.doubleValue()>0){
                 BigDecimal divide = pice.divide(new BigDecimal(memberPointsMoney.getConfigValue()));
                 BigDecimal roundedDown = divide.setScale(0, RoundingMode.DOWN);
                 BigDecimal aDouble= roundedDown.multiply(new BigDecimal(memberPointsPoints.getConfigValue()));
@@ -858,7 +863,8 @@
                     Wrappers.lambdaQuery(OrderReturnRequest.class)
                             .eq(OrderReturnRequest::getOrderId,
                                     MemberOrderList.getId()).last("limit 1"));
-            if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) {
+            if (StringUtils.isNotNull(orderReturnRequest)
+                    && orderReturnRequest.getStatus() != ReturnRequestStatusEnum.QX) {
                 MemberOrderList.setStatus(orderReturnRequest.getStatus());
                 MemberOrderList.setRequestId(orderReturnRequest.getId());
                 MemberOrderList.setIsRequest(2);
@@ -897,23 +903,11 @@
             orderVO.setAuctionType(order.getAuctionOrderType());
             orderVO.setCouponId(order.getCouponId());
             orderVO.setBound(order.getBound());
+            orderVO.setIsRequest(order.getIsRequest());
             if (orderVO.getOrderFrom().getCode()==3){
                 GoodsGroupPurchase data = GoodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
                 orderVO.setGroupTime(data.getGroupTime());
                 orderVO.setSkuId(data.getGoodsSkuId());
-            }
-
-            OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne(
-                    Wrappers.lambdaQuery(OrderReturnRequest.class)
-                            .eq(OrderReturnRequest::getOrderId,
-                                    orderVO.getId()).eq(OrderReturnRequest::getDelFlag,
-                                    0).last("limit 1"));
-            if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) {
-                orderVO.setStatus(orderReturnRequest.getStatus());
-                orderVO.setRequestId(orderReturnRequest.getId());
-                orderVO.setIsRequest(2);
-            }else{
-                orderVO.setIsRequest(1);
             }
 
             LambdaQueryWrapper<OrderAuctionBond> wrapper3= Wrappers.lambdaQuery();
@@ -939,6 +933,13 @@
         orderVO.setOrderShuoMin(memberPointsPoints.getConfigValue());
         CustomConfig ReturnCycle = sysUserClient.getconfig("RETURN_CYCLE").getData();
         orderVO.setOrderZq(Integer.valueOf(ReturnCycle.getConfigValue()));
+        // 查询售后记录
+        Optional<OrderReturnRequest> orderReturnRequestOpt = orderReturnRequestService.lambdaQuery()
+                .eq(OrderReturnRequest::getOrderId, order.getId()).oneOpt();
+        if (orderReturnRequestOpt.isPresent()) {
+            OrderReturnRequest orderReturnRequest = orderReturnRequestOpt.get();
+            orderVO.setStatus(orderReturnRequest.getStatus());
+        }
         return orderVO;
     }
 
@@ -1055,6 +1056,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) {//支付宝
                 //获取支付信息
@@ -1091,6 +1098,9 @@
 
                 }
             }
+        }
+        if (order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) {
+            refundBond(order);
         }
     }
 
@@ -1165,48 +1175,64 @@
             order.setReceiveTime(LocalDateTime.now());
             baseMapper.updateById(order);
 
-            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() == 1) {//支付宝
-                    //获取支付信息
-                    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() == 2) {//微信
-                    //获取支付信息
-                    LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
-                    paylogEntityWrapper.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo());
-                    Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
+            if (order.getAuctionOrderType().getCode()==1){
 
-                    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;
+            }else{
 
-                    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);
         }
     }
 
@@ -1240,16 +1266,21 @@
 
                         if(order.getOrderNo().contains("SP")){
                             GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData();
-                            GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
-                            goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId());
-                            goodsStockUpdDTO1.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity());
-                            if (goodsSku.getSoldQuantity()-order.getGoodsQuantity()<0){
-                                goodsStockUpdDTO1.setSoldQuantity(0);
-                            }else {
-                                goodsStockUpdDTO1.setSoldQuantity(goodsSku.getSoldQuantity()-order.getGoodsQuantity());
-                            }
+                            if (Objects.nonNull(goodsSku)) {
+                                GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO();
+                                goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId());
+                                goodsStockUpdDTO1.setAuctionStock(
+                                        goodsSku.getStock() + order.getGoodsQuantity());
+                                if (goodsSku.getSoldQuantity() - order.getGoodsQuantity() < 0) {
+                                    goodsStockUpdDTO1.setSoldQuantity(0);
+                                } else {
+                                    goodsStockUpdDTO1.setSoldQuantity(
+                                            goodsSku.getSoldQuantity() - order.getGoodsQuantity());
+                                }
 
-                            goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER);
+                                goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,
+                                        SecurityConstants.INNER);
+                            }
                         }
 
                         if(order.getOrderNo().contains("MS")){
@@ -1319,7 +1350,6 @@
         wrapper1.eq(Order::getMemberId,homeGoodsSkuDTO1.getMemberId());
         wrapper1.eq(Order::getOrderFrom,3);
         wrapper1.eq(Order::getDelFlag,0);
-        wrapper1.eq(Order::getOrderStatus,2);
         wrapper1.orderByDesc(Order::getCreateTime);
         Page<Order> page = new Page<>(homeGoodsSkuDTO1.getPageCurr(), homeGoodsSkuDTO1.getPageSize());
         Page< Order> page1 = this.page(page, wrapper1);
@@ -1331,36 +1361,51 @@
             Order byId1 = this.getById(goodsGroupPurchaseeVO1.getId());
 
             GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(byId1.getGoodsSkuId(), SecurityConstants.INNER).getData();
-            BeanUtils.copyProperties(data,goodsGroupPurchaseeVO1);
-            GoodsSku byId = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
-            goodsGroupPurchaseeVO1.setGoodsSkuName(byId.getSkuName());
-            goodsGroupPurchaseeVO1.setCoverPic(byId.getCoverPic());
-            goodsGroupPurchaseeVO1.setPrice(byId.getPrice());
-            goodsGroupPurchaseeVO1.setYears(String.valueOf(byId.getYears().getYear()));
-            goodsGroupPurchaseeVO1.setIsGoodsGroupPurchase(2);
-            if (byId1.getGroupNo()!=null){
-                GoodsGroupPurchaseInfo one1 = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseInfo2(byId1.getGroupNo(), SecurityConstants.INNER).getData();
-                if (one1!=null) {
-                    goodsGroupPurchaseeVO1.setCurrentNumber(one1.getCurrentNumber());
-                    if (one1.getGroupStatus() == 0) {
-                        if (one1.getGroupSize() - one1.getCurrentNumber() < 5) {
-                            goodsGroupPurchaseeVO1.setGroupStatus(GroupStatusEnum.MS_FAILURE);
-                        } else {
-                            goodsGroupPurchaseeVO1.setGroupStatus(GroupStatusEnum.TO_FORM_A_GROUP);
+            if (Objects.nonNull(data)) {
+                BeanUtils.copyProperties(data, goodsGroupPurchaseeVO1);
+                GoodsSku byId = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(),
+                        SecurityConstants.INNER).getData();
+                goodsGroupPurchaseeVO1.setGoodsSkuName(byId.getSkuName());
+                goodsGroupPurchaseeVO1.setCoverPic(byId.getCoverPic());
+                goodsGroupPurchaseeVO1.setPrice(byId.getPrice());
+                goodsGroupPurchaseeVO1.setYears(String.valueOf(byId.getYears().getYear()));
+                goodsGroupPurchaseeVO1.setIsGoodsGroupPurchase(2);
+                if (byId1.getGroupNo() != null) {
+                    GoodsGroupPurchaseInfo one1 = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseInfo2(
+                            byId1.getGroupNo(), SecurityConstants.INNER).getData();
+                    if (one1 != null) {
+                        goodsGroupPurchaseeVO1.setCurrentNumber(one1.getCurrentNumber());
+                        if (one1.getGroupStatus() == 0) {
+                            if (one1.getGroupSize() - one1.getCurrentNumber() < 5) {
+                                goodsGroupPurchaseeVO1.setGroupStatus(GroupStatusEnum.MS_FAILURE);
+                            } else {
+                                goodsGroupPurchaseeVO1.setGroupStatus(
+                                        GroupStatusEnum.TO_FORM_A_GROUP);
+                            }
                         }
-                    }
-                    if (one1.getGroupStatus() == 1) {
-                        goodsGroupPurchaseeVO1.setGroupStatus(GroupStatusEnum.FORMED_INTO_A_GROUP);
-                    }
+                        if (one1.getGroupStatus() == 1) {
+                            goodsGroupPurchaseeVO1.setGroupStatus(
+                                    GroupStatusEnum.FORMED_INTO_A_GROUP);
+                        }
                         if (one1.getGroupStatus() == 2) {
                             goodsGroupPurchaseeVO1.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
                         }
-                }else{
-                    goodsGroupPurchaseeVO1.setGroupStatus(data.getGroupStatus());
+                    } else {
+                        if (data.getGroupStatus().getCode() == 1) {
+                            goodsGroupPurchaseeVO1.setGroupStatus(GroupStatusEnum.TO_FORM_A_GROUP);
+                        }
+                        if (data.getGroupStatus().getCode() == 2) {
+                            goodsGroupPurchaseeVO1.setGroupStatus(
+                                    GroupStatusEnum.FORMED_INTO_A_GROUP);
+                        }
+                        if (data.getGroupStatus().getCode() == 3) {
+                            goodsGroupPurchaseeVO1.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
+                        }
+                    }
+
                 }
+
             }
-
-
 
 
         }
@@ -1443,6 +1488,7 @@
         if (CollUtils.isNotEmpty(orderIdList)) {
             List<OrderReturnRequest> orderReturnRequestList = orderReturnRequestService.lambdaQuery()
                     .in(OrderReturnRequest::getOrderId, orderIdList)
+                    .eq(OrderReturnRequest::getStatus, ReturnRequestStatusEnum.COMPLETED)
                     .eq(OrderReturnRequest::getAuditStatus, AuditStatusEnum.PASSED).list();
             List<Long> orderReturnRequestPassedIds = orderReturnRequestList.stream()
                     .map(OrderReturnRequest::getOrderId)
@@ -1636,6 +1682,10 @@
             order.setOrderStatus(OrderStatusEnum.FINISHED);
             order.setReceiveTime(LocalDateTime.now());
             this.updateById(order);
+            // 拍卖订单退保证金
+            if (order.getOrderFrom() == OrderFromEnum.AUCTION_ORDERS) {
+                refundBond(id);
+            }
         }
     }
 
@@ -1710,12 +1760,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());
@@ -1778,30 +1825,34 @@
         if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
             orderAuctionBond = orderAuctionBondMapper.selectOne(
                     Wrappers.lambdaQuery(OrderAuctionBond.class)
-                            .eq(OrderAuctionBond::getOrderId, id)
                             .eq(OrderAuctionBond::getAuctionSalesroomId,
                                     order.getAuctionSalesroomId())
+                            .eq(OrderAuctionBond::getMemberId, order.getMemberId())
                             .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID));
         } else {
             orderAuctionBond = orderAuctionBondMapper.selectOne(
                     Wrappers.lambdaQuery(OrderAuctionBond.class)
-                            .eq(OrderAuctionBond::getOrderId, id)
                             .eq(OrderAuctionBond::getAuctionGoodsId,
                                     order.getGoodsSkuId())
+                            .eq(OrderAuctionBond::getMemberId, order.getMemberId())
                             .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);
-                this.updateById(order);
+                    .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