From d0d5e25bfab469a826279fbf877fd7730c9a76e9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 26 五月 2025 18:20:09 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/admin_timer/src/main/java/com/doumee/api/DatabaseController.java |  100 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 91 insertions(+), 9 deletions(-)

diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/DatabaseController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/DatabaseController.java
index 8ee19de..daa238d 100644
--- a/server/visits/admin_timer/src/main/java/com/doumee/api/DatabaseController.java
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/DatabaseController.java
@@ -1,6 +1,8 @@
 package com.doumee.api;
 
-import com.doumee.core.model.ApiResponse;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.service.business.third.model.ApiResponse;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Date;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.service.business.PlatformJobService;
@@ -12,11 +14,15 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.BufferedReader;
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @author 姹熻箘韫�
@@ -30,6 +36,8 @@
 
     @Autowired
     private PlatformJobService platformJobService;
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
 
 
     @ApiOperation("鏁版嵁搴撳浠斤紝淇濈暀鏈�杩�7涓浠絪ql")
@@ -37,11 +45,26 @@
     public ApiResponse backupDatabase() {
         try {
             String timestamp = DateUtil.getNowLongTime();
-            String path = "/usr/local/jars/db/";
+//            String path = "/usr/local/jars/db/";
+//            String backupPath = path + timestamp + ".sql";
+            String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MYSQL_BACKUP_DIR).getCode();
+            String code = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MYSQL_BACKUP_CDOE).getCode() ;
             String backupPath = path + timestamp + ".sql";
-            // 浣跨敤mysqldump鍛戒护杩涜鏁版嵁搴撳浠�
-            Process process = Runtime.getRuntime().exec(new String[]{"mysqldump ", "-u", "root", "-p","Atwl@2024", "antaiwuliu", "-r", backupPath});
-            process.waitFor();
+            code= code.replace("${param}",backupPath);
+            log.error("鏁版嵁搴撳浠�================: " + code);
+            ProcessBuilder builder = new ProcessBuilder(code);
+            // 閲嶅畾鍚戦敊璇祦鍒版爣鍑嗚緭鍑烘祦
+            builder.redirectErrorStream(true);
+            // stdout
+            Process process = builder.start();
+            new Thread(new ProcessHandleRunnable(process)).start();
+            process.waitFor(); // wait if needed
+
+      /*      // 浣跨敤mysqldump鍛戒护杩涜鏁版嵁搴撳浠�
+            Process process = Runtime.getRuntime().exec(code);
+            process.getErrorStream();
+            process.getInputStream();
+            process.waitFor();*/
 
             // 妫�鏌ュ浠芥槸鍚︽垚鍔�
             if (new File(backupPath).exists()) {
@@ -53,11 +76,70 @@
             deleteOldFiles(path,7);//淇濈暀鏈�杩�7涓枃浠�
         } catch (Exception e) {
             e.printStackTrace();
+
             log.error("鏁版嵁搴撳浠藉け璐�."+e.getMessage());
         }
         return ApiResponse.failed("鏁版嵁搴撳浠藉け璐�" );
     }
+    public void run() {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+        String currentDateTime = dateFormat.format(new Date());
+        String fileName =  "backup_" + currentDateTime + ".sql";
 
+        try {
+            Class.forName("com.mysql.cj.jdbc.Driver");
+            Connection connection = DriverManager.getConnection("localhost:3306/antaiwuliu", "root", "Atwl@2024");
+            Statement statement = connection.createStatement();
+
+            String query = "SELECT * INTO OUTFILE '" + fileName + "' FROM your_table";
+            statement.execute(query);
+
+            System.out.println("Database backup successful to " + fileName);
+
+            statement.close();
+            connection.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+         new DatabaseController().run();;
+    }
+
+    static class ProcessHandleRunnable implements Runnable {
+        private Process process;
+
+        public ProcessHandleRunnable(Process process) {
+            this.process = process;
+        }
+
+        public void run() {
+            BufferedReader br = null;
+            InputStreamReader reader = null;
+            try {
+                System.out.println("start run...");
+                reader = new InputStreamReader(process.getInputStream());
+                br = new BufferedReader(reader);
+                String line = null;
+                while ((line = br.readLine()) != null) {
+                    System.out.println(line);
+                }
+                System.out.println("stop run...");
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            } finally {
+                try {
+                    if (br != null)
+                        br.close();
+                    if (reader != null)
+                        reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
     /**
      * @param path
      */

--
Gitblit v1.9.3