From aea81128444acb8ca9a90bc7ef04758bf2cd284d Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 23 八月 2023 14:44:22 +0800
Subject: [PATCH] 重构minio和mqtt配置信息获取 重构minio工具类 区分生产环境和开发环境配置信息

---
 ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java |  157 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 87 insertions(+), 70 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
index c063b73..ff3e870 100644
--- a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
@@ -2,13 +2,14 @@
 
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
 import io.minio.*;
 import io.minio.http.Method;
 import io.minio.messages.*;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.*;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -22,19 +23,23 @@
  **/
 @SuppressWarnings("ALL")
 @Slf4j(topic = "minio")
+@Component
 public class MinioUtils {
+
+    @Resource
+    MinioClient minioClient;
 
     /**
      * 鍒ゆ柇妗舵槸鍚﹀瓨鍦�
      */
-    public static boolean exitsBucket(String bucketName) {
+    public boolean exitsBucket(String bucketName) {
         boolean found = false;
         try {
             if (StringUtils.isEmpty(bucketName)) {
                 return false;
             }
             BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build();
-            found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs);
+            found = minioClient.bucketExists(bucketExistsArgs);
 
         } catch (Exception ex) {
             log.error("minio鍒ゆ柇妗跺瓨鍦ㄥ紓甯革細", ex.getMessage());
@@ -45,14 +50,14 @@
     /**
      * 鍒涘缓妗�,骞惰缃《绛栫暐涓哄叕鍏�
      */
-    public static boolean createBucket(String bucketName) {
+    public boolean createBucket(String bucketName) {
         try {
             if (StringUtils.isEmpty(bucketName)) {
                 return false;
             }
             /*鍒涘缓妗�*/
             MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build();
-            MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs);
+            minioClient.makeBucket(makeBucketArgs);
             /*璁剧疆绛栫暐*/
             String sb = "{\"Version\":\"2012-10-17\"," +
                     "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" +
@@ -72,7 +77,7 @@
             queueConfiguration.setQueue("arn:minio:sqs::_:mqtt");
 
             //璁剧疆浜嬩欢
-            List<EventType> events=new ArrayList<>();
+            List<EventType> events = new ArrayList<>();
             events.add(EventType.OBJECT_REMOVED_ANY);
             events.add(EventType.OBJECT_CREATED_ANY);
             queueConfiguration.setEvents(events);
@@ -82,8 +87,8 @@
             SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder()
                     .bucket(bucketName)
                     .config(config).build();
-            MinioClientSingleton.getMinioClient().setBucketPolicy(setBucketPolicyArgs);
-            MinioClientSingleton.getMinioClient().setBucketNotification(setBucketNotificationArgs);
+            minioClient.setBucketPolicy(setBucketPolicyArgs);
+            minioClient.setBucketNotification(setBucketNotificationArgs);
 
             return true;
         } catch (Exception ex) {
@@ -97,11 +102,11 @@
      *
      * @param bucket 妗跺悕绉�
      */
-    public static boolean removeBucket(String bucket) {
+    public boolean removeBucket(String bucket) {
         try {
             boolean found = exitsBucket(bucket);
             if (found) {
-                Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder().bucket(bucket).build());
+                Iterable<Result<Item>> myObjects = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucket).build());
                 for (Result<Item> result : myObjects) {
                     Item item = result.get();
                     //鏈夊璞℃枃浠讹紝鍒欏垹闄ゅけ璐�
@@ -110,7 +115,7 @@
                     }
                 }
                 // 鍒犻櫎`bucketName`瀛樺偍妗讹紝娉ㄦ剰锛屽彧鏈夊瓨鍌ㄦ《涓虹┖鏃舵墠鑳藉垹闄ゆ垚鍔熴��
-                MinioClientSingleton.getMinioClient().removeBucket(RemoveBucketArgs.builder().bucket(bucket).build());
+                minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucket).build());
                 found = exitsBucket(bucket);
                 return !found;
             }
@@ -125,9 +130,9 @@
      *
      * @return
      */
-    public static List<Bucket> getListBuckets() {
+    public List<Bucket> getListBuckets() {
         try {
-            return MinioClientSingleton.getMinioClient().listBuckets();
+            return minioClient.listBuckets();
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -143,7 +148,7 @@
      * @param expires    澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ
      * @return
      */
-    public static String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) {
+    public String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) {
         String url = "";
         if (exitsBucket(bucketName)) {
             try {
@@ -153,7 +158,7 @@
                         .object(objectName)
                         .expiry(expires, timeUnit)
                         .build();
-                url = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+                url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
             } catch (Exception ex) {
                 log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage());
             }
@@ -171,7 +176,7 @@
      * @鍒涘缓鏃堕棿 2023/5/18 12:16
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public static String putObjectAndGetUrl(String bucketName, MultipartFile file) {
+    public String putObjectAndGetUrl(String bucketName, MultipartFile file) {
         if (!exitsBucket(bucketName)) {
             createBucket(bucketName);
         }
@@ -200,7 +205,7 @@
                     .stream(inputStream, file.getSize(), -1)
                     .contentType(file.getContentType())
                     .build();
-            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            minioClient.putObject(putObjectArgs);
             inputStream.close();
             /*鑾峰彇url*/
             GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
@@ -209,7 +214,7 @@
                     .object(fileName)
                     .method(Method.GET)
                     .build();
-            String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
             String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
             return ObjectUrl;
         } catch (Exception ex) {
@@ -226,7 +231,7 @@
      * @鍒涘缓鏃堕棿 2023/5/18 12:16
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) {
+    public String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) {
         if (!exitsBucket(bucketName)) {
             createBucket(bucketName);
         }
@@ -255,7 +260,7 @@
                     .stream(inputStream, file.getSize(), -1)
                     .contentType(file.getContentType())
                     .build();
-            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            minioClient.putObject(putObjectArgs);
             inputStream.close();
             /*鑾峰彇url*/
             GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
@@ -264,7 +269,7 @@
                     .object(fileName)
                     .method(Method.GET)
                     .build();
-            String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
             String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
             return ObjectUrl;
         } catch (Exception ex) {
@@ -280,12 +285,12 @@
      * @param objectName 瀵硅薄鍚嶇О
      * @return boolean
      */
-    public static boolean removeObject(String bucket, String objectName) {
+    public 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);
+                minioClient.removeObject(removeObjectArgs);
                 return true;
             }
         } catch (Exception e) {
@@ -300,7 +305,7 @@
      * @param objectNames 瀵硅薄鍚嶇О
      * @return boolean
      */
-    public static boolean removeObjects(String bucket, List<String> objectNames) {
+    public boolean removeObjects(String bucket, List<String> objectNames) {
         if (exitsBucket(bucket)) {
             try {
                 List<DeleteObject> objects = new LinkedList<>();
@@ -308,7 +313,7 @@
                     objects.add(new DeleteObject(str));
                 }
                 RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build();
-                Iterable<Result<DeleteError>> results = MinioClientSingleton.getMinioClient().removeObjects(removeObjectsArgs);
+                Iterable<Result<DeleteError>> results = minioClient.removeObjects(removeObjectsArgs);
                 /*鍒犻櫎瀹岄亶鍘嗙粨鏋滐紝鍚﹀垯鍒犱笉鎺�*/
                 for (Result<DeleteError> result : results) {
                     DeleteError error = result.get();
@@ -329,13 +334,37 @@
      * @param bucket 妗跺悕绉�
      * @return {@link List}<{@link String}>
      */
-    public static List<String> getBucketObjectName(String bucket) {
+    public 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);
+                Iterable<Result<Item>> myObjects = minioClient.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;
+    }
+
+    /**
+     * 鑾峰彇鍗曚釜妗朵腑鐨勬墍鏈夋枃浠跺璞″悕绉�
+     * @param [bucket,prefix]
+     * @return {@link List}<{@link String}>
+     */
+    public List<String> getBucketObjectName(String bucket, String prefix) {
+        boolean exsit = exitsBucket(bucket);
+        if (exsit) {
+            List<String> listObjetcName = new ArrayList<>();
+            try {
+                ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix(prefix).bucket(bucket).build();
+                Iterable<Result<Item>> myObjects = minioClient.listObjects(listObjectsArgs);
                 for (Result<Item> result : myObjects) {
                     Item item = result.get();
                     listObjetcName.add(item.objectName());
@@ -355,7 +384,7 @@
      * @param objectName 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�)
      * @return
      */
-    public static String getBucketObjectUrl(String bucketName, String objectName) {
+    public String getBucketObjectUrl(String bucketName, String objectName) {
         try {
             if (!exitsBucket(bucketName)) {
                 return "";
@@ -366,7 +395,9 @@
                     .object(objectName)
                     .method(Method.GET)
                     .build();
-            return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
+            return ObjectUrl;
         } catch (Exception ex) {
             log.error("minio鑾峰彇瀵硅薄URL寮傚父" + ex.getMessage());
         }
@@ -382,7 +413,7 @@
      * @param size        饧も缉
      * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -393,7 +424,7 @@
                     .stream(stream, size, -1)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃stream)寮傚父" + ex.getMessage());
@@ -409,7 +440,7 @@
      * @param file        饨備欢
      * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -421,7 +452,7 @@
                     .stream(fileInputStream, file.length(), -1)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
@@ -437,7 +468,7 @@
      * @param MultipartFile 饨備欢
      * @param contextType   绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -449,7 +480,7 @@
                     .stream(inputStream, multipartFile.getSize(), -1)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
@@ -465,7 +496,7 @@
      * @param MultipartFile 饨備欢
      * @param contextType   绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
+    public boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -482,7 +513,7 @@
                     .stream(inputStream, multipartFile.getSize(), -1)
                     .contentType(contextType)
                     .build();
-            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
@@ -498,7 +529,7 @@
      * @param localFilePathName
      * @return
      */
-    public static boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -514,7 +545,7 @@
                     .filename(localFilePathName)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().uploadObject(uploadObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.uploadObject(uploadObjectArgs);
             return true;
         } catch (Exception e) {
             log.error("minio upload object file error " + e.getMessage());
@@ -530,42 +561,28 @@
      * @鍒涘缓鏃堕棿 2023/2/6 10:32
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) {
-        Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder()
+    public Iterable<Result<Item>> getObjectsByBucket(String bucketName) {
+        Iterable<Result<Item>> listObjects = minioClient.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;
+    /**
+     * @鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞�
+     * @鍙傛暟 [bucketName,prefix]
+     * @杩斿洖鍊� java.lang.Iterable<io.minio.Result < io.minio.messages.Item>>
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/2/6 10:32
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public Iterable<Result<Item>> getObjectsByBucket(String bucketName, String prefix) {
+        Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder()
+                .bucket(bucketName)
+                .prefix(prefix)
+                .recursive(true)
+                .build());
+        return listObjects;
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3