From 7e92d9c7f76777c48f76376c99ffaae2e16fe7ed Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 01 七月 2025 14:37:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WxChatPayCallBack.java |   73 ++++++++++++++++++++++++------------
 1 files changed, 49 insertions(+), 24 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WxChatPayCallBack.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WxChatPayCallBack.java
index 799dfd0..80955f9 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WxChatPayCallBack.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WxChatPayCallBack.java
@@ -12,15 +12,9 @@
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.vo.UserDto;
 import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.order.entity.ChangeDispatch;
-import com.ruoyi.order.entity.Order;
-import com.ruoyi.order.entity.Withdraw;
-import com.ruoyi.order.entity.WithdrawDetail;
+import com.ruoyi.order.entity.*;
 import com.ruoyi.order.request.ChangeDispatchRequest;
-import com.ruoyi.order.service.ChangeDispatchService;
-import com.ruoyi.order.service.OrderService;
-import com.ruoyi.order.service.WithdrawDetailService;
-import com.ruoyi.order.service.WithdrawService;
+import com.ruoyi.order.service.*;
 import com.ruoyi.order.vx.HttpUtil;
 import com.ruoyi.system.api.RemoteUserService;
 import com.ruoyi.user.api.feignClient.UserClient;
@@ -63,6 +57,8 @@
 
     @Autowired
     private WithdrawDetailService withdrawDetailService;
+    @Autowired
+    private WithdrawRecordService withdrawRecordService;
     @Resource
     private OrderService orderService;
     @Autowired
@@ -97,26 +93,40 @@
             System.err.println("微信解密的字符串信息"+decryptedData);
             JSONObject jsonInfo = (JSONObject) JSONObject.parse(decryptedData);
             String transferBillNo = jsonInfo.getString("transfer_bill_no");
+            String outBillNo = jsonInfo.getString("out_bill_no");
             String state = jsonInfo.getString("state");
-            WithdrawDetail withdrawDetail = withdrawDetailService.lambdaQuery().eq(WithdrawDetail::getOutBatchNo, transferBillNo).one();
+            WithdrawDetail withdrawDetail = withdrawDetailService.lambdaQuery().eq(WithdrawDetail::getOutBatchNo, outBillNo).one();
             Withdraw withdraw = withdrawService.getById(withdrawDetail.getWithdrawId());
             Order order = orderService.getById(withdraw.getOrderId());
             UserDto data = userClient.getUser(order.getUserId()).getData();
+            if (order.getIsWithdrawal()==3){
+                return "SUCCESS";
+            }
             if ("SUCCESS".equals(state)){
-                order.setIsWithdrawal(1);
+                order.setIsWithdrawal(3);
                 withdrawDetail.setStatus("SUCCESS");
                 withdrawDetailService.updateById(withdrawDetail);
                 orderService.updateById(order);
-            }else if ("CANCELLED".equals(state)){
+                WithdrawRecord withdrawRecord = new WithdrawRecord();
+                withdrawRecord.setWithdrawId(withdraw.getId());
+                withdrawRecord.setOrderId(withdraw.getOrderId());
+                withdrawRecord.setUserId(withdraw.getUserId());
+                withdrawRecord.setWithdrawType(4);
+                withdrawRecord.setCreateTime(new Date());
+                withdrawRecord.setAuditStatus(1);
+                withdrawRecordService.save(withdrawRecord);
+
+
+            }else if ("CANCELLED".equals(state)||"CANCELING".equals(state)||"FAIL".equals(state)){
                 // 校验提现
-                List<Withdraw> list = withdrawService.lambdaQuery().eq(Withdraw::getUserId, order.getUserId())
-                        .eq(Withdraw::getOrderId, order.getId()).list();
-                List<Integer> stateList = list.stream().map(Withdraw::getState).collect(Collectors.toList());
-                if (stateList.contains(Constants.ONE)) {
-                    throw new GlobalException("当前订单提现申请已通过!");
-                }
+//                List<Withdraw> list = withdrawService.lambdaQuery().eq(Withdraw::getUserId, order.getUserId())
+//                        .eq(Withdraw::getOrderId, order.getId()).list();
+//                List<Integer> stateList = list.stream().map(Withdraw::getState).collect(Collectors.toList());
+//                if (stateList.contains(Constants.ONE)) {
+//                    throw new GlobalException("当前订单提现申请已通过!");
+//                }
                 // 超时未收款 撤销 重新发起转账 更新packageInfo
-                weChatPay(order.getOrderMoney(), data.getOpenId(),list.get(0).getId(),order.getServeName());
+                 weChatPay(order.getOrderMoney(), data.getOpenId(),withdraw.getId(),order.getServeName());
             }
             map.put("code", "SUCCESS");
             map.put("message", "成功");
