From dc0579496b9c858806a606523397cd43ee6217ba Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期二, 06 五月 2025 11:42:42 +0800
Subject: [PATCH] feat: 新增回调记录表和优化订单记录表

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java |  107 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 81 insertions(+), 26 deletions(-)

diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index 6fdb634..d4cfcca 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1,19 +1,16 @@
 package com.ruoyi.quartz.task;
 
+import com.alibaba.fastjson2.JSON;
 import com.ruoyi.common.utils.HttpUtil;
-import com.ruoyi.system.domain.AOrderStatus;
-import com.ruoyi.system.domain.DispatchOrd;
-import com.ruoyi.system.domain.OrderStatusCallBackVo;
-import com.ruoyi.system.domain.TbOrders;
-import com.ruoyi.system.service.IAOrderStatusService;
-import com.ruoyi.system.service.IDispatchOrdService;
-import com.ruoyi.system.service.ITbOrdersService;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.service.*;
 import com.ruoyi.system.service.impl.SysUserServiceImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.utils.StringUtils;
+import java.util.Date;
 
 import java.util.HashMap;
 import java.util.List;
@@ -37,6 +34,12 @@
     @Autowired
     private IDispatchOrdService dispatchOrdService;
 
+    @Autowired
+    private ISysClientAppService sysClientAppService;
+
+    @Autowired
+    private ITbCallbackLogService tbCallbackLogService;
+
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
     {
         System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
@@ -52,6 +55,9 @@
         System.out.println("鎵ц鏃犲弬鏂规硶");
     }
 
+    /**
+     * 鍥炶皟鎺ㄩ�佺姸鎬�
+     */
     public void ryOrderStatus() {
         try {
             List<AOrderStatus> orderStatusList = orderStatusService.selectAOrderStatusList();
@@ -62,8 +68,7 @@
             for (AOrderStatus orderStatus : orderStatusList) {
                 int count = tbOrdersService.checkServiceOrdIDExists(orderStatus.getServiceOrdID());
                 if (count > 0) {
-                    // orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
-                    System.out.println("鏈嶅姟璁㈠崟ID瀛樺湪锛�" + orderStatus.getServiceOrdID());
+                    log.info("鏈嶅姟璁㈠崟ID瀛樺湪锛�" + orderStatus.getServiceOrdID());
 
                     TbOrders tbOrders = tbOrdersService.selectTbOrdersByServiceOrdID(orderStatus.getServiceOrdID());
 
@@ -108,10 +113,13 @@
                         log.error("鑾峰彇璋冨害鍗曞紓甯革細"+e.getMessage());
                     }
 
+                    SysClientApp clientApp = sysClientAppService.selectSysClientAppByAppKey(tbOrders.getAppId());
+                    if(clientApp==null){
+                        log.error("鍥炶皟鍦板潃涓嶅瓨鍦�");
+                        return;
+                    }
 
-
-                    // 浣跨敤鑾峰彇鍒扮殑鎵�鏈夊徃鏈哄鍚�
-                    String callbackUrl = "http://localhost:8080/system/apitest/orderCallback";
+                    String callbackUrl = clientApp.getCallbackUrl();
                     try {
                         // 鏋勫缓璇锋眰鍙傛暟
                         Map<String, String> map = new HashMap<>();
@@ -122,26 +130,34 @@
                         map.put("plateNo",carLicense);
                         map.put("driverMobile",driverMobiles.toString());
                         map.put("driverName", driverNames.toString());
+                        map.put("appId", tbOrders.getAppId());
 
-                        // 鎵撳嵃璇锋眰鍙傛暟
-                        log.info("鍙戦�佸洖璋冭姹傦紝URL: " + callbackUrl);
-                        log.info("璇锋眰鍙傛暟: " + map);
+                        // 绗竴娆″皾璇�
+                        String response = sendCallback(callbackUrl, map);
+                        
+                        if (response == null) {
+                            // 濡傛灉绗竴娆″け璐ワ紝绛夊緟3绉掑悗閲嶈瘯
+                            Thread.sleep(3000);
+                            log.info("绗竴娆″洖璋冨け璐ワ紝鍑嗗閲嶈瘯");
+                            response = sendCallback(callbackUrl, map);
+                        }
+                        
+                        if (response != null) {
+                            // 鏇存柊鐘舵��
+                            log.info("鍥炶皟鎺ㄩ�佹垚鍔燂紝鍙傛暟濡備笅锛�");
+                            map.forEach((key, value) -> log.info("    {} : {}", key, value));
+                            orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
 
-                        // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
-                        String response = HttpUtil.post(callbackUrl, map);
 
-                        // 鎵撳嵃鍝嶅簲缁撴灉
-                        log.info("鍥炶皟鍝嶅簲缁撴灉: " + response);
-
-                        // 鏇存柊鐘舵��
-                        // orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
+                            
+                        } else {
+                            log.error("鍥炶皟璇锋眰閲嶈瘯鍚庝粛鐒跺け璐�");
+                            orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
+                        }
                     } catch (Exception e) {
                         log.error("鍥炶皟璇锋眰澶辫触: " + e.getMessage());
-                        // 鍙互鑰冭檻閲嶈瘯鏈哄埗鎴栬�呰褰曞け璐ユ棩蹇�
+                        orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
                     }
-
-
-
                 }
                 else {
                     log.info("鏈嶅姟璁㈠崟ID涓嶅瓨鍦細" + orderStatus.getServiceOrdID());
@@ -153,4 +169,43 @@
             e.printStackTrace();
         }
     }
+
+    // 鏂板鍙戦�佸洖璋冪殑鏂规硶
+    private String sendCallback(String callbackUrl, Map<String, String> params) {
+        TbCallbackLog callbackLog = new TbCallbackLog();
+        callbackLog.setCallbackUrl(callbackUrl);
+        callbackLog.setRequestParams(JSON.toJSONString(params));
+        callbackLog.setCreateTime(new Date());
+        callbackLog.setStatus("0");  // 榛樿澶辫触
+        callbackLog.setRetryCount(0);
+        callbackLog.setServiceOrdId(params.get("thirdOrderNo"));
+        callbackLog.setOrderId(Long.valueOf(params.get("orderID")));
+        callbackLog.setAppId(params.get("appId"));
+
+        try {
+            // 鎵撳嵃璇锋眰鍙傛暟
+            log.info("鍙戦�佸洖璋冭姹傦紝URL: " + callbackUrl);
+            log.info("璇锋眰鍙傛暟: " + params);
+
+            // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+            String response = HttpUtil.post(callbackUrl, params);
+
+            // 鎵撳嵃鍝嶅簲缁撴灉
+            log.info("鍥炶皟鍝嶅簲缁撴灉: " + response);
+            
+            // 鏇存柊鏃ュ織鐘舵��
+            callbackLog.setResponseResult(response);
+            callbackLog.setStatus("1");  // 鎴愬姛
+            
+            tbCallbackLogService.insertTbCallbackLog(callbackLog);
+            return response;
+        } catch (Exception e) {
+            log.error("鍥炶皟璇锋眰寮傚父: " + e.getMessage());
+            // 璁板綍閿欒淇℃伅
+            callbackLog.setErrorMsg(e.getMessage());
+            callbackLog.setRetryCount(1);  // 濡傛灉鏄噸璇曠殑鎯呭喌涓嬮渶瑕�+1
+            tbCallbackLogService.insertTbCallbackLog(callbackLog);
+            return null;
+        }
+    }
 }

--
Gitblit v1.9.1