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

---
 ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java |  108 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 82 insertions(+), 26 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 ce70fdf..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;
 
 /**
@@ -32,8 +36,56 @@
 @Service
 @Slf4j(topic = "minio")
 public class StorageMinioEventServiceImpl implements IStorageMinioEventService {
+
     @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("鍒濆鍖栧惎鍔╩inio");
+
+            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("閿�姣乵inio");
+            if (CmdUtils.isProcessRunning(processName)) {
+                // 杩涚▼宸茬粡鍦ㄨ繍琛岋紝缁撴潫璇ヨ繘绋�
+                CmdUtils.stopProcess(processName);
+            }
+        }
+    }
 
     /**
      * 鏌ヨ瀛樺偍浜嬩欢
@@ -106,31 +158,35 @@
     @Async
     @Override
     public void parseStorageMinioEvent(String message) {
-        JsonsRootBean jsonsRootBean = JSONObject.parseObject(message, JsonsRootBean.class);
-        if (jsonsRootBean != null) {
-            Records records = jsonsRootBean.getRecords().get(0);
-            StorageMinioEvent storageMinioEvent = new StorageMinioEvent();
-            storageMinioEvent.setEventTime(records.getEventTime());
-            storageMinioEvent.setEventType(records.getEventName());
-            storageMinioEvent.setBucketName(records.getS3().getBucket().getName());
-            String encode = null;
-            try {
-                encode = URLDecoder.decode(records.getS3().getMObject().getKey(), "UTF-8");
-            } catch (UnsupportedEncodingException e) {
-                e.printStackTrace();
-            }
-            storageMinioEvent.setObjectName(encode);
-            storageMinioEvent.setObjectSize(records.getS3().getMObject().getSize());
-            storageMinioEvent.setObjectType(records.getS3().getMObject().getContentType());
-            storageMinioEvent.setHost(records.getSource().getHost());
-            storageMinioEvent.setEndpoint(records.getResponseElements().getXMinioOriginEndpoint());
-            storageMinioEvent.setUserName(records.getRequestParameters().getPrincipalid());
+        try {
+            JsonsRootBean jsonsRootBean = JSONObject.parseObject(message, JsonsRootBean.class);
+            if (jsonsRootBean != null) {
+                Records records = jsonsRootBean.getRecords().get(0);
+                StorageMinioEvent storageMinioEvent = new StorageMinioEvent();
+                storageMinioEvent.setEventTime(records.getEventTime());
+                String eventType = records.getEventName().substring(0, records.getEventName().indexOf(":", records.getEventName().indexOf(":") + 1));//涓嶅寘鍚湰韬綅缃�
+                storageMinioEvent.setEventType(eventType);
+                storageMinioEvent.setBucketName(records.getS3().getBucket().getName());
+                String encode = null;
+                try {
+                    encode = URLDecoder.decode(records.getS3().getMObject().getKey(), "UTF-8");
+                } catch (UnsupportedEncodingException e) {
+                    e.printStackTrace();
+                }
+                storageMinioEvent.setObjectName(encode);
+                storageMinioEvent.setObjectSize(records.getS3().getMObject().getSize());
+                storageMinioEvent.setObjectType(records.getS3().getMObject().getContentType());
+                storageMinioEvent.setHost(records.getSource().getHost());
+                storageMinioEvent.setEndpoint(records.getResponseElements().getXMinioOriginEndpoint());
+                storageMinioEvent.setUserName(records.getRequestParameters().getPrincipalid());
 
-            int i = insertStorageMinioEvent(storageMinioEvent);
-            if(i>0)
-            {
-                log.debug("minio鎿嶄綔鏃ュ織鍏ュ簱鎴愬姛!銆�"+storageMinioEvent.getEventType()+"銆�");
+                int i = insertStorageMinioEvent(storageMinioEvent);
+                if (i > 0) {
+                    log.debug("minio鎿嶄綔鏃ュ織鍏ュ簱鎴愬姛!銆�" + storageMinioEvent.getEventType() + "銆�");
+                }
             }
+        } catch (Exception ex) {
+            log.error("minio浜嬩欢鏍煎紡鍖栧紓甯�:" + ex.getMessage());
         }
     }
 }

--
Gitblit v1.9.3