From 7cffafcdaa92f904cffe91284d641c781829b035 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期日, 18 七月 2021 19:29:33 +0800
Subject: [PATCH] update 增加OSS模块service自动激活

---
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageServiceImpl.java  |   12 ++++--
 ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/CloudServiceEnumd.java                    |   22 +++++++++--
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java  |   24 +++++++-----
 ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java                         |    9 +++-
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageServiceImpl.java |   14 ++++--
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java |   20 ++++++----
 6 files changed, 68 insertions(+), 33 deletions(-)

diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/CloudServiceEnumd.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/CloudServiceEnumd.java
index 56e0906..497af55 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/CloudServiceEnumd.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/CloudServiceEnumd.java
@@ -1,5 +1,8 @@
 package com.ruoyi.oss.enumd;
 
+import com.ruoyi.oss.service.impl.AliyunCloudStorageServiceImpl;
+import com.ruoyi.oss.service.impl.MinioCloudStorageServiceImpl;
+import com.ruoyi.oss.service.impl.QiniuCloudStorageServiceImpl;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
@@ -15,22 +18,33 @@
 	/**
 	 * 涓冪墰浜�
 	 */
-	QINIU("qiniu"),
+	QINIU("qiniu", QiniuCloudStorageServiceImpl.class),
 
 	/**
 	 * 闃块噷浜�
 	 */
-	ALIYUN("aliyun"),
+	ALIYUN("aliyun", AliyunCloudStorageServiceImpl.class),
 
 	/**
 	 * 鑵捐浜�
 	 */
-	QCLOUD("qcloud"),
+	QCLOUD("qcloud", QiniuCloudStorageServiceImpl.class),
 
 	/**
 	 * minio
 	 */
-	MINIO("minio");
+	MINIO("minio", MinioCloudStorageServiceImpl.class);
 
 	private final String value;
+
+	private final Class<?> serviceClass;
+
+	public static Class<?> getServiceClass(String value) {
+		for (CloudServiceEnumd clazz : values()) {
+			if (clazz.getValue().equals(value)) {
+				return clazz.getServiceClass();
+			}
+		}
+		return null;
+	}
 }
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java
index b549d21..bc7e7f3 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java
@@ -3,6 +3,7 @@
 import cn.hutool.core.lang.Assert;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.oss.constant.CloudConstant;
+import com.ruoyi.oss.enumd.CloudServiceEnumd;
 import com.ruoyi.oss.service.ICloudStorageService;
 import com.ruoyi.system.service.ISysConfigService;
 
