| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | |
| | | @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); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 查询存储事件 |
| | |
| | | log.debug("minio操作日志入库成功!【" + storageMinioEvent.getEventType() + "】"); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.error("minio事件格式化异常:"+ex.getMessage()); |
| | | } catch (Exception ex) { |
| | | log.error("minio事件格式化异常:" + ex.getMessage()); |
| | | } |
| | | } |
| | | } |