From dc3e584b233841fe00f0aea5ae23d6808e6b852d Mon Sep 17 00:00:00 2001
From: zlg <482370576@qq.com>
Date: Thu, 18 Jul 2024 09:47:32 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../schisandra-cloud-storage-oss-api/pom.xml | 6 ------
.../controller/SchisandraOssQiniuController.java | 9 +++++++++
.../oss/application/oss/core/ali/AliOssClient.java | 12 +++++++++++-
.../application/oss/core/minio/MinioOssClient.java | 10 ++++++++--
.../application/oss/core/qiniu/QiNiuOssClient.java | 7 ++++++-
.../oss/core/tencent/TencentOssClient.java | 6 ++++++
6 files changed, 40 insertions(+), 10 deletions(-)
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-api/pom.xml b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-api/pom.xml
index d3a36f3..0d4ffe3 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-api/pom.xml
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-api/pom.xml
@@ -29,12 +29,6 @@
org.springframework.cloud
spring-cloud-loadbalancer
3.0.6
-
-
- reactor-core
- io.projectreactor
-
-
org.projectlombok
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssQiniuController.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssQiniuController.java
index 76b29f2..596b54d 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssQiniuController.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/controller/SchisandraOssQiniuController.java
@@ -18,9 +18,11 @@ import com.schisandra.oss.common.entity.Result;
import com.schisandra.oss.domain.bo.SchisandraOssQiniuBO;
import com.schisandra.oss.domain.redis.RedisUtil;
import com.schisandra.oss.domain.service.SchisandraOssQiniuDomainService;
+import com.thoughtworks.xstream.annotations.XStreamImplicitCollection;
import io.minio.errors.*;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.*;
@@ -113,6 +115,7 @@ public class SchisandraOssQiniuController {
* @date: 2024/6/26 13:55
*/
@GetMapping("listDir")
+ @Cacheable(value = "qiniuListDir",key = "#target + #userId + #dirName",unless = "#result == null")
public Result listQiniuInfo(@RequestParam String userId, @RequestParam String prefix, @RequestParam String bucket) throws Exception {
Preconditions.checkNotNull(userId, "不能为空");
QiNiuOssClient bean = SpringUtil.getBean(OssConstant.OssType.QINIU + userId);
@@ -132,6 +135,7 @@ public class SchisandraOssQiniuController {
* @date: 2024/6/27 9:41
*/
@PostMapping("renameFile")
+ @CacheEvict(value = "qiniuListDir",key = "#target + #userId + #dirName")
public Result renameQiniuFile(@RequestParam String userId, @RequestParam String bucket, @RequestParam String oldFileName, @RequestParam String newFileName) throws IOException {
Preconditions.checkNotNull(userId, "不能为空");
@@ -156,6 +160,7 @@ public class SchisandraOssQiniuController {
* @date: 2024/6/27 9:52
*/
@PostMapping("copyFile")
+ @CacheEvict(value = "qiniuListDir",key = "#target + #userId + #dirName")
public Result copyQiniuFile(@RequestParam String userId, @RequestParam String bucket, @RequestParam String oldFilePath, @RequestParam String newFilePath) throws IOException {
Preconditions.checkNotNull(userId, "不能为空");
@@ -230,6 +235,7 @@ public class SchisandraOssQiniuController {
* @date: 2024/7/8 14:34
*/
@PostMapping("deleteFile")
+ @CacheEvict(value = "qiniuListDir",key = "#target + #userId + #dirName")
public Result deleteQiniuFile(@RequestParam String bucket, @RequestParam String userId, @RequestParam String filePath) {
Preconditions.checkNotNull(bucket, "不能为空");
Preconditions.checkNotNull(userId, "不能为空");
@@ -252,6 +258,7 @@ public class SchisandraOssQiniuController {
* @date: 2024/7/8 14:34
*/
@PostMapping("uploadFile")
+ @CacheEvict(value = "qiniuListDir",key = "#target + #userId + #dirName")
public Result uploadQiniuFile(@RequestParam String userId, @RequestParam MultipartFile file, @RequestParam String fileName, @RequestParam String bucket) throws IOException {
Preconditions.checkNotNull(userId, "不能为空");
Preconditions.checkNotNull(fileName, "不能为空");
@@ -311,6 +318,7 @@ public class SchisandraOssQiniuController {
* @date: 2024/7/8 17:38
*/
@PostMapping("deleteBucket")
+ @CacheEvict(value = "qiniuBucket",key = "#userId+#bucket")
public Result deleteBucket(@RequestParam String userId, @RequestParam String bucket) {
Preconditions.checkNotNull(userId, "不能为空");
Preconditions.checkNotNull(bucket, "不能为空");
@@ -332,6 +340,7 @@ public class SchisandraOssQiniuController {
*/
@SneakyThrows
@PostMapping("createBucket")
+ @CacheEvict(value = "qiniuBucket",key = "#userId+#bucket")
public Result createBucket(@RequestParam String userId, @RequestParam String bucket, @RequestParam String region) {
Preconditions.checkNotNull(userId, "不能为空");
Preconditions.checkNotNull(bucket, "不能为空");
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java
index 0ba63b7..b19eecf 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/ali/AliOssClient.java
@@ -108,8 +108,18 @@ public class AliOssClient implements StandardOssClient {
}
public List listAliInfo(String bucket, String prefix){
+ ObjectListing objectListing=null;
+ if (prefix == null) {
+ objectListing = oss.listObjects(bucket, prefix);
+ }else {
+ int index = prefix.lastIndexOf("/");
+ if (index < prefix.length() - 1) {
+ objectListing = oss.listObjects(bucket, prefix+"/");
+ }else {
+ objectListing = oss.listObjects(bucket, prefix);
+ }
+ }
// 列举文件。如果不设置Prefix,则列举存储空间下的所有文件。如果设置Prefix,则列举包含指定前缀的文件。
- ObjectListing objectListing = oss.listObjects(bucket, prefix);
List sums = objectListing.getObjectSummaries();
List infos = new ArrayList<>();
if(prefix == ""){
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java
index 1d6b1ca..26efa2e 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/minio/MinioOssClient.java
@@ -206,8 +206,14 @@ public class MinioOssClient implements StandardOssClient {
results = minioClient.listObjects(
ListObjectsArgs.builder().bucket(bucket).recursive(false).build());
} else {
- results = minioClient.listObjects(
- ListObjectsArgs.builder().prefix(dirName).bucket(bucket).recursive(false).build());
+ int index=dirName.lastIndexOf("/");
+ if (index infos = new ArrayList<>();
results.forEach(r -> {
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/qiniu/QiNiuOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/qiniu/QiNiuOssClient.java
index 95981e1..4f85ee7 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/qiniu/QiNiuOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/qiniu/QiNiuOssClient.java
@@ -101,7 +101,12 @@ public class QiNiuOssClient implements StandardOssClient {
*/
public List listfile(String bucket, String prefix) {
String delimiter = "";
-
+ if (prefix != null) {
+ int index=prefix.lastIndexOf("/");
+ if (index infos = new ArrayList<>();
while (fileListIterator.hasNext()){
diff --git a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/tencent/TencentOssClient.java b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/tencent/TencentOssClient.java
index 5839d08..029fea6 100644
--- a/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/tencent/TencentOssClient.java
+++ b/schisandra-cloud-storage-oss/schisandra-cloud-storage-oss-application/schisandra-cloud-storage-oss-application-controller/src/main/java/com/schisandra/oss/application/oss/core/tencent/TencentOssClient.java
@@ -200,6 +200,12 @@ public class TencentOssClient implements StandardOssClient {
}
public HashMap listTargetDir(String bucket, String dirName) {
+ if (dirName != null) {
+ int index=dirName.lastIndexOf("/");
+ if (index