From 773c502d0b2f2732f858946a32f41bf13e1bcdff Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 31 五月 2023 08:48:39 +0800
Subject: [PATCH] 提交

---
 /dev/null                                                                       |  186 --------------
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java                 |   10 
 .gitignore                                                                      |    2 
 ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java |   76 +++++
 ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java       |  473 ++++++++++++++++++++++++++++++++++++
 5 files changed, 554 insertions(+), 193 deletions(-)

diff --git a/.gitignore b/.gitignore
index c96c47b..d276cbd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
 /ardLog/logs/
 /ardLog/
-
+/ruoyi-ui
 ######################################################################
 # Build Tools
 
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java
new file mode 100644
index 0000000..31916f8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.hiksdk.config;
+
+import io.minio.MinioClient;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * @Description:
+ * @ClassName: MinioClientSingleton
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�05鏈�18鏃�9:32
+ * @Version: 1.0
+ **/
+
+@Slf4j(topic = "minio")
+@Data
+@Component
+public class MinioClientSingleton {
+
+    private static String domainUrl;
+    private static String accessKey;
+    private static String secretKey;
+
+    private volatile static MinioClient minioClient;
+
+    static {
+        domainUrl = getYmlNew("minio.endpoint");
+        accessKey = getYmlNew("minio.accessKey");
+        secretKey = getYmlNew("minio.secretKey");
+        log.info("minio淇℃伅锛�" + domainUrl + "(" + accessKey + "/" + secretKey + ")");
+    }
+
+    /**
+     * 鑾峰彇minio瀹㈡埛绔疄渚�
+     *
+     * @return {@link MinioClient}
+     */
+    public static MinioClient getMinioClient() {
+        if (minioClient == null) {
+            synchronized (MinioClientSingleton.class) {
+                if (minioClient == null) {
+                    minioClient = MinioClient.builder()
+                            .endpoint(domainUrl)
+                            .credentials(accessKey, secretKey)
+                            .build();
+                }
+            }
+        }
+        return minioClient;
+    }
+
+    /*yml閰嶇疆淇℃伅鑾峰彇*/
+    public static String getYmlNew(String key) {
+        Resource resource = new ClassPathResource("application.yml");
+        Properties properties = null;
+        try {
+            YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
+            yamlFactory.setResources(resource);
+            properties = yamlFactory.getObject();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        return properties.get(key).toString();
+    }
+
+}
+
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioConfig.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioConfig.java
deleted file mode 100644
index b2fb22f..0000000
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.ruoyi.device.hiksdk.config;
-
-import io.minio.MinioClient;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @ClassName: MinioConfig
- * @Description: minio閰嶇疆绫�
- * @Author: Administrator
- * @Date: 2023骞�01鏈�28鏃� 14:28
- * @Version: 1.0
- **/
-
-@Data
-@Configuration
-public class MinioConfig {
-
-    @Value("${minio.endpoint}")
-    private String endpoint;
-    @Value("${minio.accessKey}")
-    private String minioAccessKey;
-    @Value("${minio.secretKey}")
-    private String minioSecretKey;
-
-    /**
-     * 娉ㄥ叆minio 瀹㈡埛绔�
-     *
-     * @return
-     */
-    @Bean
-    public MinioClient minioClient() {
-        return MinioClient.builder()
-                .endpoint(endpoint)
-                .credentials(minioAccessKey, minioSecretKey)
-                .build();
-    }
-}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
new file mode 100644
index 0000000..49b4e1d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
@@ -0,0 +1,473 @@
+package com.ruoyi.device.hiksdk.util.minio;
+
+import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
+import io.minio.*;
+import io.minio.http.Method;
+import io.minio.messages.Bucket;
+import io.minio.messages.DeleteError;
+import io.minio.messages.DeleteObject;
+import io.minio.messages.Item;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.*;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @Description: Minio瀹㈡埛绔伐鍏风被
+ * @ClassName: MinioUtils
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�05鏈�18鏃�9:34
+ * @Version: 1.0
+ **/
+@SuppressWarnings("ALL")
+@Slf4j(topic = "minio")
+public class MinioUtils {
+
+    /**
+     * 鍒ゆ柇妗舵槸鍚﹀瓨鍦�
+     */
+    public static boolean exitsBucket(String bucketName) {
+        boolean found = false;
+        try {
+            BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build();
+            found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs);
+        } catch (Exception ex) {
+            log.error("minio鍒ゆ柇妗跺瓨鍦ㄥ紓甯革細", ex.getMessage());
+        }
+        return found;
+    }
+
+    /**
+     * 鍒涘缓妗�,骞惰缃《绛栫暐涓哄叕鍏�
+     */
+    public static boolean createBucket(String bucketName) {
+        try {
+            /*鍒涘缓妗�*/
+            MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build();
+            MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs);
+            /*璁剧疆绛栫暐*/
+            String sb = "{\"Version\":\"2012-10-17\"," +
+                    "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" +
+                    "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," +
+                    "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucketName +
+                    "\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\",\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" +
+                    bucketName + "/*\"]}]}";
+            SetBucketPolicyArgs setBucketPolicyArgs = SetBucketPolicyArgs.builder()
+                    .bucket(bucketName)
+                    .config(sb)
+                    .build();
+            MinioClientSingleton.getMinioClient().setBucketPolicy(setBucketPolicyArgs);
+            return true;
+        } catch (Exception ex) {
+            log.error("minio鍒涘缓妗跺紓甯革細", ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 鍒犻櫎涓�涓《
+     *
+     * @param bucket 妗跺悕绉�
+     */
+    public static boolean removeBucket(String bucket) {
+        try {
+            boolean found = exitsBucket(bucket);
+            if (found) {
+                Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder().bucket(bucket).build());
+                for (Result<Item> result : myObjects) {
+                    Item item = result.get();
+                    //鏈夊璞℃枃浠讹紝鍒欏垹闄ゅけ璐�
+                    if (item.size() > 0) {
+                        return false;
+                    }
+                }
+                // 鍒犻櫎`bucketName`瀛樺偍妗讹紝娉ㄦ剰锛屽彧鏈夊瓨鍌ㄦ《涓虹┖鏃舵墠鑳藉垹闄ゆ垚鍔熴��
+                MinioClientSingleton.getMinioClient().removeBucket(RemoveBucketArgs.builder().bucket(bucket).build());
+                found = exitsBucket(bucket);
+                return !found;
+            }
+        } catch (Exception ex) {
+            log.error("鍒犻櫎妗跺紓甯革細" + ex.getMessage());
+        }
+        return false;
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夋《鏂囦欢
+     *
+     * @return
+     */
+    public static List<Bucket> getListBuckets() {
+        try {
+            return MinioClientSingleton.getMinioClient().listBuckets();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Collections.emptyList();
+    }
+
+    /**
+     * 鐢熸垚涓�涓狦ET璇锋眰鐨勫甫鏈夊け鏁堟椂闂寸殑鍒嗕韩閾炬帴銆�
+     * 澶辨晥鏃堕棿榛樿鏄�7澶┿��
+     *
+     * @param bucketName 瀛樺偍妗跺悕绉�
+     * @param objectName 瀛樺偍妗堕噷鐨勫璞″悕绉�
+     * @param expires    澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ
+     * @return
+     */
+    public static String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) {
+        String url = "";
+        if (exitsBucket(bucketName)) {
+            try {
+                GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder()
+                        .method(Method.GET)
+                        .bucket(bucketName)
+                        .object(objectName)
+                        .expiry(expires, timeUnit)
+                        .build();
+                url = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            } catch (Exception ex) {
+                log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage());
+            }
+        }
+        return url;
+    }
+
+    /**
+     * @鎻忚堪 涓婁紶MultipartFile鏂囦欢杩斿洖url
+     * @鍙傛暟 [bucketName, file]
+     * @杩斿洖鍊� java.lang.String
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/5/18 12:16
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public static String putObjectAndGetUrl(String bucketName, MultipartFile file) {
+        //鍒ゆ柇鏂囦欢鏄惁涓虹┖
+        if (null == file || 0 == file.getSize()) {
+            log.error("涓婁紶minio鏂囦欢鏈嶅姟鍣ㄩ敊璇紝涓婁紶鏂囦欢涓虹┖");
+        }
+        boolean exsit = exitsBucket(bucketName);
+        if (!exsit) {
+            log.error(bucketName + "-妗朵笉瀛樺湪");
+        }
+        //鏂囦欢鍚�
+        String originalFilename = file.getOriginalFilename();
+        //鏂扮殑鏂囦欢鍚�
+        String fileName = UUID.randomUUID().toString().replace("-", "") + originalFilename;
+        try {
+            InputStream inputStream = file.getInputStream();
+            /*涓婁紶瀵硅薄*/
+            PutObjectArgs putObjectArgs = PutObjectArgs
+                    .builder()
+                    .bucket(bucketName)
+                    .object(fileName)
+                    .stream(inputStream, file.getSize(), -1)
+                    .contentType(file.getContentType())
+                    .build();
+            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            inputStream.close();
+            /*鑾峰彇url*/
+            GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
+                    .builder()
+                    .bucket(bucketName)
+                    .object(fileName)
+                    .build();
+            return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+        } catch (Exception ex) {
+            log.error("涓婁紶瀵硅薄杩斿洖url寮傚父锛�" + ex.getMessage());
+        }
+        return "";
+    }
+
+    /**
+     * 鍒犻櫎鏂囦欢
+     *
+     * @param bucket     妗跺悕绉�
+     * @param objectName 瀵硅薄鍚嶇О
+     * @return boolean
+     */
+    public static boolean removeObject(String bucket, String objectName) {
+        try {
+            boolean exsit = exitsBucket(bucket);
+            if (exsit) {
+                RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(objectName).build();
+                MinioClientSingleton.getMinioClient().removeObject(removeObjectArgs);
+                return true;
+            }
+        } catch (Exception e) {
+            log.error("removeObject", e);
+        }
+        return false;
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鏂囦欢
+     *
+     * @param objectNames 瀵硅薄鍚嶇О
+     * @return boolean
+     */
+    public static boolean removeObjects(String bucket, List<String> objectNames) {
+        if (exitsBucket(bucket)) {
+            try {
+                List<DeleteObject> objects = new LinkedList<>();
+                for (String str : objectNames) {
+                    objects.add(new DeleteObject(str));
+                }
+                RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build();
+                Iterable<Result<DeleteError>> results = MinioClientSingleton.getMinioClient().removeObjects(removeObjectsArgs);
+                /*鍒犻櫎瀹岄亶鍘嗙粨鏋滐紝鍚﹀垯鍒犱笉鎺�*/
+                for (Result<DeleteError> result : results) {
+                    DeleteError error = result.get();
+                    log.error("Error in deleting object " + error.objectName() + "; " + error.message());
+                }
+
+                return true;
+            } catch (Exception ex) {
+                log.error("minio鎵归噺鍒犻櫎鏂囦欢寮傚父", ex.getMessage());
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 鑾峰彇鍗曚釜妗朵腑鐨勬墍鏈夋枃浠跺璞″悕绉�
+     *
+     * @param bucket 妗跺悕绉�
+     * @return {@link List}<{@link String}>
+     */
+    public static List<String> getBucketObjectName(String bucket) {
+        boolean exsit = exitsBucket(bucket);
+        if (exsit) {
+            List<String> listObjetcName = new ArrayList<>();
+            try {
+                ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().bucket(bucket).build();
+                Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs);
+                for (Result<Item> result : myObjects) {
+                    Item item = result.get();
+                    listObjetcName.add(item.objectName());
+                }
+                return listObjetcName;
+            } catch (Exception ex) {
+                log.error("minio鑾峰彇妗朵笅瀵硅薄寮傚父锛�" + ex.getMessage());
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鑾峰彇鏌愪釜妗朵笅鏌愪釜瀵硅薄鐨刄RL
+     *
+     * @param bucket     妗跺悕绉�
+     * @param objectName 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�)
+     * @return
+     */
+    public static String getBucketObjectUrl(String bucketName, String objectName) {
+        try {
+            if (!exitsBucket(bucketName)) {
+                return "";
+            }
+            GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
+                    .builder()
+                    .bucket(bucketName)
+                    .object(objectName)
+                    .build();
+            return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+        } catch (Exception ex) {
+            log.error("minio鑾峰彇瀵硅薄URL寮傚父" + ex.getMessage());
+        }
+        return "";
+    }
+
+    /**
+     * 涓婁紶瀵硅薄-stream
+     *
+     * @param bucketName  bucket鍚嶇О
+     * @param objectName  饨備欢鍚嶇О
+     * @param stream      饨備欢娴�
+     * @param size        饧も缉
+     * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
+     */
+    public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
+        try {
+            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
+                    .bucket(bucketName)
+                    .object(objectName)
+                    .stream(stream, size, -1)
+                    .contentType(contextType)
+                    .build();
+            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            return true;
+        } catch (Exception ex) {
+            log.error("minio涓婁紶鏂囦欢(閫氳繃stream)寮傚父" + ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 涓婁紶瀵硅薄-File
+     *
+     * @param bucketName  bucket鍚嶇О
+     * @param objectName  饨備欢鍚嶇О
+     * @param file        饨備欢
+     * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
+     */
+    public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
+        try {
+            FileInputStream fileInputStream = new FileInputStream(file);
+            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
+                    .bucket(bucketName)
+                    .object(objectName)
+                    .stream(fileInputStream, file.length(), -1)
+                    .contentType(contextType)
+                    .build();
+            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            return true;
+        } catch (Exception ex) {
+            log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 涓婁紶瀵硅薄-MultipartFile
+     *
+     * @param bucketName    bucket鍚嶇О
+     * @param objectName    饨備欢鍚嶇О
+     * @param MultipartFile 饨備欢
+     * @param contextType   绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
+     */
+    public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
+        try {
+            if (bucketName.isEmpty()) {
+                log.error("bucket鍚嶇О涓虹┖");
+                return false;
+            }
+            if (objectName.isEmpty()) {
+                log.error("瀵硅薄鍚嶇О涓虹┖");
+                return false;
+            }
+            InputStream inputStream = multipartFile.getInputStream();
+            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
+                    .bucket(bucketName)
+                    .object(objectName)
+                    .stream(inputStream, multipartFile.getSize(), -1)
+                    .contentType(contextType)
+                    .build();
+            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            return true;
+        } catch (Exception ex) {
+            log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 涓婁紶瀵硅薄,鐢╩ultipartFile鍚嶇О浣滀负瀵硅薄鍚�
+     *
+     * @param bucketName    bucket鍚嶇О
+     * @param objectName    饨備欢鍚嶇О
+     * @param MultipartFile 饨備欢
+     * @param contextType   绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
+     */
+    public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
+        try {
+            if (multipartFile == null) {
+                log.error("涓婁紶鏂囦欢涓虹┖");
+                return false;
+            }
+            String objectName = multipartFile.getOriginalFilename();
+            InputStream inputStream = multipartFile.getInputStream();
+            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
+                    .bucket(bucketName)
+                    .object(objectName)
+                    .stream(inputStream, multipartFile.getSize(), -1)
+                    .contentType(contextType)
+                    .build();
+            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            return true;
+        } catch (Exception ex) {
+            log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 涓婁紶瀵硅薄-閫氳繃鏈湴璺緞
+     *
+     * @param bulkName
+     * @param objectName
+     * @param localFilePathName
+     * @return
+     */
+    public static boolean uploadObject(String bulkName, String objectName, String localFilePathName, String contextType) {
+        try {
+            if (!exitsBucket(bulkName)) {
+                log.debug(bulkName + "涓嶅瓨鍦�");
+                return false;
+            }
+            File file = new File(localFilePathName);
+            if (!file.exists()) {
+                log.debug("鏂囦欢涓嶅瓨鍦�");
+                return false;
+            }
+            UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder()
+                    .bucket(bulkName)
+                    .object(objectName)
+                    .filename(localFilePathName)
+                    .contentType(contextType)
+                    .build();
+            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().uploadObject(uploadObjectArgs);
+            return true;
+        } catch (Exception e) {
+            log.error("minio upload object file error " + e.getMessage());
+            return false;
+        }
+    }
+    /**
+     *@鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞�
+     *@鍙傛暟 [bucketName]
+     *@杩斿洖鍊� java.lang.Iterable<io.minio.Result<io.minio.messages.Item>>
+     *@鍒涘缓浜� 鍒樿嫃涔�
+     *@鍒涘缓鏃堕棿 2023/2/6 10:32
+     *@淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public static Iterable<Result<Item>> getObjectsByBucket(String bucketName)  {
+        Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder()
+                .bucket(bucketName)
+                .recursive(true)
+                .build());
+        return listObjects;
+    }
+
+    public static void main(String[] args) {
+        //        /*鍒犻櫎妗�*/
+        //        boolean b = removeBucket("lsy");
+        //        log.info(String.valueOf(b));
+        //        /*鍒涘缓妗�*/
+        //        boolean lsy = createBucket("lsy");
+        //        log.info(String.valueOf(lsy));
+        //        /*鍒ゆ柇妗舵槸鍚﹀瓨鍦�*/
+        //        boolean pic = exitsBucket("lsy");
+        //        log.info(String.valueOf(pic));
+        /*鏌ヨ鎵�鏈夋《*/
+        //        List<Bucket> listBuckets = getListBuckets();
+        //        for (Bucket bucket : listBuckets) {
+        //            log.info(bucket.name());
+        //        }
+        String bucket = "lsy";
+        String filename = UUID.randomUUID().toString().replace("-", "") + "pic.jpeg";
+        String fileFullPath = "C:\\Users\\Administrator\\Desktop\\寰俊鎴浘_20230518102605.png";
+        //        uploadObject(bucket, filename, fileFullPath, "Image/jpeg");
+        //        String url = getObjectWithExpired(bucket, filename, 10, SECONDS);
+        //        System.out.println(url);
+        boolean b = removeBucket(bucket);
+        System.out.println(b);
+        //        boolean b = uploadObjectBylocalPath(bucket, filename, fileFullPath);
+        //        System.out.println(b);
+        //String url = getObjectWithExpired(bucket, filename, 10000);
+        //
+        //String url = getBucketObject(bucket, filename);
+        //      System.out.println(url); package com.example.minio;
+    }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minioUtil/MinioUtil.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minioUtil/MinioUtil.java
deleted file mode 100644
index eaa9734..0000000
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minioUtil/MinioUtil.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package com.ruoyi.device.hiksdk.util.minioUtil;
-
-/**
- * @ClassName: MinioUtil
- * @Description: minio 宸ュ叿绫伙紝鎻愪緵涓婁紶銆佷笅杞芥柟娉�
- * @Author: Administrator
- * @Date: 2023骞�01鏈�28鏃� 13:28
- * @Version: 1.0
- **/
-
-import io.minio.*;
-import io.minio.http.Method;
-import io.minio.messages.Item;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import java.io.File;
-import java.io.InputStream;
-
-
-@Slf4j(topic = "minio")
-@Component
-@RequiredArgsConstructor
-public class MinioUtil {
-
-    private final MinioClient minioClient;
-
-    /**
-     * 鍒ゆ柇bulk妗舵槸鍚﹀瓨鍦�
-     *
-     * @param bulkName
-     * @return
-     */
-    private boolean isBuckExist(String bulkName) {
-        try {
-            return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bulkName).build());
-        } catch (Exception e) {
-            log.error("bulkname is not exist,error " + e.getMessage());
-            return false;
-        }
-    }
-
-    /**
-     * 涓婁紶瀵硅薄-閫氳繃鏈湴璺緞
-     *
-     * @param bulkName
-     * @param objectName
-     * @param localFilePathName
-     * @return
-     */
-    public boolean uploadObject(String bulkName, String objectName, String localFilePathName) {
-        try {
-            if (!isBuckExist(bulkName)) {
-                log.debug(bulkName + "涓嶅瓨鍦�");
-                 return false;
-            }
-            File file = new File(localFilePathName);
-            if (!file.exists()) {
-                log.debug("鏂囦欢涓嶅瓨鍦�");
-                 return false;
-            }
-            ObjectWriteResponse objectWriteResponse = minioClient.uploadObject(UploadObjectArgs.builder().bucket(bulkName).object(objectName).filename(localFilePathName).build());
-            return true;
-        } catch (Exception e) {
-            log.error("minio upload object file error " + e.getMessage());
-            return false;
-        }
-    }
-
-    /**
-     * 涓嬭浇瀵硅薄
-     *
-     * @param bulkName
-     * @param objectName
-     * @param localFilePathName
-     * @return
-     */
-    public boolean downloadObject(String bulkName, String objectName, String localFilePathName) {
-        if (isBuckExist(bulkName)) {
-            try {
-                minioClient.downloadObject(DownloadObjectArgs.builder().bucket(bulkName).object(objectName).filename(localFilePathName).build());
-                return true;
-            } catch (Exception e) {
-                log.error("minio download object file error " + e.getMessage());
-                return false;
-            }
-
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * 鍒犻櫎瀵硅薄
-     *
-     * @param bulkName
-     * @param objectName
-     * @return
-     */
-    public boolean deleteObject(String bulkName, String objectName) {
-        if (isBuckExist(bulkName)) {
-            try {
-                minioClient.removeObject(RemoveObjectArgs.builder().bucket(bulkName).object(objectName).build());
-                return true;
-            } catch (Exception e) {
-                log.error("minio delete object file error " + e.getMessage());
-                return false;
-            }
-        } else {
-            return false;
-        }
-    }
-
-
-    /**
-     * 鐢熸垚涓�涓狦ET璇锋眰鐨勫垎浜摼鎺ャ��
-     * 澶辨晥鏃堕棿榛樿鏄�7澶┿��
-     *
-     * @param bucketName 瀛樺偍妗跺悕绉�
-     * @param objectName 瀛樺偍妗堕噷鐨勫璞″悕绉�
-     * @param expires    澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ
-     * @return
-     */
-    public String presignedGetObject(String bucketName, String objectName, Integer expires) {
-        boolean bucketExists = isBuckExist(bucketName);
-        String url = "";
-        if (bucketExists) {
-            try {
-                if (expires == null) {
-                    expires = 604800;
-                }
-                GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder()
-                        .method(Method.GET)
-                        .bucket(bucketName)
-                        .object(objectName)
-//                        .expiry(expires)
-                        .build();
-                url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
-                // log.info("*******url:{}", url);
-            } catch (Exception e) {
-                log.info("presigned get object fail:{}", e);
-            }
-        }
-        return url;
-    }
-
-    /**
-     * 涓婁紶饨備欢
-     *
-     * @param bucketName  bucket鍚嶇О
-     * @param objectName  饨備欢鍚嶇О
-     * @param stream      饨備欢娴�
-     * @param size        饧も缉
-     * @param contextType 绫诲瀷
-     * @throws Exception https://docs.minio.io/cn/java-client-api-reference.html#putObject
-     */
-    public boolean putObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
-
-        try {
-            ObjectWriteResponse objectWriteResponse = minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(stream, size, -1).contentType(contextType).build());
-            return true;
-        } catch (Exception ex) {
-            log.error(ex.getMessage());
-            return false;
-        }
-    }
-
-
-    /**
-     *@鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞�
-     *@鍙傛暟 [bucketName]
-     *@杩斿洖鍊� java.lang.Iterable<io.minio.Result<io.minio.messages.Item>>
-     *@鍒涘缓浜� 鍒樿嫃涔�
-     *@鍒涘缓鏃堕棿 2023/2/6 10:32
-     *@淇敼浜哄拰鍏跺畠淇℃伅
-     */
-    public Iterable<Result<Item>> getObjectsByBucket(String bucketName){
-
-        Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder()
-                .bucket(bucketName)
-                .recursive(true)
-                .build());
-        return listObjects;
-    }
-}
-
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
index 015c997..b78e9b7 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
@@ -1,11 +1,11 @@
 package com.ruoyi.quartz.task;
 
-import com.ruoyi.device.hiksdk.util.minioUtil.MinioUtil;
+import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
 import io.minio.Result;
 import io.minio.messages.Item;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
+
 import java.text.SimpleDateFormat;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
@@ -21,8 +21,6 @@
 @Component("MinioTask")
 @Slf4j(topic = "minio")
 public class MinioTask {
-    @Resource
-    MinioUtil minioUtil;
 
     public void delHistoryTask(Integer saveDays) {
         log.info("鎵ц鍘嗗彶鏁版嵁鍒犻櫎");
@@ -32,7 +30,7 @@
             buckets.add("pic");
             buckets.add("record");
             for (String name:buckets) {
-                Iterable<Result<Item>> listObjectsPic = minioUtil.getObjectsByBucket(name);
+                Iterable<Result<Item>> listObjectsPic = MinioUtils.getObjectsByBucket(name);
                 for (Result<Item> result : listObjectsPic) {
                     Item item = result.get();
                     log.info(item.objectName() + "鍒涘缓鏃堕棿锛�" + item.lastModified());
@@ -52,7 +50,7 @@
 
                     if (objectTime.compareTo(nowTime) < 0) {
                         log.info("objectTime 鏃堕棿鍦� nowTime 涔嬪墠");
-                        boolean b = minioUtil.deleteObject(name, item.objectName());
+                        boolean b = MinioUtils.removeObject(name, item.objectName());
                         if(b)
                         {
                             log.info("鍒犻櫎杩囨湡鏁版嵁锛�"+ item.objectName()+"---"+item.lastModified());

--
Gitblit v1.9.3