aijinhui
2023-09-21 2aa0ffa6eea188f44eabc50617ddf97c804fc89f
Merge remote-tracking branch 'origin/master'
已修改1个文件
64 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
        }
    }
}