From c91d33e4ab58bdee9d4328adc2248495cc656c25 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期三, 18 八月 2021 19:15:03 +0800
Subject: [PATCH] update 优化 OSS 模块与上传组件 异常处理

---
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractCloudStorageStrategy.java |    2 +
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageStrategy.java         |    7 ++-
 ruoyi-ui/src/components/Editor/index.vue                                                  |    2 
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageStrategy.java        |    7 ++-
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageStrategy.java         |   11 +++--
 ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java                             |    4 +
 ruoyi-ui/src/components/FileUpload/index.vue                                              |   17 +++++---
 ruoyi-ui/src/components/ImageUpload/index.vue                                             |   32 +++++++++------
 ruoyi-ui/src/views/system/oss/config.vue                                                  |    2 
 ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageStrategy.java        |    7 ++-
 10 files changed, 55 insertions(+), 36 deletions(-)

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 1290685..accbbcd 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
@@ -11,6 +11,7 @@
 import com.ruoyi.oss.exception.OssException;
 import com.ruoyi.oss.properties.CloudStorageProperties;
 import com.ruoyi.oss.service.ICloudStorageStrategy;
+import com.ruoyi.oss.service.abstractd.AbstractCloudStorageStrategy;
 
 import java.util.Date;
 import java.util.Map;
@@ -68,7 +69,8 @@
 			return service;
 		}
 		// 鑾峰彇redis閰嶇疆淇℃伅 鍒涘缓瀵硅薄 骞剁紦瀛�
-		service = (ICloudStorageStrategy) ReflectUtils.newInstance(CloudServiceEnumd.getServiceClass(type), properties);
+		service = (ICloudStorageStrategy) ReflectUtils.newInstance(CloudServiceEnumd.getServiceClass(type));
+		((AbstractCloudStorageStrategy)service).init(properties);
 		SERVICES.put(type, service);
 		SERVICES_UPDATE_TIME.put(type, nowDate);
 		return service;
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractCloudStorageStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractCloudStorageStrategy.java
index ec4dc37..fec876d 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractCloudStorageStrategy.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractCloudStorageStrategy.java
@@ -20,6 +20,8 @@
 
 	protected CloudStorageProperties properties;
 