@@ -148,14 +158,14 @@
             // 订单号
             String s = String.valueOf(UUID.randomUUID()).replaceAll("-", "");
             postMap.put("out_bill_no", s);
-            System.err.println("====="+postMap.get(WechatConstants.OUT_BATCH_NO));
+            System.err.println("====="+postMap.get("out_bill_no"));
             postMap.put(WechatConstants.OPEN_ID, openId);
             // 转账金额
             postMap.put("transfer_amount", transferAmount);
             // 转账备注
-            postMap.put("transfer_remark", transferAmount);
+            postMap.put("transfer_remark", "二手回收提现确认收款");
             // 回调地址
-            postMap.put("notify_url", transferAmount);
+            postMap.put("notify_url", "https://hyhsbqgc.com/api/ruoyi-order/wx/wxChatPay");
             // 转账场景报备信息
             Map<String, Object> info = new HashMap<>();
             info.put("info_type","回收商品名称");
@@ -166,7 +176,10 @@
                     com.alibaba.fastjson2.JSONObject.toJSONString(postMap),
                     "7EEA04429B006E12AAA421C002EC48BBEED5BE94",
                     "1665330417",
-                    "E:\\ershoucert\\apiclient_key.pem", WechatConstants.WE_CHAT_URL_SUF);
+//                    "/usr/local/vx/apiclient_key.pem",
+                    "D:\\apiclient_key.pem",
+
+                    WechatConstants.WE_CHAT_URL_SUF);
             com.alibaba.fastjson2.JSONObject jsonObject = com.alibaba.fastjson2.JSONObject.parseObject(result);
 //            WithdrawDetail withdrawDetail = new WithdrawDetail();
 //            withdrawDetail.setWithdrawId(withdrawId);
@@ -179,11 +192,11 @@
                 WithdrawDetail one = withdrawDetailService.lambdaQuery().eq(WithdrawDetail::getWithdrawId, withdrawId).last("limit 1").one();
                 if (one!=null){
                     one.setOutBatchNo(s);
-                    one.setStatus("FAIL");
+                    one.setStatus("PENDING");
                     withdrawDetailService.updateById(one);
                     Order order = orderService.getById(withdraw.getOrderId());
                     order.setPackageInfo(string);
-                    order.setIsWithdrawal(0);
+                    order.setIsWithdrawal(2);
                     orderService.updateById(order);
                 }
             } else {
@@ -196,4 +209,16 @@
         return allTransfersSuccessful;
     }
 
+    public static void main(String[] args) {
+        String s = "e965efcc225b4250864658d2fa969a18";
+        String s1 = HttpUtil.queryTransBatRequest(WechatConstants.WE_CHAT_PAY_QUERY_URL_PRE + s,
+                "7EEA04429B006E12AAA421C002EC48BBEED5BE94",
+                "1665330417",
+                "D:\\apiclient_key.pem", WechatConstants.WE_CHAT_QUERY_URL_SUF + s);
+        System.err.println(s1);
+        JSONObject jsonObject = JSONObject.parseObject(s1);
+        String string = jsonObject.getString("state");
+        System.err.println(string);
+    }
+
 }

--
Gitblit v1.7.1