From 9c3645f8239c596838def5c9951ce714fd000c57 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Thu, 21 Sep 2023 14:24:13 +0800
Subject: [PATCH] 增加minio随项目启动

---
 ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java |   64 +++++++++++++++++++++++++++----
 1 files changed, 55 insertions(+), 9 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java b/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
index b21d2c6..d88e965 100644
--- a/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
@@ -1,26 +1,30 @@
 package com.ruoyi.storage.minio.service.impl;
 
+import java.io.File;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.utils.DateUtils;
 
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.storage.minio.domain.jsonbean.*;
+import com.ruoyi.utils.process.CmdUtils;
+import com.sun.jna.Platform;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.ruoyi.storage.minio.mapper.StorageMinioEventMapper;
 import com.ruoyi.storage.minio.domain.StorageMinioEvent;
 import com.ruoyi.storage.minio.service.IStorageMinioEventService;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 
 /**
@@ -35,9 +39,53 @@
 
     @Resource
     private StorageMinioEventMapper storageMinioEventMapper;
+    @Value("${minio.accessKey}")
+    String accessKey;
+    @Value("${minio.secretKey}")
+    String secretKey;
+    @Value("${minio.path}")
+    String path;
+    @Value("${minio.enabled}")
+    Boolean enabled;
+    String processName = "minio.exe";
+    @PostConstruct
+    public void initMinio() {
+        if (enabled) {
+            log.debug("初始化启动minio");
 
-
-
+            if (Platform.isWindows()) {
+                String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "minio" + File.separator + processName;
+                Map<String, String> env=new HashMap<>();
+                env.put("MINIO_ROOT_USER",accessKey);
+                env.put("MINIO_ROOT_PASSWORD",secretKey);
+                List<String> cmd = new ArrayList<>();
+                cmd.add(exePath);
+                cmd.add("server");
+                cmd.add(path);
+                cmd.add("--console-address=0.0.0.0:9000");
+                cmd.add("--address=0.0.0.0:9001");
+                if (CmdUtils.isProcessRunning(processName)) {
+                    // 进程已经在运行,结束该进程
+                    CmdUtils.stopProcess(processName);
+                }
+                // 启动后台进程
+                CmdUtils.commandStart(processName, cmd, env);
+                // 启动cmd窗口
+                //String[] command = {"cmd", "/c", "start", exePath};
+                //CmdUtils.commandStart(command);
+            }
+        }
+    }
+    @PreDestroy
+    public void destroyMinio() {
+        if (enabled) {
+            log.info("销毁minio");
+            if (CmdUtils.isProcessRunning(processName)) {
+                // 进程已经在运行,结束该进程
+                CmdUtils.stopProcess(processName);
+            }
+        }
+    }
 
     /**
      * 查询存储事件
@@ -137,10 +185,8 @@
                     log.debug("minio操作日志入库成功!【" + storageMinioEvent.getEventType() + "】");
                 }
             }
-        }
-        catch (Exception ex)
-        {
-            log.error("minio事件格式化异常:"+ex.getMessage());
+        } catch (Exception ex) {
+            log.error("minio事件格式化异常:" + ex.getMessage());
         }
     }
 }

--
Gitblit v1.9.3