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<String> cmd = new ArrayList<>();
|
cmd.add(exePath);
|
cmd.add("server");
|
cmd.add(minioPath);
|
if (CmdUtils.isProcessRunning(processName)) {
|
// 进程已经在运行,结束该进程
|
CmdUtils.stopProcess(processName);
|
}
|
// 启动后台进程
|
Map<String, String> 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);
|
}
|
}
|
}
|
}
|