diff --git a/file-common/src/main/java/com/qiwenshare/common/constant/FileConstant.java b/file-common/src/main/java/com/qiwenshare/common/constant/FileConstant.java new file mode 100644 index 0000000..a6051e9 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/constant/FileConstant.java @@ -0,0 +1,9 @@ +package com.qiwenshare.common.constant; + +public class FileConstant { + /** + * 路径分隔符 + */ + public static final String pathSeparator = "/"; + +} diff --git a/file-common/src/main/java/com/qiwenshare/common/exception/NotLoginException.java b/file-common/src/main/java/com/qiwenshare/common/exception/NotLoginException.java new file mode 100644 index 0000000..89a6d2c --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/exception/NotLoginException.java @@ -0,0 +1,18 @@ +package com.qiwenshare.common.exception; + +public class NotLoginException extends RuntimeException{ + public NotLoginException() { + super("未登录"); + } + public NotLoginException(Throwable cause) { + super("未登录", cause); + } + + public NotLoginException(String message) { + super(message); + } + + public NotLoginException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/FileOperation.java b/file-common/src/main/java/com/qiwenshare/common/operation/FileOperation.java index 43ca028..699608d 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/FileOperation.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/FileOperation.java @@ -4,6 +4,7 @@ import com.github.junrar.Archive; import com.github.junrar.rarfile.FileHeader; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +18,7 @@ import java.util.zip.ZipFile; /** * 文件操作 */ +@Slf4j public class FileOperation { private static Logger logger = LoggerFactory.getLogger(FileOperation.class); @@ -343,15 +345,15 @@ public class FileOperation { if (fos != null) { try { fos.close(); - fos = null; } catch (Exception e) { + log.error("关闭流失败:" + e.getMessage()); } } if (archive != null) { try { archive.close(); - archive = null; } catch (Exception e) { + log.error("关闭流失败:" + e.getMessage()); } } } 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 index c86f1d3..cc233b0 100644 --- 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 @@ -1,6 +1,6 @@ package com.qiwenshare.common.operation.delete; -import com.qiwenshare.common.domain.DeleteFile; +import com.qiwenshare.common.operation.delete.domain.DeleteFile; public abstract class Deleter { public abstract void delete(DeleteFile deleteFile); diff --git a/file-common/src/main/java/com/qiwenshare/common/domain/DeleteFile.java b/file-common/src/main/java/com/qiwenshare/common/operation/delete/domain/DeleteFile.java similarity index 68% rename from file-common/src/main/java/com/qiwenshare/common/domain/DeleteFile.java rename to file-common/src/main/java/com/qiwenshare/common/operation/delete/domain/DeleteFile.java index af986ba..5f1f05a 100644 --- a/file-common/src/main/java/com/qiwenshare/common/domain/DeleteFile.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/delete/domain/DeleteFile.java @@ -1,4 +1,4 @@ -package com.qiwenshare.common.domain; +package com.qiwenshare.common.operation.delete.domain; import lombok.Data; 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 index c1a5c6d..5c039ce 100644 --- 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 @@ -4,7 +4,7 @@ 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 com.qiwenshare.common.operation.delete.domain.DeleteFile; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -15,7 +15,6 @@ public class AliyunOSSDeleter extends Deleter { 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(); 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 index da0581c..e24aae9 100644 --- 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 @@ -2,7 +2,7 @@ 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 com.qiwenshare.common.operation.delete.domain.DeleteFile; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; 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 index f108366..8043d08 100644 --- 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 @@ -1,7 +1,7 @@ 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.delete.domain.DeleteFile; import com.qiwenshare.common.operation.FileOperation; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/download/Downloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/Downloader.java index c8793e4..ab67fa8 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/download/Downloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/Downloader.java @@ -1,6 +1,6 @@ package com.qiwenshare.common.operation.download; -import com.qiwenshare.common.domain.DownloadFile; +import com.qiwenshare.common.operation.download.domain.DownloadFile; import javax.servlet.http.HttpServletResponse; diff --git a/file-common/src/main/java/com/qiwenshare/common/domain/DownloadFile.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/domain/DownloadFile.java similarity index 68% rename from file-common/src/main/java/com/qiwenshare/common/domain/DownloadFile.java rename to file-common/src/main/java/com/qiwenshare/common/operation/download/domain/DownloadFile.java index 357bf4e..02e690e 100644 --- a/file-common/src/main/java/com/qiwenshare/common/domain/DownloadFile.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/domain/DownloadFile.java @@ -1,4 +1,4 @@ -package com.qiwenshare.common.domain; +package com.qiwenshare.common.operation.download.domain; import lombok.Data; diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/download/product/AliyunOSSDownloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/AliyunOSSDownloader.java index 3773310..3284ad8 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/download/product/AliyunOSSDownloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/AliyunOSSDownloader.java @@ -5,7 +5,7 @@ import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.OSSObject; import com.qiwenshare.common.config.QiwenFileConfig; import com.qiwenshare.common.domain.AliyunOSS; -import com.qiwenshare.common.domain.DownloadFile; +import com.qiwenshare.common.operation.download.domain.DownloadFile; import com.qiwenshare.common.operation.download.Downloader; import org.springframework.stereotype.Component; diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/download/product/FastDFSDownloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/FastDFSDownloader.java index 7d661b1..37afcc7 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/download/product/FastDFSDownloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/FastDFSDownloader.java @@ -2,7 +2,7 @@ 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.operation.download.domain.DownloadFile; import com.qiwenshare.common.operation.download.Downloader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -33,8 +33,10 @@ public class FastDFSDownloader extends Downloader { e.printStackTrace(); } finally { try { - outputStream.flush(); - outputStream.close(); + if (outputStream != null) { + outputStream.flush(); + outputStream.close(); + } } catch (IOException e) { e.printStackTrace(); } diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/download/product/LocalStorageDownloader.java b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/LocalStorageDownloader.java index 8b5063d..f424c9d 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/download/product/LocalStorageDownloader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/download/product/LocalStorageDownloader.java @@ -1,6 +1,6 @@ package com.qiwenshare.common.operation.download.product; -import com.qiwenshare.common.domain.DownloadFile; +import com.qiwenshare.common.operation.download.domain.DownloadFile; import com.qiwenshare.common.operation.FileOperation; import com.qiwenshare.common.operation.download.Downloader; import com.qiwenshare.common.util.PathUtil; diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java index ead1d46..e7647e6 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/Uploader.java @@ -1,11 +1,9 @@ package com.qiwenshare.common.operation.upload; -import com.qiwenshare.common.config.PropertiesUtil; -import com.qiwenshare.common.domain.UploadFile; +import com.qiwenshare.common.operation.upload.domain.UploadFile; import com.qiwenshare.common.util.PathUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; import javax.servlet.http.HttpServletRequest; import java.io.File; @@ -16,7 +14,6 @@ import java.security.SecureRandom; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import java.util.ResourceBundle; @Slf4j public abstract class Uploader { @@ -30,11 +27,11 @@ public abstract class Uploader { public abstract List upload(HttpServletRequest request, UploadFile uploadFile); /** - * 根据字符串创建本地目录 并按照日期建立子目录返回 + * 获取本地文件保存路径 * * @return */ - protected String getSaveFilePath() { + protected String getLocalFileSavePath() { String path = ROOT_PATH; SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd"); diff --git a/file-common/src/main/java/com/qiwenshare/common/domain/UploadFile.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/domain/UploadFile.java similarity index 91% rename from file-common/src/main/java/com/qiwenshare/common/domain/UploadFile.java rename to file-common/src/main/java/com/qiwenshare/common/operation/upload/domain/UploadFile.java index faba858..220417f 100644 --- a/file-common/src/main/java/com/qiwenshare/common/domain/UploadFile.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/domain/UploadFile.java @@ -1,4 +1,4 @@ -package com.qiwenshare.common.domain; +package com.qiwenshare.common.operation.upload.domain; import lombok.Data; diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/AliyunOSSUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/AliyunOSSUploader.java index a330506..7d6ff6d 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/AliyunOSSUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/AliyunOSSUploader.java @@ -5,17 +5,14 @@ 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.UploadFile; +import com.qiwenshare.common.operation.upload.domain.UploadFile; import com.qiwenshare.common.exception.UploadGeneralException; import com.qiwenshare.common.operation.upload.Uploader; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; import lombok.Data; -import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.fileupload.servlet.ServletFileUpload; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; @@ -23,11 +20,10 @@ import org.springframework.web.multipart.support.StandardMultipartHttpServletReq import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.File; -import java.io.InputStream; import java.util.*; +@Slf4j @Component public class AliyunOSSUploader extends Uploader { - private static final Logger logger = LoggerFactory.getLogger(AliyunOSSUploader.class); @Resource QiwenFileConfig qiwenFileConfig; @@ -40,7 +36,7 @@ public class AliyunOSSUploader extends Uploader { @Override public List upload(HttpServletRequest httpServletRequest, UploadFile uploadFile) { - logger.info("开始上传upload"); + log.info("开始上传upload"); List saveUploadFileList = new ArrayList<>(); StandardMultipartHttpServletRequest request = (StandardMultipartHttpServletRequest) httpServletRequest; @@ -57,12 +53,12 @@ public class AliyunOSSUploader extends Uploader { } - logger.info("结束上传"); + log.info("结束上传"); return saveUploadFileList; } private List doUpload(StandardMultipartHttpServletRequest standardMultipartHttpServletRequest, Iterator iter, UploadFile uploadFile) { - String savePath = getSaveFilePath(); + String savePath = getLocalFileSavePath(); OSS ossClient = getClient(uploadFile); List saveUploadFileList = new ArrayList<>(); @@ -105,11 +101,11 @@ public class AliyunOSSUploader extends Uploader { uploadPartRequest.setInputStream(multipartfile.getInputStream()); uploadPartRequest.setPartSize(uploadFile.getCurrentChunkSize()); uploadPartRequest.setPartNumber(uploadFile.getChunkNumber()); - logger.info(JSON.toJSONString(uploadPartRequest)); + log.info(JSON.toJSONString(uploadPartRequest)); UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest); synchronized (AliyunOSSUploader.class) { - logger.info("上传结果:" + JSON.toJSONString(uploadPartResult)); + log.info("上传结果:" + JSON.toJSONString(uploadPartResult)); if (partETagsMap.get(uploadFile.getIdentifier()) == null) { List partETags = new ArrayList(); partETags.add(uploadPartResult.getPartETag()); @@ -121,7 +117,7 @@ public class AliyunOSSUploader extends Uploader { boolean isComplete = checkUploadStatus(uploadFile, confFile); if (isComplete) { - logger.info("分片上传完成"); + log.info("分片上传完成"); completeMultipartUpload(uploadFile); uploadFile.setUrl("/" + uploadPartRequestMap.get(uploadFile.getIdentifier()).getKey()); @@ -136,7 +132,7 @@ public class AliyunOSSUploader extends Uploader { } } catch (Exception e) { - logger.error("上传出错:" + e); + log.error("上传出错:" + e); throw new UploadGeneralException(e); } @@ -161,10 +157,10 @@ public class AliyunOSSUploader extends Uploader { uploadFileInfo.getKey(), uploadFileInfo.getUploadId(), partETags); - logger.info("----:" + JSON.toJSONString(partETags)); + log.info("----:" + JSON.toJSONString(partETags)); // 完成上传。 CompleteMultipartUploadResult completeMultipartUploadResult = getClient(uploadFile).completeMultipartUpload(completeMultipartUploadRequest); - logger.info("----:" + JSON.toJSONString(completeMultipartUploadRequest)); + log.info("----:" + JSON.toJSONString(completeMultipartUploadRequest)); getClient(uploadFile).shutdown(); // @@ -182,7 +178,7 @@ public class AliyunOSSUploader extends Uploader { PartListing partListing = getClient(uploadFile).listParts(listPartsRequest); for (PartSummary part : partListing.getParts()) { - logger.info("分片号:"+part.getPartNumber() + ", 分片数据大小: "+ + log.info("分片号:"+part.getPartNumber() + ", 分片数据大小: "+ part.getSize() + ",分片的ETag:"+part.getETag() + ", 分片最后修改时间:"+ part.getLastModified()); // 获取分片号。 diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/FastDFSUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/FastDFSUploader.java index 1924a3d..9677a3b 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/FastDFSUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/FastDFSUploader.java @@ -2,7 +2,7 @@ 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.operation.upload.domain.UploadFile; import com.qiwenshare.common.exception.UploadGeneralException; import com.qiwenshare.common.operation.upload.Uploader; import com.qiwenshare.common.util.FileUtil; @@ -42,7 +42,7 @@ public class FastDFSUploader extends Uploader { throw new UploadGeneralException("未包含文件上传域"); } DiskFileItemFactory dff = new DiskFileItemFactory();//1、创建工厂 - String savePath = getSaveFilePath(); + String savePath = getLocalFileSavePath(); dff.setRepository(new File(savePath)); try { diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/LocalStorageUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/LocalStorageUploader.java index b5c1353..d9d25b2 100644 --- a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/LocalStorageUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/LocalStorageUploader.java @@ -1,14 +1,13 @@ package com.qiwenshare.common.operation.upload.product; import com.qiwenshare.common.exception.NotSameFileExpection; -import com.qiwenshare.common.domain.UploadFile; +import com.qiwenshare.common.operation.upload.domain.UploadFile; import com.qiwenshare.common.exception.UploadGeneralException; import com.qiwenshare.common.operation.ImageOperation; 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; -import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -27,16 +26,6 @@ import java.util.List; import java.util.UUID; @Component public class LocalStorageUploader extends Uploader { - private static final Logger logger = LoggerFactory.getLogger(LocalStorageUploader.class); -// private UploadFile uploadFile; - - public LocalStorageUploader() { - - } -// -// public ChunkUploader(UploadFile uploadFile) { -// this.uploadFile = uploadFile; -// } @Override public List upload(HttpServletRequest httpServletRequest,UploadFile uploadFile) { @@ -46,17 +35,12 @@ public class LocalStorageUploader extends Uploader { if (!isMultipart) { throw new UploadGeneralException("未包含文件上传域"); } - //DiskFileItemFactory dff = new DiskFileItemFactory();//1、创建工厂 - String savePath = getSaveFilePath(); - //dff.setRepository(new File(savePath)); try { - //ServletFileUpload sfu = new ServletFileUpload(dff);//2、创建文件上传解析器 - //sfu.setSizeMax(this.maxSize * 1024L); - // sfu.setHeaderEncoding("utf-8");//3、解决文件名的中文乱码 + Iterator iter = standardMultipartHttpServletRequest.getFileNames(); while (iter.hasNext()) { - saveUploadFileList = doUpload(standardMultipartHttpServletRequest, savePath, iter, uploadFile); + saveUploadFileList = doUpload(standardMultipartHttpServletRequest, iter, uploadFile); } } catch (IOException e) { throw new UploadGeneralException("未包含文件上传域"); @@ -66,7 +50,8 @@ public class LocalStorageUploader extends Uploader { return saveUploadFileList; } - private List doUpload(StandardMultipartHttpServletRequest standardMultipartHttpServletRequest, String savePath, Iterator iter, UploadFile uploadFile) throws IOException, NotSameFileExpection { + private List doUpload(StandardMultipartHttpServletRequest standardMultipartHttpServletRequest, Iterator iter, UploadFile uploadFile) throws IOException, NotSameFileExpection { + String savePath = getLocalFileSavePath(); List saveUploadFileList = new ArrayList(); MultipartFile multipartfile = standardMultipartHttpServletRequest.getFile(iter.next()); @@ -92,7 +77,7 @@ public class LocalStorageUploader extends Uploader { uploadFile.setStorageType(0); uploadFile.setUrl(saveFilePath); - if (StringUtils.isEmpty(uploadFile.getTaskId())) {// == null || "".equals(uploadFile.getTaskId())) { + if (StringUtils.isEmpty(uploadFile.getTaskId())) { uploadFile.setTaskId(UUID.randomUUID().toString()); } diff --git a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/NormalUploader.java b/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/NormalUploader.java deleted file mode 100644 index c89c2ad..0000000 --- a/file-common/src/main/java/com/qiwenshare/common/operation/upload/product/NormalUploader.java +++ /dev/null @@ -1,136 +0,0 @@ -//package com.qiwenshare.common.upload.product; -// -//import com.qiwenshare.common.domain.UploadFile; -//import com.qiwenshare.common.operation.ImageOperation; -//import com.qiwenshare.common.upload.Uploader; -//import com.qiwenshare.common.util.FileUtil; -//import com.qiwenshare.common.util.PathUtil; -//import org.apache.commons.fileupload.disk.DiskFileItemFactory; -//import org.apache.commons.fileupload.servlet.ServletFileUpload; -//import org.apache.commons.fileupload.util.Streams; -//import org.apache.commons.lang3.StringUtils; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.web.multipart.MultipartFile; -//import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; -// -//import javax.servlet.http.HttpServletRequest; -//import java.io.*; -//import java.util.ArrayList; -//import java.util.Iterator; -//import java.util.List; -// -//public class NormalUploader extends Uploader { -// private static final Logger logger = LoggerFactory.getLogger(NormalUploader.class); -// -// @Override -// public List upload(HttpServletRequest httpServletRequest) { -// List saveUploadFileList = new ArrayList(); -// this.request = (StandardMultipartHttpServletRequest) httpServletRequest; -// boolean isMultipart = ServletFileUpload.isMultipartContent(this.request); -// if (!isMultipart) { -// 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)); -// -// try { -// ServletFileUpload sfu = new ServletFileUpload(dff);//2、创建文件上传解析器 -// sfu.setSizeMax(this.maxSize * 1024L); -// sfu.setHeaderEncoding("utf-8");//3、解决文件名的中文乱码 -// Iterator iter = this.request.getFileNames(); -// while (iter.hasNext()) { -// saveUploadFileList = doUpload(savePath, iter); -// } -// } catch (IOException e) { -// UploadFile uploadFile = new UploadFile(); -// uploadFile.setSuccess(1); -// uploadFile.setMessage("未知错误"); -// saveUploadFileList.add(uploadFile); -// e.printStackTrace(); -// } -// -// return saveUploadFileList; -// } -// -// private List doUpload(String savePath, Iterator iter) throws IOException { -// List saveUploadFileList = new ArrayList(); -// UploadFile uploadFile = new UploadFile(); -// MultipartFile multipartfile = this.request.getFile(iter.next()); -// -// InputStream inputStream = multipartfile.getInputStream(); -// String timeStampName = getTimeStampName(); -// -// -// String originalName = multipartfile.getOriginalFilename(); -// -// String fileName = getFileName(originalName); -// -// String fileType = FileUtil.getFileExtendName(originalName); -// uploadFile.setFileName(fileName); -// uploadFile.setFileType(fileType); -// uploadFile.setTimeStampName(timeStampName); -// -// String saveFilePath = savePath + FILE_SEPARATOR + timeStampName; -// String minFilePath = savePath + FILE_SEPARATOR + timeStampName; -// if (StringUtils.isNotEmpty(fileType)) { -// saveFilePath += "." + fileType; -// minFilePath += "_min" + "." + fileType; -// } -// -// File file = new File(PathUtil.getStaticPath() + FILE_SEPARATOR + saveFilePath); -// File minFile = new File(PathUtil.getStaticPath() + FILE_SEPARATOR + minFilePath); -// -// uploadFile.setIsOSS(0); -// uploadFile.setStorageType(0); -// uploadFile.setUrl(saveFilePath); -// BufferedInputStream in = null; -// FileOutputStream out = null; -// BufferedOutputStream output = null; -// -// try { -// in = new BufferedInputStream(inputStream); -// out = new FileOutputStream(file); -// output = new BufferedOutputStream(out); -// Streams.copy(in, output, true); -// if (FileUtil.isImageFile(uploadFile.getFileType())){ -// ImageOperation.thumbnailsImage(file, minFile, 300); -// } -// -// } catch (FileNotFoundException e) { -// logger.error("文件没有发现" + e); -// } catch (IOException e) { -// logger.error("文件读取失败" + e); -// } finally { -// -// closeStream(in, out, output); -// } -// -// -// -// uploadFile.setSuccess(1); -// uploadFile.setMessage("上传成功"); -// uploadFile.setFileSize(request.getContentLengthLong()); -// saveUploadFileList.add(uploadFile); -// return saveUploadFileList; -// } -// -// -// private void closeStream(BufferedInputStream in, FileOutputStream out, -// BufferedOutputStream output) throws IOException { -// if (in != null) { -// in.close(); -// } -// if (out != null) { -// out.close(); -// } -// if (output != null) { -// output.close(); -// } -// } -//} diff --git a/file-common/src/main/java/com/qiwenshare/common/result/ResultCodeEnum.java b/file-common/src/main/java/com/qiwenshare/common/result/ResultCodeEnum.java index 613416c..46ac16a 100644 --- a/file-common/src/main/java/com/qiwenshare/common/result/ResultCodeEnum.java +++ b/file-common/src/main/java/com/qiwenshare/common/result/ResultCodeEnum.java @@ -13,6 +13,7 @@ public enum ResultCodeEnum { NULL_POINT(false, 20003, "空指针异常"), INDEX_OUT_OF_BOUNDS(false, 20004, "下标越界异常"), REQUEST_TIMEOUT(false, 20005, "请求超时"), + NOT_LOGIN_ERROR(false, 20006, "未登录异常"), ; // 响应是否成功 diff --git a/file-common/src/main/java/com/qiwenshare/common/util/FileUtil.java b/file-common/src/main/java/com/qiwenshare/common/util/FileUtil.java index 47f5340..a55bd7b 100644 --- a/file-common/src/main/java/com/qiwenshare/common/util/FileUtil.java +++ b/file-common/src/main/java/com/qiwenshare/common/util/FileUtil.java @@ -76,7 +76,6 @@ public class FileUtil { public static String getFileExtendName(String fileName) { if (fileName.lastIndexOf(".") == -1) { return ""; - //这里暂时用jpg,后续应该去获取真实的文件类型 } return fileName.substring(fileName.lastIndexOf(".") + 1); } diff --git a/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java b/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java index 766f8c7..4702afb 100644 --- a/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java +++ b/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java @@ -66,25 +66,6 @@ public class PathUtil { } - /** - * 依据原始文件名生成新文件名 - * - * @return - */ - public static String getFileName(String fileName) { - String getfileName = ""; - try { - SecureRandom number = SecureRandom.getInstance("SHA1PRNG"); - return getfileName = "" + number.nextInt(10000) - + System.currentTimeMillis() + getFileExt(fileName); - } catch (NoSuchAlgorithmException e) { - //LOG.error("生成安全随机数失败"); - } - return getfileName = "" - + System.currentTimeMillis() + getFileExt(fileName); - - } - /** * 获取文件扩展名 * 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 159c90e..93a41a2 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,5 +1,6 @@ package com.qiwenshare.file.advice; +import com.qiwenshare.common.exception.NotLoginException; import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.result.ResultCodeEnum; import com.qiwenshare.common.exception.UploadGeneralException; @@ -58,6 +59,16 @@ public class GlobalExceptionHandlerAdvice { return RestResult.setResult(ResultCodeEnum.REQUEST_TIMEOUT); } + @ExceptionHandler(NotLoginException.class) + @ResponseBody + @ResponseStatus(HttpStatus.UNAUTHORIZED) + public RestResult error(NotLoginException e) { + e.printStackTrace(); + log.error("全局异常捕获:" + e); + return RestResult.setResult(ResultCodeEnum.NOT_LOGIN_ERROR); + } + + /**-------- 自定义定异常处理方法 --------**/ @ExceptionHandler(CMSException.class) @ResponseBody 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 ab1374a..dc2f432 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 @@ -7,6 +7,7 @@ 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.exception.NotLoginException; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.domain.AliyunOSS; @@ -82,7 +83,9 @@ public class FileController { } UserBean sessionUserBean = userService.getUserBeanByToken(token); - + if (sessionUserBean == null) { + throw new NotLoginException(); + } List userFiles = userFileService.selectUserFileByNameAndPath(createFileDto.getFileName(), createFileDto.getFilePath(), sessionUserBean.getUserId()); if (userFiles != null && !userFiles.isEmpty()) { return RestResult.fail().message("同名文件已存在"); @@ -146,13 +149,16 @@ public class FileController { return operationCheck(token); } UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } UserFile userFile = userFileService.getById(renameFileDto.getUserFileId()); List userFiles = userFileService.selectUserFileByNameAndPath(renameFileDto.getFileName(), renameFileDto.getFilePath(), sessionUserBean.getUserId()); if (userFiles != null && !userFiles.isEmpty()) { return RestResult.fail().message("同名文件已存在"); - } + if (1 == userFile.getIsDir()) { LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.set(UserFile::getFileName, renameFileDto.getFileName()) @@ -228,6 +234,9 @@ public class FileController { userFile.setUserId(2L); }else { UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } if (userFile == null) { return RestResult.fail(); @@ -271,6 +280,9 @@ public class FileController { return operationCheck(token); } UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } List userFiles = JSON.parseArray(batchDeleteFileDto.getFiles(), UserFile.class); DigestUtils.md5Hex("data"); for (UserFile userFile : userFiles) { @@ -293,7 +305,9 @@ public class FileController { } UserBean sessionUserBean = userService.getUserBeanByToken(token); - + if (sessionUserBean == null) { + throw new NotLoginException(); + } userFileService.deleteUserFile(deleteFileDto.getUserFileId(), sessionUserBean.getUserId()); @@ -310,7 +324,10 @@ public class FileController { if (!operationCheck(token).getSuccess()){ return operationCheck(token); } - + UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } String zipFileUrl = PathUtil.getStaticPath() + unzipFileDto.getFileUrl(); File file = FileOperation.newFile(zipFileUrl); String unzipUrl = file.getParent(); @@ -336,7 +353,7 @@ public class FileController { } List fileBeanList = new ArrayList<>(); - UserBean sessionUserBean = userService.getUserBeanByToken(token); + log.info("解压缩文件数量:" + fileBeanList); for (int i = 0; i < fileEntryNameList.size(); i++){ @@ -376,10 +393,7 @@ public class FileController { userFileService.save(userFile); }); - //fileBeanList.add(tempFileBean); } - -// fileService.batchInsertFile(fileBeanList, sessionUserBean.getUserId()); return RestResult.success(); } @@ -396,6 +410,9 @@ public class FileController { } UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } String oldfilePath = moveFileDto.getOldFilePath(); String newfilePath = moveFileDto.getFilePath(); String fileName = moveFileDto.getFileName(); @@ -416,7 +433,9 @@ public class FileController { return operationCheck(token); } UserBean sessionUserBean = userService.getUserBeanByToken(token); - + if (sessionUserBean == null) { + throw new NotLoginException(); + } String files = batchMoveFileDto.getFiles(); String newfilePath = batchMoveFileDto.getFilePath(); @@ -455,6 +474,9 @@ public class FileController { public RestResult>> selectFileByFileType(int fileType, Long currentPage, Long pageCount, @RequestHeader("token") String token) { UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } long userId = sessionUserBean.getUserId(); if (qiwenFileConfig.isShareMode()){ userId = 2; @@ -494,10 +516,13 @@ public class FileController { @Operation(summary = "获取文件树", description = "文件移动的时候需要用到该接口,用来展示目录树", tags = {"file"}) @RequestMapping(value = "/getfiletree", method = RequestMethod.GET) @ResponseBody - public RestResult getFileTree(@RequestHeader("token") String token){ + public RestResult getFileTree(@RequestHeader("token") String token) { RestResult result = new RestResult(); UserFile userFile = new UserFile(); UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } if (qiwenFileConfig.isShareMode()){ userFile.setUserId(2L); }else{ 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 7a7a3b1..0824fc3 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,6 +1,7 @@ package com.qiwenshare.file.controller; import com.qiwenshare.common.config.QiwenFileConfig; +import com.qiwenshare.common.exception.NotLoginException; import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.util.FileUtil; @@ -56,10 +57,10 @@ public class FiletransferController { public RestResult uploadFileSpeed(UploadFileDTO uploadFileDto, @RequestHeader("token") String token) { UserBean sessionUserBean = userService.getUserBeanByToken(token); - if (sessionUserBean == null){ - - return RestResult.fail().message("未登录"); + if (sessionUserBean == null) { + throw new NotLoginException(); } + RestResult operationCheckResult = fileController.operationCheck(token); if (!operationCheckResult.getSuccess()){ return RestResult.fail().message("没权限,请联系管理员!"); @@ -108,8 +109,8 @@ public class FiletransferController { public RestResult uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDto, @RequestHeader("token") String token) { UserBean sessionUserBean = userService.getUserBeanByToken(token); - if (sessionUserBean == null){ - return RestResult.fail().message("未登录"); + if (sessionUserBean == null) { + throw new NotLoginException(); } RestResult operationCheckResult = fileController.operationCheck(token); if (!operationCheckResult.getSuccess()){ @@ -141,6 +142,9 @@ public class FiletransferController { public RestResult getStorage(@RequestHeader("token") String token) { UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } StorageBean storageBean = new StorageBean(); if (qiwenFileConfig.isShareMode()){ storageBean.setUserId(2L); 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 65d5dfa..6b7a66c 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,6 +3,7 @@ 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.exception.NotLoginException; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.util.PathUtil; @@ -43,6 +44,10 @@ public class RecoveryFileController { @RequestMapping(value = "/deleterecoveryfile", method = RequestMethod.POST) @ResponseBody public RestResult deleteRecoveryFile(@RequestBody DeleteRecoveryFileDTO deleteRecoveryFileDTO, @RequestHeader("token") String token) { + UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } RecoveryFile recoveryFile = recoveryFileService.getById(deleteRecoveryFileDTO.getRecoveryFileId()); UserFile userFile =userFileService.getById(recoveryFile.getUserFileId()); @@ -58,7 +63,10 @@ public class RecoveryFileController { @MyLog(operation = "批量删除回收文件", module = CURRENT_MODULE) @ResponseBody public RestResult batchDeleteRecoveryFile(@RequestBody BatchDeleteRecoveryFileDTO batchDeleteRecoveryFileDTO, @RequestHeader("token") String token) { - + UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } List recoveryFileList = JSON.parseArray(batchDeleteRecoveryFileDTO.getRecoveryFileIds(), RecoveryFile.class); for (RecoveryFile recoveryFile : recoveryFileList) { @@ -75,6 +83,10 @@ public class RecoveryFileController { @RequestMapping(value = "/list", method = RequestMethod.POST) @ResponseBody public RestResult> getRecoveryFileList(@RequestHeader("token") String token) { + UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } RestResult> restResult = new RestResult>(); List recoveryFileList = recoveryFileService.selectRecoveryFileList(); restResult.setData(recoveryFileList); @@ -89,6 +101,9 @@ public class RecoveryFileController { @ResponseBody public RestResult restoreFile(@RequestBody RestoreFileDTO restoreFileDto, @RequestHeader("token") String token) { UserBean sessionUserBean = userService.getUserBeanByToken(token); + if (sessionUserBean == null) { + throw new NotLoginException(); + } recoveryFileService.restorefile(restoreFileDto.getDeleteBatchNum(), restoreFileDto.getFilePath(), sessionUserBean.getUserId()); return RestResult.success().message("还原成功!"); } 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 6ff137a..aad26c1 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 @@ -71,18 +71,23 @@ public class ShareController { List saveFileList = new ArrayList<>(); for (ShareFile shareFile : fileList) { UserFile userFile = userFileService.getById(shareFile.getUserFileId()); + if (userFile.getUserId() != sessionUserBean.getUserId()) { + return RestResult.fail().message("您只能分享自己的文件"); + } if (userFile.getIsDir() == 1) { - List userfileList = userFileService.selectFileListLikeRightFilePath(userFile.getFilePath(), sessionUserBean.getUserId()); + List userfileList = userFileService.selectFileListLikeRightFilePath(userFile.getFilePath() + userFile.getFileName() + "/", sessionUserBean.getUserId()); for (UserFile userFile1 : userfileList) { ShareFile shareFile1 = new ShareFile(); shareFile1.setUserFileId(userFile1.getUserFileId()); shareFile1.setShareBatchNum(uuid); + shareFile1.setShareFilePath(userFile1.getFilePath().replaceFirst(userFile.getFilePath(), "/")); saveFileList.add(shareFile1); } - } else { - shareFile.setShareBatchNum(uuid); - saveFileList.add(shareFile); } + shareFile.setShareFilePath("/"); + shareFile.setShareBatchNum(uuid); + saveFileList.add(shareFile); + } shareService.batchInsertShareFile(saveFileList); @@ -123,20 +128,13 @@ public class ShareController { return RestResult.success(); } - public static void main(String[] args) { - String sss = "[{\"fileId\":null,\"timeStampName\":null,\"fileUrl\":null,\"fileSize\":null,\"isOSS\":null,\"storageType\":null,\"pointCount\":null,\"identifier\":null,\"userFileId\":619,\"userId\":2,\"fileName\":\"2222\",\"filePath\":\"/\",\"extendName\":null,\"isDir\":1,\"uploadTime\":\"2021-03-15 22:16:26\",\"deleteFlag\":0,\"deleteTime\":null,\"deleteBatchNum\":null}]"; - List fileList = JSON.parseArray(sss, ShareFile.class); - fileList.forEach(p->p.setShareBatchNum("123")); - System.out.println(fileList); - - } - @Operation(summary = "分享列表", description = "分享列表", tags = {"share"}) @GetMapping(value = "/sharefileList") @ResponseBody public RestResult> shareFileListBySecret(ShareFileListBySecretDTO shareFileListBySecretDTO) { - log.info(JSON.toJSONString(shareFileListBySecretDTO)); - List list = shareService.selectShareFileList(shareFileListBySecretDTO.getShareBatchNum(), shareFileListBySecretDTO.getFilePath()); + String shareBatchNum = shareFileListBySecretDTO.getShareBatchNum(); + String shareFilePath = shareFileListBySecretDTO.getShareFilePath(); + List list = shareService.selectShareFileList(shareBatchNum, shareFilePath); return RestResult.success().data(list); } @@ -157,7 +155,6 @@ public class ShareController { @GetMapping(value = "/checkextractioncode") @ResponseBody public RestResult checkExtractionCode(CheckExtractionCodeDTO checkExtractionCodeDTO) { -// log.info(JSON.toJSONString(shareFileListBySecretDTO)); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Share::getShareBatchNum, checkExtractionCodeDTO.getShareBatchNum()) .eq(Share::getExtractionCode, checkExtractionCodeDTO.getExtractionCode()); diff --git a/file-web/src/main/java/com/qiwenshare/file/domain/ShareFile.java b/file-web/src/main/java/com/qiwenshare/file/domain/ShareFile.java index 79a151a..5830a42 100644 --- a/file-web/src/main/java/com/qiwenshare/file/domain/ShareFile.java +++ b/file-web/src/main/java/com/qiwenshare/file/domain/ShareFile.java @@ -18,5 +18,6 @@ public class ShareFile { private Long shareFileId; private String shareBatchNum; private Long userFileId; + private String shareFilePath; } diff --git a/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/SaveShareFileDTO.java b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/SaveShareFileDTO.java index a7997a4..0b5ce6b 100644 --- a/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/SaveShareFileDTO.java +++ b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/SaveShareFileDTO.java @@ -6,7 +6,7 @@ import lombok.Data; @Data @Schema(name = "保存分享文件DTO",required = true) public class SaveShareFileDTO { - @Schema(description="文件集合") + @Schema(description="文件集合", example = "[{\"userFileId\":12},{\"userFileId\":13}]") private String files; @Schema(description = "文件路径") private String filePath; diff --git a/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListBySecretDTO.java b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListBySecretDTO.java index ae6e66b..22c6c31 100644 --- a/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListBySecretDTO.java +++ b/file-web/src/main/java/com/qiwenshare/file/dto/sharefile/ShareFileListBySecretDTO.java @@ -9,10 +9,8 @@ public class ShareFileListBySecretDTO { @Schema(description="批次号") private String shareBatchNum; - @Schema(description="提取码") - private String extractionCode; - @Schema(description="文件路径") - private String filePath; + @Schema(description="分享文件路径") + private String shareFilePath; diff --git a/file-web/src/main/java/com/qiwenshare/file/interceptor/AuthenticationInterceptor.java b/file-web/src/main/java/com/qiwenshare/file/interceptor/AuthenticationInterceptor.java index 85fe2dc..5f2c2ce 100644 --- a/file-web/src/main/java/com/qiwenshare/file/interceptor/AuthenticationInterceptor.java +++ b/file-web/src/main/java/com/qiwenshare/file/interceptor/AuthenticationInterceptor.java @@ -1,57 +1,56 @@ -//package com.qiwenshare.file.interceptor; -// -//import com.qiwenshare.file.api.IUserService; -//import com.qiwenshare.file.domain.UserBean; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.http.HttpHeaders; -//import org.springframework.web.servlet.HandlerInterceptor; -//import org.springframework.web.servlet.ModelAndView; -// -//import javax.servlet.http.HttpServletRequest; -//import javax.servlet.http.HttpServletResponse; -// -///** -// * token验证拦截 -// */ -//@Slf4j -//public class AuthenticationInterceptor implements HandlerInterceptor { -// @Autowired -// private IUserService userService; -// @Override -// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) -// throws Exception { -// log.info("---------------------------------------------------------"); -// // 取得token -// String tokenHeader = request.getHeader(HttpHeaders.AUTHORIZATION); -// if (tokenHeader == null || "".equals(tokenHeader)) { -// throw new Exception("token不存在"); -// } -// if (!tokenHeader.startsWith("Bearer")) { -// throw new Exception("token格式错误"); -// } -// String token = tokenHeader.replace("Bearer", ""); -// UserBean userBean = userService.getUserBeanByToken(token); -// if (userBean == null) { -// return false; -// } -// -// return true; -// } -// -// @Override -// public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, -// ModelAndView modelAndView) throws Exception { -// // TODO Auto-generated method stub -// -// } -// -// @Override -// public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) -// throws Exception { -// // TODO Auto-generated method stub -// -// } -// -//} -// \ No newline at end of file +package com.qiwenshare.file.interceptor; + +import com.qiwenshare.file.api.IUserService; +import com.qiwenshare.file.domain.UserBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * token验证拦截 + */ +@Slf4j +public class AuthenticationInterceptor implements HandlerInterceptor { + @Autowired + private IUserService userService; + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + log.info("---------------------------------------------------------"); + // 取得token + String tokenHeader = request.getHeader(HttpHeaders.AUTHORIZATION); + if (tokenHeader == null || "".equals(tokenHeader)) { + throw new Exception("token不存在"); + } + if (!tokenHeader.startsWith("Bearer")) { + throw new Exception("token格式错误"); + } + String token = tokenHeader.replace("Bearer", ""); + UserBean userBean = userService.getUserBeanByToken(token); + if (userBean == null) { + return false; + } + + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + // TODO Auto-generated method stub + + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) + throws Exception { + // TODO Auto-generated method stub + + } + +} diff --git a/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java b/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java index 9550a2c..c3b4b40 100644 --- a/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java +++ b/file-web/src/main/java/com/qiwenshare/file/mapper/ShareMapper.java @@ -11,5 +11,5 @@ import java.util.List; public interface ShareMapper extends BaseMapper { void batchInsertShareFile(List shareFiles); - List selectShareFileList(@Param("shareBatchNum") String shareBatchNum, @Param("filePath") String filePath); + List selectShareFileList(@Param("shareBatchNum") String shareBatchNum, @Param("shareFilePath") String filePath); } 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 88bfb6e..e112e81 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,11 +10,11 @@ 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.exception.UploadGeneralException; +import com.qiwenshare.common.operation.upload.domain.UploadFile; 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.operation.delete.domain.DeleteFile; +import com.qiwenshare.common.operation.download.domain.DownloadFile; import com.qiwenshare.common.operation.delete.Deleter; import com.qiwenshare.common.operation.download.Downloader; import com.qiwenshare.common.factory.FileOperationFactory; @@ -31,9 +31,10 @@ import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.StorageBean; import com.qiwenshare.file.mapper.StorageMapper; import com.qiwenshare.file.mapper.UserFileMapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; - +@Slf4j @Service public class FiletransferService implements IFiletransferService { @@ -65,8 +66,8 @@ public class FiletransferService implements IFiletransferService { uploadFile.setIdentifier(UploadFileDto.getIdentifier()); uploadFile.setTotalSize(UploadFileDto.getTotalSize()); uploadFile.setCurrentChunkSize(UploadFileDto.getCurrentChunkSize()); + String storageType = qiwenFileConfig.getStorageType(); synchronized (FiletransferService.class) { - String storageType = qiwenFileConfig.getStorageType(); if ("0".equals(storageType)) { uploader = localStorageOperationFactory.getUploader(); } else if ("1".equals(storageType)) { @@ -75,6 +76,10 @@ public class FiletransferService implements IFiletransferService { uploader = fastDFSOperationFactory.getUploader(); } } + if (uploader == null) { + log.error("上传失败,请检查storageType是否配置正确,当前storageType为:" + storageType); + throw new UploadGeneralException("上传失败"); + } List uploadFileList = uploader.upload(request, uploadFile); for (int i = 0; i < uploadFileList.size(); i++){ @@ -144,6 +149,10 @@ public class FiletransferService implements IFiletransferService { } else if (fileBean.getStorageType() == 2) { downloader = fastDFSOperationFactory.getDownloader(); } + if (downloader == null) { + log.error("下载失败,文件存储类型不支持下载,storageType:{}, isOSS:{}", fileBean.getStorageType(), fileBean.getIsOSS()); + throw new UploadGeneralException("下载失败"); + } DownloadFile uploadFile = new DownloadFile(); uploadFile.setFileUrl(fileBean.getFileUrl()); // uploadFile.setTimeStampName(fileBean.getTimeStampName()); 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 0be1164..f7f7d3d 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 @@ -31,10 +31,6 @@ public class UserFileService extends ServiceImpl impl FileMapper fileMapper; @Resource RecoveryFileMapper recoveryFileMapper; - @Resource - FiletransferService filetransferService; - @Resource - QiwenFileConfig qiwenFileConfig; public static Executor executor = Executors.newFixedThreadPool(20); @@ -153,14 +149,11 @@ public class UserFileService extends ServiceImpl impl @Override public List selectFileListLikeRightFilePath(String filePath, long userId) { - //UserFile userFile = new UserFile(); filePath = filePath.replace("\\", "\\\\\\\\"); filePath = filePath.replace("'", "\\'"); filePath = filePath.replace("%", "\\%"); filePath = filePath.replace("_", "\\_"); - //userFile.setFilePath(filePath); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); log.info("查询文件路径:" + filePath); diff --git a/file-web/src/main/java/com/qiwenshare/file/vo/share/ShareFileListVO.java b/file-web/src/main/java/com/qiwenshare/file/vo/share/ShareFileListVO.java index 404dfcd..4d2d742 100644 --- a/file-web/src/main/java/com/qiwenshare/file/vo/share/ShareFileListVO.java +++ b/file-web/src/main/java/com/qiwenshare/file/vo/share/ShareFileListVO.java @@ -19,8 +19,8 @@ public class ShareFileListVO { private Integer isOSS; @Schema(description="存储类型") private Integer storageType; -// -// private Long userFileId; + @Schema(description="用户文件id") + private Long userFileId; // // private Long userId; diff --git a/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml b/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml index b718109..fb9b9f6 100644 --- a/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml +++ b/file-web/src/main/resources/mybatis/mapper/ShareMapper.xml @@ -8,10 +8,10 @@ - INSERT ignore INTO sharefile (shareBatchNum, userFileId) + INSERT ignore INTO sharefile (shareBatchNum, userFileId, shareFilePath) VALUES - (#{file.shareBatchNum}, #{file.userFileId}) + (#{file.shareBatchNum}, #{file.userFileId}, #{file.shareFilePath}) @@ -20,7 +20,7 @@ left join userfile b on b.userFileId = a.userFileId left join file c on c.fileId = b.fileId where a.shareBatchNum = #{shareBatchNum} - and b.filePath = #{filePath} + and a.shareFilePath = #{shareFilePath}