From f5d3adf884a49cb8f4563be0c7086a506011d64d Mon Sep 17 00:00:00 2001
From: zhanglin8526 <852614290@qq.com>
Date: 星期六, 26 八月 2023 14:35:47 +0800
Subject: [PATCH] 修改订单查询

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java |   67 ++++++++++++++++-----------------
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java          |    7 +++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |   16 ++++++-
 3 files changed, 53 insertions(+), 37 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
index 7acf60b..c477d06 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
@@ -64,17 +64,6 @@
     @ApiOperation(value = "微信支付/退款通知")
     public String payNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException {
 
-        Enumeration<String> headerNames = request.getHeaderNames();
-        while (headerNames.hasMoreElements()){
-            String name = headerNames.nextElement();
-            log.info("request headerNames:  {}", name);
-        }
-
-        Collection<String> headerNames1 = response.getHeaderNames();
-        for (String name : headerNames1) {
-            log.info("request headerNames:  {}", name);
-        }
-
         // 获取请求头
         SignatureHeader signatureHeader = getSignatureHeader(request);
 
@@ -84,27 +73,32 @@
         String eventType = responseData.getEventType();
 
         int resultType = 1;
-        String resultMessage = "";
-        if(WxPayNotifyEventTypeEnum.TRANSACTION_SUCCESS.getCode().equals(eventType)){
-            PartnerTransactionsNotifyResult notifyResult = wxService.getEcommerceService().parsePartnerNotifyResult(notifyData, signatureHeader);
-            PartnerTransactionsResult result = notifyResult.getResult();
-            // 支付通知回调
-            if("SUCCESS".equals(result.getTradeState())){
-                orderService.payBack(result);
-            }
-            resultMessage = GSON.toJson(notifyResult);
-        } else if(WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType)
-            || WxPayNotifyEventTypeEnum.REFUND_ABNORMAL.getCode().equals(eventType)
-            || WxPayNotifyEventTypeEnum.REFUND_CLOSED.getCode().equals(eventType)){
+        String resultMessage = notifyData;
 
-            RefundNotifyResult result = wxService.getEcommerceService().parseRefundNotifyResult(notifyData, signatureHeader);
-            orderService.orderRefundBack(result);
-            resultType = 2;
-            resultMessage = GSON.toJson(result);
+        try {
+            if (WxPayNotifyEventTypeEnum.TRANSACTION_SUCCESS.getCode().equals(eventType)) {
+                PartnerTransactionsNotifyResult notifyResult = wxService.getEcommerceService().parsePartnerNotifyResult(notifyData, signatureHeader);
+                PartnerTransactionsResult result = notifyResult.getResult();
+                // 支付通知回调
+                if ("SUCCESS".equals(result.getTradeState())) {
+                    orderService.payBack(result);
+                }
+                resultMessage = GSON.toJson(notifyResult);
+            } else if (WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType)
+                    || WxPayNotifyEventTypeEnum.REFUND_ABNORMAL.getCode().equals(eventType)
+                    || WxPayNotifyEventTypeEnum.REFUND_CLOSED.getCode().equals(eventType)) {
+
+                RefundNotifyResult result = wxService.getEcommerceService().parseRefundNotifyResult(notifyData, signatureHeader);
+                orderService.orderRefundBack(result);
+                resultType = 2;
+                resultMessage = GSON.toJson(result);
+            }
+
+        }catch (Exception e){
+            log.info("微信支付/退款通知异常:  {}", e.getMessage());
         }
         // 保存支付/退款回调信息
         backMessageService.saveBackMessage(resultType, resultMessage);
-
         return WxPayNotifyV3Response.success("成功");
     }
 
@@ -120,14 +114,19 @@
 
         ProfitSharingNotifyNewResult notifyResult = getProfitSharingNotifyData(notifyData, signatureHeader);
         ProfitSharingNotifyResult result = notifyResult.getResult();
+        String eventType = "-1";
+        String resultMessage = notifyData;
+        try {
+            eventType = notifyResult.getRawData().getEventType();
+            if (WxPayNotifyEventTypeEnum.PROFIT_SHARING_SUCCESS.getCode().equals(eventType)) {
+                // 分账通知回调
+                orderService.profitSharingBack(result);
+            }
 
-        String eventType = notifyResult.getRawData().getEventType();
-        if(WxPayNotifyEventTypeEnum.PROFIT_SHARING_SUCCESS.getCode().equals(eventType)){
-            // 分账通知回调
-            orderService.profitSharingBack(result);
+            resultMessage = GSON.toJson(notifyResult);
+        }catch (Exception e){
+            log.info("微信分账通知通知异常:  {}", e.getMessage());
         }
-
-        String resultMessage = GSON.toJson(notifyResult);
         // 保存记录分账回调信息
         backMessageService.saveBackMessage(3, resultMessage);
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index b6305ca..7b653eb 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -3852,9 +3852,11 @@
     @Override
     @Transactional
     public void payBack(PartnerTransactionsResult transaction) {
-        // 更新订单状态
-        String orderId = transaction.getOutTradeNo();
-        Order order = this.getById(orderId);
+        // Order order = this.getById(orderId);
+        // 更新订单状态 订单编号,就是 微信outTradeNo
+        String orderNo = transaction.getOutTradeNo();
+        Order order = this.getByOrderNo(orderNo);
+        String orderId = order.getOrderId();
         order.setOrderStatus(2);
         order.setPayTime(new Date());
         this.saveOrUpdate(order);
@@ -3986,6 +3988,14 @@
         payRecordService.save(payRecord);
     }
 
+    @Override
+    public Order getByOrderNo(String orderNo) {
+        LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Order::getOrderNo, orderNo)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
+    }
+
     /**
      * @param orderId
      * @return void
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
index 9be0d02..61df02b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -551,4 +551,11 @@
      * @return  AgencyTotalVo
      */
     AgencyTotalVo getAgencyTotalVo(List<Long> shopIdList);
+
+    /**
+     * 订单编号获取订单
+     * @param orderNo
+     * @return
+     */
+    Order getByOrderNo(String orderNo);
 }

--
Gitblit v1.7.1