package com.ruoyi.storage.minio.utils; import com.ruoyi.utils.tools.CmdUtils; import com.sun.jna.Platform; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description: * @ClassName: MinioService * @Author: 刘苏义 * @Date: 2023年08月04日10:32:40 * @Version: 1.0 **/ @Component @Slf4j(topic = "cmd") public class MinioService { String processName = "minio.exe"; @Value("${minio.path}") String minioPath; @Value("${minio.accessKey}") String accessKey; @Value("${minio.secretKey}") String secretKey; @Value("${minio.enabled}") Boolean minioEnabled; @PostConstruct public void init() { if (minioEnabled) { if (Platform.isWindows()) { String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "minio" + File.separator + processName; List cmd = new ArrayList<>(); cmd.add(exePath); cmd.add("server"); cmd.add(minioPath); if (CmdUtils.isProcessRunning(processName)) { // 进程已经在运行,结束该进程 CmdUtils.stopProcess(processName); } // 启动后台进程 Map envMap = new HashMap<>(); envMap.put("MINIO_ROOT_USER", accessKey); envMap.put("MINIO_ROOT_PASSWORD", secretKey); CmdUtils.commandStart(processName, cmd, envMap); // 启动cmd窗口 // String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"}; // CmdUtils.commandStart(command); } } } @PreDestroy public void destroyMediaMtx() { if (minioEnabled) { log.info("销毁minio"); if (CmdUtils.isProcessRunning(processName)) { // 进程已经在运行,结束该进程 CmdUtils.stopProcess(processName); } } } }