@@ -26,11 +27,15 @@
 
 	public static ICloudStorageService instance() {
 		String type = sysConfigService.selectConfigByKey(CloudConstant.CLOUD_STORAGE_CONFIG_KEY);
-		return SERVICES.get(type);
+		return instance(type);
 	}
 
 	public static ICloudStorageService instance(String type) {
-		return SERVICES.get(type);
+		ICloudStorageService service = SERVICES.get(type);
+		if (service == null) {
+			service = (ICloudStorageService) SpringUtils.getBean(CloudServiceEnumd.getServiceClass(type));
+		}
+		return service;
 	}
 
 	public static void register(String type, ICloudStorageService iCloudStorageService) {
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageServiceImpl.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageServiceImpl.java
index 7ac46e1..6a84dde 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageServiceImpl.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageServiceImpl.java
@@ -32,11 +32,15 @@
 	@Autowired
 	public AliyunCloudStorageServiceImpl(CloudStorageProperties properties) {
 		this.properties = properties.getAliyun();
-		ClientConfiguration configuration = new ClientConfiguration();
-		DefaultCredentialProvider credentialProvider = new DefaultCredentialProvider(
-			this.properties.getAccessKeyId(),
-			this.properties.getAccessKeySecret());
-		client = new OSSClient(this.properties.getEndpoint(), credentialProvider, configuration);
+		try {
+			ClientConfiguration configuration = new ClientConfiguration();
+			DefaultCredentialProvider credentialProvider = new DefaultCredentialProvider(
+				this.properties.getAccessKeyId(),
+				this.properties.getAccessKeySecret());
+			client = new OSSClient(this.properties.getEndpoint(), credentialProvider, configuration);
+		} catch (Exception e) {
+			throw new IllegalArgumentException("闃块噷浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
+		}
 	}
 
 	@Override
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageServiceImpl.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageServiceImpl.java
index 61ed4bb..bca97df 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageServiceImpl.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageServiceImpl.java
@@ -29,10 +29,14 @@
 	@Autowired
 	public MinioCloudStorageServiceImpl(CloudStorageProperties properties) {
 		this.properties = properties.getMinio();
-		minioClient = MinioClient.builder()
-			.endpoint(this.properties.getEndpoint())
-			.credentials(this.properties.getAccessKey(), this.properties.getSecretKey())
-			.build();
+		try {
+			minioClient = MinioClient.builder()
+				.endpoint(this.properties.getEndpoint())
+				.credentials(this.properties.getAccessKey(), this.properties.getSecretKey())
+				.build();
+		} catch (Exception e) {
+			throw new IllegalArgumentException("Minio瀛樺偍閰嶇疆閿欒! 璇锋鏌ョ郴缁熼厤缃�!");
+		}
 	}
 
 	@Override
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java
index 2b1b023..3b367b7 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java
@@ -32,14 +32,18 @@
 	@Autowired
 	public QcloudCloudStorageServiceImpl(CloudStorageProperties properties) {
 		this.properties = properties.getQcloud();
-        COSCredentials credentials = new BasicCOSCredentials(
-			this.properties.getSecretId(),
-			this.properties.getSecretKey());
-        // 鍒濆鍖栧鎴风閰嶇疆
-        ClientConfig clientConfig = new ClientConfig();
-        // 璁剧疆bucket鎵�鍦ㄧ殑鍖哄煙锛屽崕鍗楋細gz 鍗庡寳锛歵j 鍗庝笢锛歴h
-        clientConfig.setRegion(new Region(this.properties.getRegion()));
-        client = new COSClient(credentials, clientConfig);
+		try {
+			COSCredentials credentials = new BasicCOSCredentials(
+				this.properties.getSecretId(),
+				this.properties.getSecretKey());
+			// 鍒濆鍖栧鎴风閰嶇疆
+			ClientConfig clientConfig = new ClientConfig();
+			// 璁剧疆bucket鎵�鍦ㄧ殑鍖哄煙锛屽崕鍗楋細gz 鍗庡寳锛歵j 鍗庝笢锛歴h
+			clientConfig.setRegion(new Region(this.properties.getRegion()));
+			client = new COSClient(credentials, clientConfig);
+		} catch (Exception e) {
+			throw new IllegalArgumentException("鑵捐浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
+		}
 	}
 
 	@Override
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java
index 2f7a246..ee4e4ab 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java
@@ -36,16 +36,20 @@
 	@Autowired
 	public QiniuCloudStorageServiceImpl(CloudStorageProperties properties) {
 		this.properties = properties.getQiniu();
-		// z0 z1 z2
-		Configuration config = new Configuration(Region.autoRegion());
-		// 榛樿涓嶄娇鐢╤ttps
-		config.useHttpsDomains = false;
-		uploadManager = new UploadManager(config);
-		Auth auth = Auth.create(
-			this.properties.getAccessKey(),
-			this.properties.getSecretKey());
-		token = auth.uploadToken(this.properties.getBucketName());
-		bucketManager = new BucketManager(auth, config);
+		try {
+			// z0 z1 z2
+			Configuration config = new Configuration(Region.autoRegion());
+			// 榛樿涓嶄娇鐢╤ttps
+			config.useHttpsDomains = false;
+			uploadManager = new UploadManager(config);
+			Auth auth = Auth.create(
+				this.properties.getAccessKey(),
+				this.properties.getSecretKey());
+			token = auth.uploadToken(this.properties.getBucketName());
+			bucketManager = new BucketManager(auth, config);
+		} catch (Exception e) {
+			throw new IllegalArgumentException("涓冪墰浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
+		}
 	}
 
 

--
Gitblit v1.9.3