+	public abstract void init(CloudStorageProperties properties);
+
 	@Override
 	public abstract void createBucket();
 
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageStrategy.java
index 11c3476..c019d01 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageStrategy.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageStrategy.java
@@ -24,9 +24,10 @@
  */
 public class AliyunCloudStorageStrategy extends AbstractCloudStorageStrategy {
 
-	private final OSSClient client;
+	private OSSClient client;
 
-	public AliyunCloudStorageStrategy(CloudStorageProperties cloudStorageProperties) {
+	@Override
+	public void init(CloudStorageProperties cloudStorageProperties) {
 		properties = cloudStorageProperties;
 		try {
 			ClientConfiguration configuration = new ClientConfiguration();
@@ -35,7 +36,7 @@
 			client = new OSSClient(properties.getEndpoint(), credentialProvider, configuration);
 			createBucket();
 		} catch (Exception e) {
-			throw new IllegalArgumentException("闃块噷浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
+			throw new OssException("闃块噷浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
 		}
 	}
 
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageStrategy.java
index 1a0e91a..f87dd0b 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageStrategy.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageStrategy.java
@@ -20,9 +20,10 @@
  */
 public class MinioCloudStorageStrategy extends AbstractCloudStorageStrategy {
 
-	private final MinioClient minioClient;
+	private MinioClient minioClient;
 
-	public MinioCloudStorageStrategy(CloudStorageProperties cloudStorageProperties) {
+	@Override
+	public void init(CloudStorageProperties cloudStorageProperties) {
 		properties = cloudStorageProperties;
 		try {
 			minioClient = MinioClient.builder()
@@ -31,7 +32,7 @@
 				.build();
 			createBucket();
 		} catch (Exception e) {
-			throw new IllegalArgumentException("Minio瀛樺偍閰嶇疆閿欒! 璇锋鏌ョ郴缁熼厤缃�!");
+			throw new OssException("Minio瀛樺偍閰嶇疆閿欒! 璇锋鏌ョ郴缁熼厤缃�!");
 		}
 	}
 
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageStrategy.java
index c30dcbd..7b7ae63 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageStrategy.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageStrategy.java
@@ -24,9 +24,10 @@
  */
 public class QcloudCloudStorageStrategy extends AbstractCloudStorageStrategy {
 
-	private final COSClient client;
+	private COSClient client;
 
-	public QcloudCloudStorageStrategy(CloudStorageProperties cloudStorageProperties) {
+	@Override
+	public void init(CloudStorageProperties cloudStorageProperties) {
 		properties = cloudStorageProperties;
 		try {
 			COSCredentials credentials = new BasicCOSCredentials(
@@ -43,7 +44,7 @@
 			client = new COSClient(credentials, clientConfig);
 			createBucket();
 		} catch (Exception e) {
-			throw new IllegalArgumentException("鑵捐浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
+			throw new OssException("鑵捐浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
 		}
 	}
 
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageStrategy.java
index ef22513..c70e6ed 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageStrategy.java
+++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageStrategy.java
@@ -22,11 +22,12 @@
  */
 public class QiniuCloudStorageStrategy extends AbstractCloudStorageStrategy {
 
-	private final UploadManager uploadManager;
-	private final BucketManager bucketManager;
-	private final String token;
+	private UploadManager uploadManager;
+	private BucketManager bucketManager;
+	private String token;
 
-	public QiniuCloudStorageStrategy(CloudStorageProperties cloudStorageProperties) {
+	@Override
+	public void init(CloudStorageProperties cloudStorageProperties) {
 		properties = cloudStorageProperties;
 		try {
 			Configuration config = new Configuration(getRegion(properties.getRegion()));
@@ -43,7 +44,7 @@
 				bucketManager.createBucket(bucketName, properties.getRegion());
 			}
 		} catch (Exception e) {
-			throw new IllegalArgumentException("涓冪墰浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
+			throw new OssException("涓冪墰浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!");
 		}
 	}
 
diff --git a/ruoyi-ui/src/components/Editor/index.vue b/ruoyi-ui/src/components/Editor/index.vue
index e395110..1f2e15e 100644
--- a/ruoyi-ui/src/components/Editor/index.vue
+++ b/ruoyi-ui/src/components/Editor/index.vue
@@ -180,7 +180,7 @@
         // 璋冩暣鍏夋爣鍒版渶鍚�
         quill.setSelection(length + 1);
       } else {
-        this.$message.error("鍥剧墖鎻掑叆澶辫触");
+        this.$message.error(res.msg);
       }
     },
     handleUploadError() {
diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/ruoyi-ui/src/components/FileUpload/index.vue
index 244ac28..d5c3bc7 100644
--- a/ruoyi-ui/src/components/FileUpload/index.vue
+++ b/ruoyi-ui/src/components/FileUpload/index.vue
@@ -146,9 +146,14 @@
     },
     // 涓婁紶鎴愬姛鍥炶皟
     handleUploadSuccess(res, file) {
-      this.$message.success("涓婁紶鎴愬姛");
-      this.fileList.push({ name: res.data.fileName, url: res.data.fileName });
-      this.$emit("input", this.listToString(this.fileList));
+      if (res.code === 200) {
+        this.$message.success("涓婁紶鎴愬姛");
+        this.fileList.push({ name: res.data.fileName, url: res.data.fileName });
+        this.$emit("input", this.listToString(this.fileList));
+      } else {
+        this.$message.error(res.msg);
+        this.loading.close();
+      }
     },
     // 鍒犻櫎鏂囦欢
     handleDelete(index) {
@@ -170,9 +175,9 @@
       for (let i in list) {
         strs += list[i].url + separator;
       }
-      return strs != '' ? strs.substr(0, strs.length - 1) : '';
-    }
-  }
+      return strs != "" ? strs.substr(0, strs.length - 1) : "";
+    },
+  },
 };
 </script>
 
diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/ruoyi-ui/src/components/ImageUpload/index.vue
index e074b38..ba088b9 100644
--- a/ruoyi-ui/src/components/ImageUpload/index.vue
+++ b/ruoyi-ui/src/components/ImageUpload/index.vue
@@ -118,9 +118,14 @@
     },
     // 涓婁紶鎴愬姛鍥炶皟
     handleUploadSuccess(res) {
-      this.fileList.push({ name: res.data.fileName, url: res.data.url });
-      this.$emit("input", this.listToString(this.fileList));
-      this.loading.close();
+      if (res.code == 200) {
+        this.fileList.push({ name: res.data.fileName, url: res.data.url });
+        this.$emit("input", this.listToString(this.fileList));
+        this.loading.close();
+      } else {
+        this.$message.error(res.msg);
+        this.loading.close();
+      }
     },
     // 涓婁紶鍓峫oading鍔犺浇
     handleBeforeUpload(file) {
@@ -130,7 +135,7 @@
         if (file.name.lastIndexOf(".") > -1) {
           fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
         }
-        isImg = this.fileType.some(type => {
+        isImg = this.fileType.some((type) => {
           if (file.type.indexOf(type) > -1) return true;
           if (fileExtension && fileExtension.indexOf(type) > -1) return true;
           return false;
@@ -163,7 +168,7 @@
       this.$message.error(`涓婁紶鏂囦欢鏁伴噺涓嶈兘瓒呰繃 ${this.limit} 涓�!`);
     },
     // 涓婁紶澶辫触
-    handleUploadError() {
+    handleUploadError(res) {
       this.$message({
         type: "error",
         message: "涓婁紶澶辫触",
@@ -182,25 +187,26 @@
       for (let i in list) {
         strs += list[i].url + separator;
       }
-      return strs != '' ? strs.substr(0, strs.length - 1) : '';
-    }
-  }
+      return strs != "" ? strs.substr(0, strs.length - 1) : "";
+    },
+  },
 };
 </script>
 <style scoped lang="scss">
 // .el-upload--picture-card 鎺у埗鍔犲彿閮ㄥ垎
 ::v-deep.hide .el-upload--picture-card {
-    display: none;
+  display: none;
 }
 // 鍘绘帀鍔ㄧ敾鏁堟灉
 ::v-deep .el-list-enter-active,
 ::v-deep .el-list-leave-active {
-    transition: all 0s;
+  transition: all 0s;
 }
 
-::v-deep .el-list-enter, .el-list-leave-active {
-    opacity: 0;
-    transform: translateY(0);
+::v-deep .el-list-enter,
+.el-list-leave-active {
+  opacity: 0;
+  transform: translateY(0);
 }
 </style>
 
diff --git a/ruoyi-ui/src/views/system/oss/config.vue b/ruoyi-ui/src/views/system/oss/config.vue
index c6ea3a6..28bdbe5 100644
--- a/ruoyi-ui/src/views/system/oss/config.vue
+++ b/ruoyi-ui/src/views/system/oss/config.vue
@@ -138,7 +138,7 @@
           <el-input v-model="form.accessKey" placeholder="璇疯緭鍏ccessKey" />
         </el-form-item>
         <el-form-item label="secretKey" prop="secretKey">
-          <el-input v-model="form.secretKey" placeholder="璇疯緭鍏ョ閽�" />
+          <el-input v-model="form.secretKey" placeholder="璇疯緭鍏ョ閽�" show-password />
         </el-form-item>
         <el-form-item label="妗跺悕绉�" prop="bucketName">
           <el-input v-model="form.bucketName" placeholder="璇疯緭鍏ユ《鍚嶇О" />

--
Gitblit v1.9.3