diff --git a/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java b/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java index 33a7958..5cbeaaf 100644 --- a/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java +++ b/file-common/src/main/java/com/qiwenshare/common/config/QiwenFileConfig.java @@ -12,6 +12,7 @@ public class QiwenFileConfig { private boolean shareMode; private String storageType; + private String cacheMode; private AliyunConfig aliyun = new AliyunConfig(); diff --git a/file-common/src/main/java/com/qiwenshare/common/domain/DeleteFile.java b/file-common/src/main/java/com/qiwenshare/common/domain/DeleteFile.java new file mode 100644 index 0000000..af986ba --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/domain/DeleteFile.java @@ -0,0 +1,9 @@ +package com.qiwenshare.common.domain; + +import lombok.Data; + +@Data +public class DeleteFile { + private String fileUrl; + private String timeStampName; +} diff --git a/file-common/src/main/java/com/qiwenshare/common/cbb/NotSameFileExpection.java b/file-common/src/main/java/com/qiwenshare/common/exception/NotSameFileExpection.java similarity index 76% rename from file-common/src/main/java/com/qiwenshare/common/cbb/NotSameFileExpection.java rename to file-common/src/main/java/com/qiwenshare/common/exception/NotSameFileExpection.java index b4a6d03..9ebd262 100644 --- a/file-common/src/main/java/com/qiwenshare/common/cbb/NotSameFileExpection.java +++ b/file-common/src/main/java/com/qiwenshare/common/exception/NotSameFileExpection.java @@ -1,4 +1,4 @@ -package com.qiwenshare.common.cbb; +package com.qiwenshare.common.exception; public class NotSameFileExpection extends Exception { public NotSameFileExpection() { diff --git a/file-common/src/main/java/com/qiwenshare/common/factory/AliyunOSSOperationFactory.java b/file-common/src/main/java/com/qiwenshare/common/factory/AliyunOSSOperationFactory.java index f14f9f4..44b4bfb 100644 --- a/file-common/src/main/java/com/qiwenshare/common/factory/AliyunOSSOperationFactory.java +++ b/file-common/src/main/java/com/qiwenshare/common/factory/AliyunOSSOperationFactory.java @@ -1,9 +1,14 @@ package com.qiwenshare.common.factory; -import com.qiwenshare.common.download.Downloader; -import com.qiwenshare.common.download.product.AliyunOSSDownloader; -import com.qiwenshare.common.upload.product.AliyunOSSUploader; -import com.qiwenshare.common.upload.Uploader; + +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.operation.delete.product.AliyunOSSDeleter; + +import com.qiwenshare.common.operation.download.Downloader; +import com.qiwenshare.common.operation.download.product.AliyunOSSDownloader; +import com.qiwenshare.common.operation.upload.Uploader; +import com.qiwenshare.common.operation.upload.product.AliyunOSSUploader; + import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -14,6 +19,8 @@ public class AliyunOSSOperationFactory implements FileOperationFactory { AliyunOSSUploader aliyunOSSUploader; @Resource AliyunOSSDownloader aliyunOSSDownloader; + @Resource + AliyunOSSDeleter aliyunOSSDeleter; @Override public Uploader getUploader() { return aliyunOSSUploader; @@ -24,4 +31,9 @@ public class AliyunOSSOperationFactory implements FileOperationFactory { return aliyunOSSDownloader; } + @Override + public Deleter getDeleter() { + return aliyunOSSDeleter; + } + } diff --git a/file-common/src/main/java/com/qiwenshare/common/factory/FastDFSOperationFactory.java b/file-common/src/main/java/com/qiwenshare/common/factory/FastDFSOperationFactory.java index e998851..849fdf8 100644 --- a/file-common/src/main/java/com/qiwenshare/common/factory/FastDFSOperationFactory.java +++ b/file-common/src/main/java/com/qiwenshare/common/factory/FastDFSOperationFactory.java @@ -1,9 +1,11 @@ package com.qiwenshare.common.factory; -import com.qiwenshare.common.download.Downloader; -import com.qiwenshare.common.download.product.FastDFSDownloader; -import com.qiwenshare.common.upload.Uploader; -import com.qiwenshare.common.upload.product.FastDFSUploader; +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.operation.delete.product.FastDFSDeleter; +import com.qiwenshare.common.operation.download.Downloader; +import com.qiwenshare.common.operation.download.product.FastDFSDownloader; +import com.qiwenshare.common.operation.upload.Uploader; +import com.qiwenshare.common.operation.upload.product.FastDFSUploader; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -11,12 +13,12 @@ import javax.annotation.Resource; @Component public class FastDFSOperationFactory implements FileOperationFactory { -// @Resource -// AppendFileStorageClient defaultAppendFileStorageClient; @Resource FastDFSUploader fastDFSUploader; @Resource FastDFSDownloader fastDFSDownloader; + @Resource + FastDFSDeleter fastDFSDeleter; @Override public Uploader getUploader() { return fastDFSUploader; @@ -27,9 +29,10 @@ public class FastDFSOperationFactory implements FileOperationFactory { return fastDFSDownloader; } -// @Override -// public Uploader getUploader(UploadFile uploadFile) { -// return new FastDFSUploader(uploadFile, defaultAppendFileStorageClient); -// } + @Override + public Deleter getDeleter() { + return fastDFSDeleter; + } + } diff --git a/file-common/src/main/java/com/qiwenshare/common/factory/FileOperationFactory.java b/file-common/src/main/java/com/qiwenshare/common/factory/FileOperationFactory.java index 4db416d..15da8ed 100644 --- a/file-common/src/main/java/com/qiwenshare/common/factory/FileOperationFactory.java +++ b/file-common/src/main/java/com/qiwenshare/common/factory/FileOperationFactory.java @@ -1,10 +1,11 @@ package com.qiwenshare.common.factory; -import com.qiwenshare.common.download.Downloader; -import com.qiwenshare.common.upload.Uploader; +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.operation.download.Downloader; +import com.qiwenshare.common.operation.upload.Uploader; public interface FileOperationFactory { Uploader getUploader(); Downloader getDownloader(); -// Uploader getUploader(UploadFile uploadFile); + Deleter getDeleter(); } diff --git a/file-common/src/main/java/com/qiwenshare/common/factory/LocalStorageOperationFactory.java b/file-common/src/main/java/com/qiwenshare/common/factory/LocalStorageOperationFactory.java index 67e445d..d965ebf 100644 --- a/file-common/src/main/java/com/qiwenshare/common/factory/LocalStorageOperationFactory.java +++ b/file-common/src/main/java/com/qiwenshare/common/factory/LocalStorageOperationFactory.java @@ -1,9 +1,11 @@ package com.qiwenshare.common.factory; -import com.qiwenshare.common.download.Downloader; -import com.qiwenshare.common.download.product.LocalStorageDownloader; -import com.qiwenshare.common.upload.product.LocalStorageUploader; -import com.qiwenshare.common.upload.Uploader; +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.operation.delete.product.LocalStorageDeleter; +import com.qiwenshare.common.operation.download.Downloader; +import com.qiwenshare.common.operation.download.product.LocalStorageDownloader; +import com.qiwenshare.common.operation.upload.product.LocalStorageUploader; +import com.qiwenshare.common.operation.upload.Uploader; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -12,12 +14,14 @@ import javax.annotation.Resource; public class LocalStorageOperationFactory implements FileOperationFactory{ @Resource - LocalStorageUploader ChunkUploader; + LocalStorageUploader localStorageUploader; @Resource LocalStorageDownloader localStorageDownloader; + @Resource + LocalStorageDeleter localStorageDeleter; @Override public Uploader getUploader() { - return ChunkUploader; + return localStorageUploader; } @Override @@ -25,5 +29,10 @@ public class LocalStorageOperationFactory implements FileOperationFactory{ return localStorageDownloader; } + @Override + public Deleter getDeleter() { + return localStorageDeleter; + } + } diff --git a/file-common/src/main/java/com/qiwenshare/common/factory/NormalUploaderFactory.java b/file-common/src/main/java/com/qiwenshare/common/factory/NormalUploaderFactory.java deleted file mode 100644 index 40d5466..0000000 --- a/file-common/src/main/java/com/qiwenshare/common/factory/NormalUploaderFactory.java +++ /dev/null @@ -1,24 +0,0 @@ -//package com.qiwenshare.common.factory; -// -//import com.github.tobato.fastdfs.service.AppendFileStorageClient; -//import com.qiwenshare.common.domain.UploadFile; -//import com.qiwenshare.common.upload.product.NormalUploader; -//import com.qiwenshare.common.upload.Uploader; -//import org.springframework.stereotype.Component; -// -//import javax.annotation.Resource; -// -//@Component -//public class NormalUploaderFactory implements UploaderFactory { -// -// @Override -// public Uploader getUploader() { -// return new NormalUploader(); -// } -// -// @Override -// public Uploader getUploader(UploadFile uploadFile) { -// return new NormalUploader(); -// } -// -//} diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/delete/Deleter.java b/file-common/src/main/java/com/qiwenshare/common/operation/delete/Deleter.java new file mode 100644 index 0000000..c86f1d3 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/operation/delete/Deleter.java @@ -0,0 +1,7 @@ +package com.qiwenshare.common.operation.delete; + +import com.qiwenshare.common.domain.DeleteFile; + +public abstract class Deleter { + public abstract void delete(DeleteFile deleteFile); +} diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/AliyunOSSDeleter.java b/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/AliyunOSSDeleter.java new file mode 100644 index 0000000..c1a5c6d --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/AliyunOSSDeleter.java @@ -0,0 +1,32 @@ +package com.qiwenshare.common.operation.delete.product; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.qiwenshare.common.config.QiwenFileConfig; +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.domain.DeleteFile; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class AliyunOSSDeleter extends Deleter { + @Resource + QiwenFileConfig qiwenFileConfig; + @Override + public void delete(DeleteFile deleteFile) { +// AliyunOSSDelete.deleteObject(qiwenFileConfig.getAliyun().getOss(), deleteFile.getFileUrl().substring(1)); + String endpoint = qiwenFileConfig.getAliyun().getOss().getEndpoint(); + String accessKeyId = qiwenFileConfig.getAliyun().getOss().getAccessKeyId(); + String accessKeySecret = qiwenFileConfig.getAliyun().getOss().getAccessKeySecret(); + String bucketName = qiwenFileConfig.getAliyun().getOss().getBucketName(); + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + + ossClient.deleteObject(bucketName, deleteFile.getFileUrl().substring(1)); + + + + // 关闭OSSClient。 + ossClient.shutdown(); + } +} diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/FastDFSDeleter.java b/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/FastDFSDeleter.java new file mode 100644 index 0000000..da0581c --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/FastDFSDeleter.java @@ -0,0 +1,17 @@ +package com.qiwenshare.common.operation.delete.product; + +import com.github.tobato.fastdfs.service.FastFileStorageClient; +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.domain.DeleteFile; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class FastDFSDeleter extends Deleter { + @Autowired + private FastFileStorageClient fastFileStorageClient; + @Override + public void delete(DeleteFile deleteFile) { + fastFileStorageClient.deleteFile(deleteFile.getFileUrl()); + } +} diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/LocalStorageDeleter.java b/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/LocalStorageDeleter.java new file mode 100644 index 0000000..f108366 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/operation/delete/product/LocalStorageDeleter.java @@ -0,0 +1,19 @@ +package com.qiwenshare.common.operation.delete.product; + +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.domain.DeleteFile; +import com.qiwenshare.common.operation.FileOperation; +import com.qiwenshare.common.util.FileUtil; +import com.qiwenshare.common.util.PathUtil; +import org.springframework.stereotype.Component; + +@Component +public class LocalStorageDeleter extends Deleter { + @Override + public void delete(DeleteFile deleteFile) { + FileOperation.deleteFile(PathUtil.getStaticPath() + deleteFile.getFileUrl()); + if (FileUtil.isImageFile(FileUtil.getFileExtendName(deleteFile.getFileUrl()))) { + FileOperation.deleteFile(PathUtil.getStaticPath() + deleteFile.getFileUrl().replace(deleteFile.getTimeStampName(), deleteFile.getTimeStampName() + "_min")); + } + } +} diff --git a/file-common/src/main/java/com/qiwenshare/common/download/Downloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/Downloader.java similarity index 68% rename from file-common/src/main/java/com/qiwenshare/common/download/Downloader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/download/Downloader.java index 508c04e..c8793e4 100644 --- a/file-common/src/main/java/com/qiwenshare/common/download/Downloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/Downloader.java @@ -1,10 +1,8 @@ -package com.qiwenshare.common.download; +package com.qiwenshare.common.operation.download; import com.qiwenshare.common.domain.DownloadFile; -import com.qiwenshare.common.domain.UploadFile; import javax.servlet.http.HttpServletResponse; -import java.util.List; public abstract class Downloader { public abstract void download(HttpServletResponse httpServletResponse, DownloadFile uploadFile); diff --git a/file-common/src/main/java/com/qiwenshare/common/download/product/AliyunOSSDownloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/AliyunOSSDownloader.java similarity index 70% rename from file-common/src/main/java/com/qiwenshare/common/download/product/AliyunOSSDownloader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/download/product/AliyunOSSDownloader.java index 5685be2..acdb989 100644 --- a/file-common/src/main/java/com/qiwenshare/common/download/product/AliyunOSSDownloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/AliyunOSSDownloader.java @@ -1,13 +1,12 @@ -package com.qiwenshare.common.download.product; +package com.qiwenshare.common.operation.download.product; import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.OSSObject; -import com.github.tobato.fastdfs.service.FastFileStorageClient; import com.qiwenshare.common.config.QiwenFileConfig; +import com.qiwenshare.common.domain.AliyunOSS; import com.qiwenshare.common.domain.DownloadFile; -import com.qiwenshare.common.download.Downloader; -import com.qiwenshare.common.oss.AliyunOSSDownload; -import org.springframework.beans.factory.annotation.Autowired; +import com.qiwenshare.common.operation.download.Downloader; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -23,10 +22,11 @@ public class AliyunOSSDownloader extends Downloader { QiwenFileConfig qiwenFileConfig; @Override public void download(HttpServletResponse httpServletResponse, DownloadFile downloadFile) { + BufferedInputStream bis = null; byte[] buffer = new byte[1024]; - AliyunOSSDownload aliyunOSSDownload= new AliyunOSSDownload(); - OSS ossClient = aliyunOSSDownload.createOSSClient(qiwenFileConfig.getAliyun().getOss()); + + OSS ossClient = createOSSClient(qiwenFileConfig.getAliyun().getOss()); OSSObject ossObject = ossClient.getObject(qiwenFileConfig.getAliyun().getOss().getBucketName(), downloadFile.getTimeStampName()); InputStream inputStream = ossObject.getObjectContent(); try { @@ -51,4 +51,12 @@ public class AliyunOSSDownloader extends Downloader { } ossClient.shutdown(); } + + public OSS createOSSClient(AliyunOSS aliyunOSS) { + String endpoint = aliyunOSS.getEndpoint(); + String accessKeyId = aliyunOSS.getAccessKeyId(); + String accessKeySecret = aliyunOSS.getAccessKeySecret(); + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + return ossClient; + } } diff --git a/file-common/src/main/java/com/qiwenshare/common/download/product/FastDFSDownloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/FastDFSDownloader.java similarity index 92% rename from file-common/src/main/java/com/qiwenshare/common/download/product/FastDFSDownloader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/download/product/FastDFSDownloader.java index 5371474..7d661b1 100644 --- a/file-common/src/main/java/com/qiwenshare/common/download/product/FastDFSDownloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/FastDFSDownloader.java @@ -1,10 +1,9 @@ -package com.qiwenshare.common.download.product; +package com.qiwenshare.common.operation.download.product; import com.github.tobato.fastdfs.proto.storage.DownloadByteArray; import com.github.tobato.fastdfs.service.FastFileStorageClient; import com.qiwenshare.common.domain.DownloadFile; -import com.qiwenshare.common.domain.UploadFile; -import com.qiwenshare.common.download.Downloader; +import com.qiwenshare.common.operation.download.Downloader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/file-common/src/main/java/com/qiwenshare/common/download/product/LocalStorageDownloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/LocalStorageDownloader.java similarity index 86% rename from file-common/src/main/java/com/qiwenshare/common/download/product/LocalStorageDownloader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/download/product/LocalStorageDownloader.java index 7c86ee9..8b5063d 100644 --- a/file-common/src/main/java/com/qiwenshare/common/download/product/LocalStorageDownloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/LocalStorageDownloader.java @@ -1,11 +1,9 @@ -package com.qiwenshare.common.download.product; +package com.qiwenshare.common.operation.download.product; -import com.github.tobato.fastdfs.service.FastFileStorageClient; import com.qiwenshare.common.domain.DownloadFile; -import com.qiwenshare.common.download.Downloader; import com.qiwenshare.common.operation.FileOperation; +import com.qiwenshare.common.operation.download.Downloader; import com.qiwenshare.common.util.PathUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/Uploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java similarity index 92% rename from file-common/src/main/java/com/qiwenshare/common/upload/Uploader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java index eafdd13..daedc7c 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/Uploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java @@ -1,10 +1,9 @@ -package com.qiwenshare.common.upload; +package com.qiwenshare.common.operation.upload; import com.qiwenshare.common.domain.UploadFile; import com.qiwenshare.common.util.PathUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; -import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import java.io.File; @@ -24,14 +23,11 @@ public abstract class Uploader { // 文件大小限制,单位KB public final int maxSize = 10000000; -// protected StandardMultipartHttpServletRequest request = null; - public abstract List upload(HttpServletRequest request, UploadFile uploadFile); /** * 根据字符串创建本地目录 并按照日期建立子目录返回 * - * @param path * @return */ protected String getSaveFilePath() { @@ -73,7 +69,6 @@ public abstract class Uploader { } public synchronized boolean checkUploadStatus(UploadFile param, File confFile) throws IOException { - //File confFile = new File(savePath, timeStampName + ".conf"); RandomAccessFile confAccessFile = new RandomAccessFile(confFile, "rw"); //设置文件长度 confAccessFile.setLength(param.getTotalChunks()); diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/product/AliyunOSSUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/AliyunOSSUploader.java similarity index 91% rename from file-common/src/main/java/com/qiwenshare/common/upload/product/AliyunOSSUploader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/upload/product/AliyunOSSUploader.java index 28b9cdc..ca2cf2f 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/product/AliyunOSSUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/AliyunOSSUploader.java @@ -1,14 +1,13 @@ -package com.qiwenshare.common.upload.product; +package com.qiwenshare.common.operation.upload.product; import com.alibaba.fastjson.JSON; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.*; import com.qiwenshare.common.config.QiwenFileConfig; -import com.qiwenshare.common.domain.AliyunOSS; import com.qiwenshare.common.domain.UploadFile; import com.qiwenshare.common.exception.UploadGeneralException; -import com.qiwenshare.common.upload.Uploader; +import com.qiwenshare.common.operation.upload.Uploader; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; import lombok.Data; @@ -24,7 +23,6 @@ import org.springframework.web.multipart.support.StandardMultipartHttpServletReq import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.File; -import java.io.IOException; import java.io.InputStream; import java.util.*; @Component @@ -32,11 +30,7 @@ public class AliyunOSSUploader extends Uploader { private static final Logger logger = LoggerFactory.getLogger(AliyunOSSUploader.class); @Resource QiwenFileConfig qiwenFileConfig; -// private UploadFile uploadFile; -// private String endpoint; -// private String accessKeyId; -// private String accessKeySecret; -// private String bucketName; + // partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。 public static Map> partETagsMap = new HashMap>(); @@ -46,40 +40,22 @@ public class AliyunOSSUploader extends Uploader { public static Map timeStampNameMap = new HashMap<>(); - public AliyunOSSUploader() { - - } - -// public AliyunOSSUploader(UploadFile uploadFile) { -// this.uploadFile = uploadFile; -// } - @Override public List upload(HttpServletRequest httpServletRequest, UploadFile uploadFile) { logger.info("开始上传upload"); List saveUploadFileList = new ArrayList<>(); StandardMultipartHttpServletRequest request = (StandardMultipartHttpServletRequest) httpServletRequest; -// AliyunOSS aliyunOSS = (AliyunOSS) request.getAttribute("oss"); -// -// endpoint = aliyunOSS.getEndpoint(); -// accessKeyId = aliyunOSS.getAccessKeyId(); -// accessKeySecret = aliyunOSS.getAccessKeySecret(); -// bucketName = aliyunOSS.getBucketName(); + boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { throw new UploadGeneralException("未包含文件上传域"); -// UploadFile uploadFile = new UploadFile(); -// uploadFile.setSuccess(0); -// uploadFile.setMessage("未包含文件上传域"); -// saveUploadFileList.add(uploadFile); -// return saveUploadFileList; } DiskFileItemFactory dff = new DiskFileItemFactory();//1、创建工厂 String savePath = getSaveFilePath(); dff.setRepository(new File(savePath)); - ServletFileUpload sfu = new ServletFileUpload(dff);//2、创建文件上传解析器 + ServletFileUpload sfu = new ServletFileUpload(dff); sfu.setSizeMax(this.maxSize * 1024L); sfu.setHeaderEncoding("utf-8");//3、解决文件名的中文乱码 Iterator iter = request.getFileNames(); diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/product/FastDFSUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/FastDFSUploader.java similarity index 94% rename from file-common/src/main/java/com/qiwenshare/common/upload/product/FastDFSUploader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/upload/product/FastDFSUploader.java index f540628..1924a3d 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/product/FastDFSUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/FastDFSUploader.java @@ -1,10 +1,10 @@ -package com.qiwenshare.common.upload.product; +package com.qiwenshare.common.operation.upload.product; import com.github.tobato.fastdfs.domain.StorePath; import com.github.tobato.fastdfs.service.AppendFileStorageClient; import com.qiwenshare.common.domain.UploadFile; import com.qiwenshare.common.exception.UploadGeneralException; -import com.qiwenshare.common.upload.Uploader; +import com.qiwenshare.common.operation.upload.Uploader; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; import lombok.extern.slf4j.Slf4j; @@ -25,27 +25,11 @@ public class FastDFSUploader extends Uploader { @Resource AppendFileStorageClient defaultAppendFileStorageClient; -// UploadFile uploadFile; - private static Map CURRENT_UPLOAD_CHUNK_NUMBER = new HashMap<>(); private static Map UPLOADED_SIZE = new HashMap<>(); private static Map STORE_PATH = new HashMap<>(); private static Map LOCK_MAP = new HashMap<>(); - public FastDFSUploader() { - - } - -// public FastDFSUploader(UploadFile uploadFile) { -// this.uploadFile = uploadFile; -// } -// -// public FastDFSUploader(UploadFile uploadFile, AppendFileStorageClient defaultAppendFileStorageClient) { -//// this.uploadFile = uploadFile; -// this.defaultAppendFileStorageClient = defaultAppendFileStorageClient; -// } - - @Override public List upload(HttpServletRequest request, UploadFile uploadFile) { log.info("开始上传upload"); diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/product/LocalStorageUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/LocalStorageUploader.java similarity index 97% rename from file-common/src/main/java/com/qiwenshare/common/upload/product/LocalStorageUploader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/upload/product/LocalStorageUploader.java index 027bffd..b9e5295 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/product/LocalStorageUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/LocalStorageUploader.java @@ -1,10 +1,10 @@ -package com.qiwenshare.common.upload.product; +package com.qiwenshare.common.operation.upload.product; -import com.qiwenshare.common.cbb.NotSameFileExpection; +import com.qiwenshare.common.exception.NotSameFileExpection; import com.qiwenshare.common.domain.UploadFile; import com.qiwenshare.common.exception.UploadGeneralException; import com.qiwenshare.common.operation.ImageOperation; -import com.qiwenshare.common.upload.Uploader; +import com.qiwenshare.common.operation.upload.Uploader; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; import org.apache.commons.codec.digest.DigestUtils; diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/product/NormalUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/NormalUploader.java similarity index 100% rename from file-common/src/main/java/com/qiwenshare/common/upload/product/NormalUploader.java rename to file-common/src/main/java/com/qiwenshare/common/operation/upload/product/NormalUploader.java diff --git a/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSDelete.java b/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSDelete.java deleted file mode 100644 index a21ac15..0000000 --- a/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSDelete.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * 示例说明 - * - * HelloOSS是OSS Java SDK的示例程序,您可以修改endpoint、accessKeyId、accessKeySecret、bucketName后直接运行。 - * 运行方法请参考README。 - * - * 本示例中的并不包括OSS Java SDK的所有功能,详细功能及使用方法,请参看“SDK手册 > Java-SDK”, - * 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/preface.html?spm=5176.docoss/sdk/java-sdk/。 - * - * 调用OSS Java SDK的方法时,抛出异常表示有错误发生;没有抛出异常表示成功执行。 - * 当错误发生时,OSS Java SDK的方法会抛出异常,异常中包括错误码、错误信息,详细请参看“SDK手册 > Java-SDK > 异常处理”, - * 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/exception.html?spm=5176.docoss/api-reference/error-response。 - * - * OSS控制台可以直观的看到您调用OSS Java SDK的结果,OSS控制台地址是:https://oss.console.aliyun.com/index#/。 - * OSS控制台使用方法请参看文档中心的“控制台用户指南”, 指南的来链接地址是:https://help.aliyun.com/document_detail/oss/getting-started/get-started.html?spm=5176.docoss/user_guide。 - * - * OSS的文档中心地址是:https://help.aliyun.com/document_detail/oss/user_guide/overview.html。 - * OSS Java SDK的文档地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/install.html?spm=5176.docoss/sdk/java-sdk。 - * - */ - -package com.qiwenshare.common.oss; - -import com.aliyun.oss.OSS; -import com.aliyun.oss.OSSClientBuilder; -import com.aliyun.oss.model.ObjectMetadata; -import com.qiwenshare.common.domain.AliyunOSS; -import com.qiwenshare.common.util.FileUtil; - -import java.io.InputStream; - - -public class AliyunOSSDelete { - - - /** - * 流式上传 - */ - public static void deleteObject(AliyunOSS aliyunOSS, String objectName) { - String endpoint = aliyunOSS.getEndpoint(); - String accessKeyId = aliyunOSS.getAccessKeyId(); - String accessKeySecret = aliyunOSS.getAccessKeySecret(); - String bucketName = aliyunOSS.getBucketName(); - OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); - - ossClient.deleteObject(bucketName, objectName); - - - - // 关闭OSSClient。 - ossClient.shutdown(); - } - - -} diff --git a/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSDownload.java b/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSDownload.java deleted file mode 100644 index 91432e8..0000000 --- a/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSDownload.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.qiwenshare.common.oss; - -import com.aliyun.oss.OSS; -import com.aliyun.oss.OSSClientBuilder; -import com.aliyun.oss.model.OSSObject; -import com.qiwenshare.common.domain.AliyunOSS; - -import java.io.InputStream; - -public class AliyunOSSDownload { - private String endpoint = ""; - private String accessKeyId = ""; - private String accessKeySecret = ""; - private String bucketName = ""; - public OSS createOSSClient(AliyunOSS aliyunOSS) { - String endpoint = aliyunOSS.getEndpoint(); - String accessKeyId = aliyunOSS.getAccessKeyId(); - String accessKeySecret = aliyunOSS.getAccessKeySecret(); - this.bucketName = aliyunOSS.getBucketName(); - OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); - return ossClient; - } - - /** - * 流式下载 - */ - public InputStream streamDownload(String objectName) { - - // 创建OSSClient实例。 - OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); - - // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。 - OSSObject ossObject = ossClient.getObject(bucketName, objectName); - return ossObject.getObjectContent(); - - } - -} diff --git a/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSRename.java b/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSRename.java deleted file mode 100644 index 4113ae5..0000000 --- a/file-common/src/main/java/com/qiwenshare/common/oss/AliyunOSSRename.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * 示例说明 - * - * HelloOSS是OSS Java SDK的示例程序,您可以修改endpoint、accessKeyId、accessKeySecret、bucketName后直接运行。 - * 运行方法请参考README。 - * - * 本示例中的并不包括OSS Java SDK的所有功能,详细功能及使用方法,请参看“SDK手册 > Java-SDK”, - * 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/preface.html?spm=5176.docoss/sdk/java-sdk/。 - * - * 调用OSS Java SDK的方法时,抛出异常表示有错误发生;没有抛出异常表示成功执行。 - * 当错误发生时,OSS Java SDK的方法会抛出异常,异常中包括错误码、错误信息,详细请参看“SDK手册 > Java-SDK > 异常处理”, - * 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/exception.html?spm=5176.docoss/api-reference/error-response。 - * - * OSS控制台可以直观的看到您调用OSS Java SDK的结果,OSS控制台地址是:https://oss.console.aliyun.com/index#/。 - * OSS控制台使用方法请参看文档中心的“控制台用户指南”, 指南的来链接地址是:https://help.aliyun.com/document_detail/oss/getting-started/get-started.html?spm=5176.docoss/user_guide。 - * - * OSS的文档中心地址是:https://help.aliyun.com/document_detail/oss/user_guide/overview.html。 - * OSS Java SDK的文档地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/install.html?spm=5176.docoss/sdk/java-sdk。 - * - */ - -package com.qiwenshare.common.oss; - -import com.aliyun.oss.OSS; -import com.aliyun.oss.OSSClientBuilder; -import com.aliyun.oss.model.CopyObjectResult; -import com.aliyun.oss.model.ObjectMetadata; -import com.qiwenshare.common.domain.AliyunOSS; - -import java.io.InputStream; - - -public class AliyunOSSRename { - - /** - * 流式上传 - */ - public static void rename(AliyunOSS aliyunOSS, String sourceObjectName, String destinationObjectName) { - String endpoint = aliyunOSS.getEndpoint(); - String accessKeyId = aliyunOSS.getAccessKeyId(); - String accessKeySecret = aliyunOSS.getAccessKeySecret(); - String bucketName = aliyunOSS.getBucketName(); - OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); - CopyObjectResult result = ossClient.copyObject(bucketName, sourceObjectName, bucketName, destinationObjectName); - - ossClient.deleteObject(bucketName, sourceObjectName); - ObjectMetadata metadata = new ObjectMetadata(); -// if ("pdf".equals(FileUtil.getFileType(objectName))) { -// metadata.setContentDisposition("attachment"); -// } - -// ossClient.putObject(bucketName, objectName, inputStream, metadata); - - - // 关闭OSSClient。 - ossClient.shutdown(); - } - -} diff --git a/file-common/src/main/java/com/qiwenshare/common/cbb/RestResult.java b/file-common/src/main/java/com/qiwenshare/common/result/RestResult.java similarity index 97% rename from file-common/src/main/java/com/qiwenshare/common/cbb/RestResult.java rename to file-common/src/main/java/com/qiwenshare/common/result/RestResult.java index d1828d6..361f3fd 100644 --- a/file-common/src/main/java/com/qiwenshare/common/cbb/RestResult.java +++ b/file-common/src/main/java/com/qiwenshare/common/result/RestResult.java @@ -1,10 +1,8 @@ -package com.qiwenshare.common.cbb; +package com.qiwenshare.common.result; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.util.Map; - /** * 统一结果返回 * @param diff --git a/file-common/src/main/java/com/qiwenshare/common/cbb/ResultCodeEnum.java b/file-common/src/main/java/com/qiwenshare/common/result/ResultCodeEnum.java similarity index 94% rename from file-common/src/main/java/com/qiwenshare/common/cbb/ResultCodeEnum.java rename to file-common/src/main/java/com/qiwenshare/common/result/ResultCodeEnum.java index 1285a9d..613416c 100644 --- a/file-common/src/main/java/com/qiwenshare/common/cbb/ResultCodeEnum.java +++ b/file-common/src/main/java/com/qiwenshare/common/result/ResultCodeEnum.java @@ -1,4 +1,4 @@ -package com.qiwenshare.common.cbb; +package com.qiwenshare.common.result; import lombok.Getter; diff --git a/file-common/src/main/java/com/qiwenshare/common/cbb/CollectUtil.java b/file-common/src/main/java/com/qiwenshare/common/util/CollectUtil.java similarity index 97% rename from file-common/src/main/java/com/qiwenshare/common/cbb/CollectUtil.java rename to file-common/src/main/java/com/qiwenshare/common/util/CollectUtil.java index a127ef6..e8fd047 100644 --- a/file-common/src/main/java/com/qiwenshare/common/cbb/CollectUtil.java +++ b/file-common/src/main/java/com/qiwenshare/common/util/CollectUtil.java @@ -1,4 +1,4 @@ -package com.qiwenshare.common.cbb; +package com.qiwenshare.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/file-common/src/main/java/com/qiwenshare/common/cbb/DateUtil.java b/file-common/src/main/java/com/qiwenshare/common/util/DateUtil.java similarity index 98% rename from file-common/src/main/java/com/qiwenshare/common/cbb/DateUtil.java rename to file-common/src/main/java/com/qiwenshare/common/util/DateUtil.java index cb8edbe..6000bd4 100644 --- a/file-common/src/main/java/com/qiwenshare/common/cbb/DateUtil.java +++ b/file-common/src/main/java/com/qiwenshare/common/util/DateUtil.java @@ -1,4 +1,4 @@ -package com.qiwenshare.common.cbb; +package com.qiwenshare.common.util; import java.text.DateFormat; import java.text.ParseException; diff --git a/file-common/src/main/java/com/qiwenshare/common/util/OfficeUtil.java b/file-common/src/main/java/com/qiwenshare/common/util/OfficeUtil.java deleted file mode 100644 index a04c354..0000000 --- a/file-common/src/main/java/com/qiwenshare/common/util/OfficeUtil.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.qiwenshare.common.util; - -public class OfficeUtil { -} diff --git a/file-common/src/main/java/com/qiwenshare/common/util/RedisLockUtils.java b/file-common/src/main/java/com/qiwenshare/common/util/RedisLockUtils.java new file mode 100644 index 0000000..34e5a44 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/util/RedisLockUtils.java @@ -0,0 +1,218 @@ +package com.qiwenshare.common.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.data.redis.connection.RedisStringCommands; +import org.springframework.data.redis.connection.ReturnType; +import org.springframework.data.redis.core.RedisCallback; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.types.Expiration; + +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * redis实现分布式锁 + * + */ +public class RedisLockUtils { + + private static final Logger log = LoggerFactory.getLogger(RedisLockUtils.class); + + /** + * 默认轮休获取锁间隔时间, 单位:毫秒 + */ + private static final int DEFAULT_ACQUIRE_RESOLUTION_MILLIS = 100; + + private static final String UNLOCK_LUA; + + static { + StringBuilder lua = new StringBuilder(); + lua.append("if redis.call(\"get\",KEYS[1]) == ARGV[1] "); + lua.append("then "); + lua.append(" return redis.call(\"del\",KEYS[1]) "); + lua.append("else "); + lua.append(" return 0 "); + lua.append("end "); + UNLOCK_LUA = lua.toString(); + } + + private RedisTemplate redisTemplate; + + private final ThreadLocal> lockMap = new ThreadLocal<>(); + + public RedisLockUtils(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + /** + * 获取锁,没有获取到则一直等待 + * + * @param key redis key + * @param expire 锁过期时间, 单位 秒 + */ + public void lock(final String key, long expire) { + try { + acquireLock(key, expire, -1); + } catch (Exception e) { + throw new RuntimeException("acquire lock exception", e); + } + } + + /** + * 获取锁,指定时间内没有获取到,返回false。否则 返回true + * + * @param key redis key + * @param expire 锁过期时间, 单位 秒 + * @param waitTime 获取锁超时时间, -1代表永不超时, 单位 秒 + */ + public boolean tryLock(final String key, long expire, long waitTime) { + try { + return acquireLock(key, expire, waitTime); + } catch (Exception e) { + throw new RuntimeException("acquire lock exception", e); + } + } + + /** + * 释放锁 + * + * @param key redis key + */ + public void unlock(String key) { + try { + release(key); + } catch (Exception e) { + throw new RuntimeException("release lock exception", e); + } + } + + /** + * @param key redis key + * @param expire 锁过期时间, 单位 秒 + * @param waitTime 获取锁超时时间, -1代表永不超时, 单位 秒 + * @return if true success else fail + * @throws InterruptedException 阻塞方法收到中断请求 + */ + private boolean acquireLock(String key, long expire, long waitTime) throws InterruptedException { + //如果之前获取到了并且没有超时,则返回获取成功 + boolean acquired = acquired(key); + if (acquired) { + return true; + } + long acquireTime = waitTime == -1 ? -1 : waitTime * 1000 + System.currentTimeMillis(); + //同一个进程,对于同一个key锁,只允许先到的去尝试获取。 + // key.intern() 如果常量池中存在当前字符串, 就会直接返回当前字符串. + // 如果常量池中没有此字符串, 会将此字符串放入常量池中后, 再返回 + synchronized (key.intern()) { + String lockId = UUID.randomUUID().toString(); + do { + long before = System.currentTimeMillis(); + boolean hasLock = tryLock(key, expire, lockId); + //获取锁成功 + if (hasLock) { + long after = System.currentTimeMillis(); + Map map = lockMap.get(); + if (map == null) { + map = new HashMap<>(2); + lockMap.set(map); + } + map.put(key, new LockVO(1, lockId, expire * 1000 + before, expire * 1000 + after)); + log.debug("acquire lock {} {} ", key, 1); + return true; + } + Thread.sleep(DEFAULT_ACQUIRE_RESOLUTION_MILLIS); + } while (acquireTime == -1 || acquireTime > System.currentTimeMillis()); + } + log.debug("acquire lock {} fail,because timeout ", key); + return false; + } + + private boolean acquired(String key) { + Map map = lockMap.get(); + if (map == null || map.size() == 0 || !map.containsKey(key)) { + return false; + } + + LockVO vo = map.get(key); + if (vo.beforeExpireTime < System.currentTimeMillis()) { + log.debug("lock {} maybe release, because timeout ", key); + return false; + } + int after = ++vo.count; + log.debug("acquire lock {} {} ", key, after); + return true; + } + + /** + * 释放锁 + * + * @param key redis key + */ + private void release(String key) { + Map map = lockMap.get(); + if (map == null || map.size() == 0 || !map.containsKey(key)) { + return; + } + LockVO vo = map.get(key); + if (vo.afterExpireTime < System.currentTimeMillis()) { + log.debug("release lock {}, because timeout ", key); + map.remove(key); + return; + } + int after = --vo.count; + log.debug("release lock {} {} ", key, after); + if (after > 0) { + return; + } + map.remove(key); + RedisCallback callback = (connection) -> + connection.eval(UNLOCK_LUA.getBytes(StandardCharsets.UTF_8), ReturnType.BOOLEAN, 1, + (key).getBytes(StandardCharsets.UTF_8), vo.lockId.getBytes(StandardCharsets.UTF_8)); + redisTemplate.execute(callback); + } + + /** + * @param key 锁的key + * @param expire 锁的超时时间 秒 + * @param lockId 获取锁后,UUID生成的唯一ID + * @return if true success else fail + */ + private boolean tryLock(String key, long expire, String lockId) { + RedisCallback callback = (connection) -> + connection.set((key).getBytes(StandardCharsets.UTF_8), + lockId.getBytes(StandardCharsets.UTF_8), Expiration.seconds(expire), RedisStringCommands.SetOption.SET_IF_ABSENT); + return (Boolean) redisTemplate.execute(callback); + } + + private static class LockVO { + /** + * 锁重入的次数 + */ + private int count; + + /** + * 获取锁后,UUID生成的唯一ID + */ + private String lockId; + /** + * 获取锁之前的时间戳 + */ + private long beforeExpireTime; + /** + * 获取到锁的时间戳 + */ + private long afterExpireTime; + + LockVO(int count, String lockId, long beforeExpireTime, long afterExpireTime) { + this.count = count; + this.lockId = lockId; + this.beforeExpireTime = beforeExpireTime; + this.afterExpireTime = afterExpireTime; + } + } + +} + diff --git a/file-web/src/main/java/com/qiwenshare/file/advice/CMSException.java b/file-web/src/main/java/com/qiwenshare/file/advice/CMSException.java index f4f898d..76f68d3 100644 --- a/file-web/src/main/java/com/qiwenshare/file/advice/CMSException.java +++ b/file-web/src/main/java/com/qiwenshare/file/advice/CMSException.java @@ -1,6 +1,6 @@ package com.qiwenshare.file.advice; -import com.qiwenshare.common.cbb.ResultCodeEnum; +import com.qiwenshare.common.result.ResultCodeEnum; import lombok.Data; /** diff --git a/file-web/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java b/file-web/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java index 9b526ea..159c90e 100644 --- a/file-web/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java +++ b/file-web/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java @@ -1,7 +1,7 @@ package com.qiwenshare.file.advice; -import com.qiwenshare.common.cbb.RestResult; -import com.qiwenshare.common.cbb.ResultCodeEnum; +import com.qiwenshare.common.result.RestResult; +import com.qiwenshare.common.result.ResultCodeEnum; import com.qiwenshare.common.exception.UploadGeneralException; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; @@ -9,7 +9,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.client.HttpClientErrorException; /** * 该注解为统一异常处理的核心 diff --git a/file-web/src/main/java/com/qiwenshare/file/aop/WebLogAcpect.java b/file-web/src/main/java/com/qiwenshare/file/aop/WebLogAcpect.java index db2ce2d..4f8de71 100644 --- a/file-web/src/main/java/com/qiwenshare/file/aop/WebLogAcpect.java +++ b/file-web/src/main/java/com/qiwenshare/file/aop/WebLogAcpect.java @@ -1,6 +1,6 @@ package com.qiwenshare.file.aop; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.result.RestResult; import com.qiwenshare.file.anno.MyLog; import com.qiwenshare.file.api.IOperationLogService; import com.qiwenshare.file.api.IUserService; diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java b/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java index 23fe23b..3ef2ab9 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IFileService.java @@ -19,7 +19,7 @@ public interface IFileService extends IService { // List selectFileListByPath(FileBean fileBean); - void deleteLocalFile(FileBean fileBean); +// void deleteLocalFile(FileBean fileBean); diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IFiletransferService.java b/file-web/src/main/java/com/qiwenshare/file/api/IFiletransferService.java index 61bee29..a9b37dc 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IFiletransferService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IFiletransferService.java @@ -1,5 +1,6 @@ package com.qiwenshare.file.api; +import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.StorageBean; import com.qiwenshare.file.dto.DownloadFileDTO; import com.qiwenshare.file.dto.UploadFileDTO; @@ -21,7 +22,7 @@ public interface IFiletransferService { void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId); void downloadFile(HttpServletResponse httpServletResponse, DownloadFileDTO downloadFileDTO); - + void deleteFile(FileBean fileBean); StorageBean selectStorageBean(StorageBean storageBean); void insertStorageBean(StorageBean storageBean); diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java b/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java index 9cec3f8..a575b6f 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IUserService.java @@ -1,11 +1,9 @@ package com.qiwenshare.file.api; import com.baomidou.mybatisplus.extension.service.IService; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.result.RestResult; import com.qiwenshare.file.domain.UserBean; -import java.util.List; - public interface IUserService extends IService { UserBean getUserBeanByToken(String token); diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java b/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java index 71b3a8f..335b3c9 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -1,12 +1,16 @@ package com.qiwenshare.file.controller; import com.alibaba.fastjson.JSON; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.CopyObjectResult; +import com.aliyun.oss.model.ObjectMetadata; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.qiwenshare.common.cbb.DateUtil; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.util.DateUtil; +import com.qiwenshare.common.result.RestResult; +import com.qiwenshare.common.domain.AliyunOSS; import com.qiwenshare.common.operation.FileOperation; -import com.qiwenshare.common.oss.AliyunOSSRename; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; import com.qiwenshare.file.anno.MyLog; @@ -168,7 +172,7 @@ public class FileController { String fileUrl = file.getFileUrl(); String newFileUrl = fileUrl.replace(userFile.getFileName(), renameFileDto.getFileName()); - AliyunOSSRename.rename(qiwenFileConfig.getAliyun().getOss(), + rename(qiwenFileConfig.getAliyun().getOss(), fileUrl.substring(1), newFileUrl.substring(1)); LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); @@ -196,6 +200,27 @@ public class FileController { return RestResult.success(); } + private void rename(AliyunOSS aliyunOSS, String sourceObjectName, String destinationObjectName) { + String endpoint = aliyunOSS.getEndpoint(); + String accessKeyId = aliyunOSS.getAccessKeyId(); + String accessKeySecret = aliyunOSS.getAccessKeySecret(); + String bucketName = aliyunOSS.getBucketName(); + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + CopyObjectResult result = ossClient.copyObject(bucketName, sourceObjectName, bucketName, destinationObjectName); + + ossClient.deleteObject(bucketName, sourceObjectName); + ObjectMetadata metadata = new ObjectMetadata(); +// if ("pdf".equals(FileUtil.getFileType(objectName))) { +// metadata.setContentDisposition("attachment"); +// } + +// ossClient.putObject(bucketName, objectName, inputStream, metadata); + + + // 关闭OSSClient。 + ossClient.shutdown(); + } + @Operation(summary = "获取文件列表", description = "用来做前台列表展示", tags = {"file"}) @RequestMapping(value = "/getfilelist", method = RequestMethod.GET) diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index 799c59e..1c5e573 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -1,14 +1,11 @@ package com.qiwenshare.file.controller; -import com.aliyun.oss.OSS; -import com.aliyun.oss.model.OSSObject; import com.github.tobato.fastdfs.proto.storage.DownloadByteArray; import com.github.tobato.fastdfs.service.FastFileStorageClient; -import com.qiwenshare.common.cbb.DateUtil; +import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.operation.FileOperation; -import com.qiwenshare.common.oss.AliyunOSSDownload; import com.qiwenshare.common.util.FileUtil; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.util.PathUtil; import com.qiwenshare.file.anno.MyLog; import com.qiwenshare.file.api.IFileService; @@ -179,35 +176,7 @@ public class FiletransferController { } } - private void aliyunDownload(HttpServletResponse response, FileBean fileBean) { - BufferedInputStream bis = null; - byte[] buffer = new byte[1024]; - AliyunOSSDownload aliyunOSSDownload= new AliyunOSSDownload(); - OSS ossClient = aliyunOSSDownload.createOSSClient(qiwenFileConfig.getAliyun().getOss()); - OSSObject ossObject = ossClient.getObject(qiwenFileConfig.getAliyun().getOss().getBucketName(), fileBean.getTimeStampName()); - InputStream inputStream = ossObject.getObjectContent(); - try { - bis = new BufferedInputStream(inputStream); - OutputStream os = response.getOutputStream(); - int i = bis.read(buffer); - while (i != -1) { - os.write(buffer, 0, i); - i = bis.read(buffer); - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (bis != null) { - try { - bis.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - ossClient.shutdown(); - } public void fastFDSDownload(HttpServletResponse response, FileBean fileBean){ diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java b/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java index 2b8d31e..e5b3d63 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java @@ -3,8 +3,8 @@ package com.qiwenshare.file.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.qiwenshare.common.cbb.DateUtil; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.util.DateUtil; +import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.util.PathUtil; import com.qiwenshare.file.anno.MyLog; import com.qiwenshare.file.api.IRecoveryFileService; diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java b/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java index 53e4762..00e611f 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/ShareController.java @@ -4,8 +4,8 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.qiwenshare.common.cbb.DateUtil; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.util.DateUtil; +import com.qiwenshare.common.result.RestResult; import com.qiwenshare.file.anno.MyLog; import com.qiwenshare.file.api.IShareService; import com.qiwenshare.file.api.IUserService; diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java b/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java index 8c520d3..26a79c4 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java @@ -8,6 +8,7 @@ import com.qiwenshare.file.config.es.FileSearch; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.service.FileService; +import com.qiwenshare.file.service.FiletransferService; import com.qiwenshare.file.service.UserFileService; import com.qiwenshare.file.service.UserService; import com.qiwenshare.file.vo.file.FileListVo; @@ -30,6 +31,8 @@ public class TaskController { FileService fileService; @Resource UserFileService userFileService; + @Resource + FiletransferService filetransferService; @Autowired private IElasticSearchService elasticSearchService; @@ -43,7 +46,7 @@ public class TaskController { for (int i = 0; i < fileBeanList.size(); i++) { FileBean fileBean = fileBeanList.get(i); log.info("删除本地文件:" + JSON.toJSONString(fileBean)); - fileService.deleteLocalFile(fileBean); + filetransferService.deleteFile(fileBean); fileService.removeById(fileBean.getFileId()); } diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java b/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java index 953d2b2..9674e66 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/UserController.java @@ -2,7 +2,7 @@ package com.qiwenshare.file.controller; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.domain.AliyunOSS; import com.qiwenshare.common.util.JjwtUtil; import com.qiwenshare.file.anno.MyLog; diff --git a/file-web/src/main/java/com/qiwenshare/file/service/FileService.java b/file-web/src/main/java/com/qiwenshare/file/service/FileService.java index 281771a..2f70c77 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/FileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/FileService.java @@ -1,12 +1,7 @@ package com.qiwenshare.file.service; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.tobato.fastdfs.service.FastFileStorageClient; -import com.qiwenshare.common.operation.FileOperation; -import com.qiwenshare.common.oss.AliyunOSSDelete; -import com.qiwenshare.common.util.FileUtil; -import com.qiwenshare.common.util.PathUtil; import com.qiwenshare.file.api.IFileService; import com.qiwenshare.common.config.QiwenFileConfig; import com.qiwenshare.file.domain.FileBean; @@ -82,31 +77,31 @@ public class FileService extends ServiceImpl implements IF // .orderByDesc(FileBean::getIsDir); // return fileMapper.selectList(lambdaQueryWrapper); // } - @Override - public void deleteLocalFile(FileBean fileBean) { - log.info("删除本地文件:" + JSON.toJSONString(fileBean)); - //删除服务器文件 - if (fileBean.getFileUrl() != null && fileBean.getFileUrl().indexOf("upload") != -1){ - if (fileBean.getIsOSS() != null && fileBean.getIsOSS() == 1) { - AliyunOSSDelete.deleteObject(qiwenFileConfig.getAliyun().getOss(), fileBean.getFileUrl().substring(1)); - } else if (fileBean.getStorageType() == 0) { - FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl()); - if (FileUtil.isImageFile(FileUtil.getFileExtendName(fileBean.getFileUrl()))) { - FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl().replace(fileBean.getTimeStampName(), fileBean.getTimeStampName() + "_min")); - } - } else if (fileBean.getStorageType() == 1) { - AliyunOSSDelete.deleteObject(qiwenFileConfig.getAliyun().getOss(), fileBean.getFileUrl().substring(1)); - } else if (fileBean.getStorageType() == 2){ - fastFileStorageClient.deleteFile(fileBean.getFileUrl()); - - } else { - FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl()); - if (FileUtil.isImageFile(FileUtil.getFileExtendName(fileBean.getFileUrl()))) { - FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl().replace(fileBean.getTimeStampName(), fileBean.getTimeStampName() + "_min")); - } - } - } - } +// @Override +// public void deleteLocalFile(FileBean fileBean) { +// log.info("删除本地文件:" + JSON.toJSONString(fileBean)); +// //删除服务器文件 +// if (fileBean.getFileUrl() != null && fileBean.getFileUrl().indexOf("upload") != -1){ +// if (fileBean.getIsOSS() != null && fileBean.getIsOSS() == 1) { +// AliyunOSSDelete.deleteObject(qiwenFileConfig.getAliyun().getOss(), fileBean.getFileUrl().substring(1)); +// } else if (fileBean.getStorageType() == 0) { +// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl()); +// if (FileUtil.isImageFile(FileUtil.getFileExtendName(fileBean.getFileUrl()))) { +// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl().replace(fileBean.getTimeStampName(), fileBean.getTimeStampName() + "_min")); +// } +// } else if (fileBean.getStorageType() == 1) { +// AliyunOSSDelete.deleteObject(qiwenFileConfig.getAliyun().getOss(), fileBean.getFileUrl().substring(1)); +// } else if (fileBean.getStorageType() == 2){ +// fastFileStorageClient.deleteFile(fileBean.getFileUrl()); +// +// } else { +// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl()); +// if (FileUtil.isImageFile(FileUtil.getFileExtendName(fileBean.getFileUrl()))) { +// FileOperation.deleteFile(PathUtil.getStaticPath() + fileBean.getFileUrl().replace(fileBean.getTimeStampName(), fileBean.getTimeStampName() + "_min")); +// } +// } +// } +// } diff --git a/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java index 321dac7..2aa8806 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -10,13 +10,15 @@ import javax.servlet.http.HttpServletResponse; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.qiwenshare.common.cbb.DateUtil; +import com.qiwenshare.common.util.DateUtil; +import com.qiwenshare.common.domain.DeleteFile; import com.qiwenshare.common.domain.DownloadFile; import com.qiwenshare.common.domain.UploadFile; //import com.qiwenshare.common.factory.FileOperationFactory; -import com.qiwenshare.common.download.Downloader; +import com.qiwenshare.common.operation.delete.Deleter; +import com.qiwenshare.common.operation.download.Downloader; import com.qiwenshare.common.factory.FileOperationFactory; -import com.qiwenshare.common.upload.Uploader; +import com.qiwenshare.common.operation.upload.Uploader; import com.qiwenshare.file.api.IFiletransferService; @@ -148,6 +150,24 @@ public class FiletransferService implements IFiletransferService { downloader.download(httpServletResponse, uploadFile); } + @Override + public void deleteFile(FileBean fileBean) { + Deleter deleter = null; + if (fileBean.getIsOSS() != null && fileBean.getIsOSS() == 1) { + deleter = aliyunOSSOperationFactory.getDeleter(); + } else if (fileBean.getStorageType() == 0) { + deleter = localStorageOperationFactory.getDeleter(); + } else if (fileBean.getStorageType() == 1) { + deleter = aliyunOSSOperationFactory.getDeleter(); + } else if (fileBean.getStorageType() == 2) { + deleter = fastDFSOperationFactory.getDeleter(); + } + DeleteFile deleteFile = new DeleteFile(); + deleteFile.setFileUrl(fileBean.getFileUrl()); + deleteFile.setTimeStampName(fileBean.getTimeStampName()); + deleter.delete(deleteFile); + } + @Override public StorageBean selectStorageBean(StorageBean storageBean) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); diff --git a/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java b/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java index 859c7b8..b649db7 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java @@ -4,12 +4,11 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.qiwenshare.common.cbb.DateUtil; +import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.util.PathUtil; import com.qiwenshare.file.api.IRecoveryFileService; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.RecoveryFile; -import com.qiwenshare.file.domain.UserBean; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.mapper.FileMapper; import com.qiwenshare.file.mapper.RecoveryFileMapper; diff --git a/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java b/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java index a33a857..19e494b 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -3,7 +3,7 @@ package com.qiwenshare.file.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.qiwenshare.common.cbb.DateUtil; +import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.api.IUserFileService; import com.qiwenshare.common.config.QiwenFileConfig; import com.qiwenshare.file.domain.FileBean; diff --git a/file-web/src/main/java/com/qiwenshare/file/service/UserService.java b/file-web/src/main/java/com/qiwenshare/file/service/UserService.java index b88d36a..5ff2b79 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/UserService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/UserService.java @@ -3,8 +3,8 @@ package com.qiwenshare.file.service; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.qiwenshare.common.cbb.DateUtil; -import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.util.DateUtil; +import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.util.JjwtUtil; import com.qiwenshare.common.util.PasswordUtil; import com.qiwenshare.file.api.IUserService; @@ -15,8 +15,6 @@ import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.crypto.hash.SimpleHash; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; diff --git a/file-web/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java b/file-web/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java index ebc6dcb..4b90f0c 100644 --- a/file-web/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java +++ b/file-web/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java @@ -1,10 +1,9 @@ package com.qiwenshare.file.util; -import com.qiwenshare.common.cbb.CollectUtil; -import com.qiwenshare.common.cbb.DateUtil; +import com.qiwenshare.common.util.CollectUtil; +import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.domain.OperationLogBean; import com.qiwenshare.file.domain.UserBean; -import org.apache.shiro.SecurityUtils; import javax.servlet.http.HttpServletRequest; diff --git a/file-web/src/main/resources/config/application.properties b/file-web/src/main/resources/config/application.properties index 8522145..1f6ca74 100644 --- a/file-web/src/main/resources/config/application.properties +++ b/file-web/src/main/resources/config/application.properties @@ -49,10 +49,10 @@ mybatis-plus.mapper-locations=classpath:mybatis/mapper/*.xml mybatis-plus.configuration.map-underscore-to-camel-case=false mybatis-plus.global-config.banner=false -qiwen-file.remote-login=false qiwen-file.share-mode=false qiwen-file.storage-type=0 +qiwen-file.cache-mode=0 #是否启用阿里云oss #qiwen-file.aliyun.oss.enabled=false