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