基础代码优化

This commit is contained in:
马超 2021-03-24 10:38:44 +08:00
parent 9d12434de4
commit fc77d48251
49 changed files with 490 additions and 380 deletions

View File

@ -12,6 +12,7 @@ public class QiwenFileConfig {
private boolean shareMode;
private String storageType;
private String cacheMode;
private AliyunConfig aliyun = new AliyunConfig();

View File

@ -0,0 +1,9 @@
package com.qiwenshare.common.domain;
import lombok.Data;
@Data
public class DeleteFile {
private String fileUrl;
private String timeStampName;
}

View File

@ -1,4 +1,4 @@
package com.qiwenshare.common.cbb;
package com.qiwenshare.common.exception;
public class NotSameFileExpection extends Exception {
public NotSameFileExpection() {

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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();
}

View File

@ -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;
}
}

View File

@ -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();
// }
//
//}

View File

@ -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);
}

View File

@ -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();
}
}

View File

@ -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());
}
}

View File

@ -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"));
}
}
}

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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<UploadFile> 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());

View File

@ -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<String, List<PartETag>> partETagsMap = new HashMap<String, List<PartETag>>();
@ -46,40 +40,22 @@ public class AliyunOSSUploader extends Uploader {
public static Map<String, String> timeStampNameMap = new HashMap<>();
public AliyunOSSUploader() {
}
// public AliyunOSSUploader(UploadFile uploadFile) {
// this.uploadFile = uploadFile;
// }
@Override
public List<UploadFile> upload(HttpServletRequest httpServletRequest, UploadFile uploadFile) {
logger.info("开始上传upload");
List<UploadFile> 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<String> iter = request.getFileNames();

View File

@ -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<String, Integer> CURRENT_UPLOAD_CHUNK_NUMBER = new HashMap<>();
private static Map<String, Long> UPLOADED_SIZE = new HashMap<>();
private static Map<String, String> STORE_PATH = new HashMap<>();
private static Map<String, Object> 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<UploadFile> upload(HttpServletRequest request, UploadFile uploadFile) {
log.info("开始上传upload");

View File

@ -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;

View File

@ -1,55 +0,0 @@
/**
* 示例说明
*
* HelloOSS是OSS Java SDK的示例程序您可以修改endpointaccessKeyIdaccessKeySecretbucketName后直接运行
* 运行方法请参考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();
}
}

View File

@ -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();
}
}

View File

@ -1,59 +0,0 @@
/**
* 示例说明
*
* HelloOSS是OSS Java SDK的示例程序您可以修改endpointaccessKeyIdaccessKeySecretbucketName后直接运行
* 运行方法请参考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();
}
}

View File

@ -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 <T>

View File

@ -1,4 +1,4 @@
package com.qiwenshare.common.cbb;
package com.qiwenshare.common.result;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.qiwenshare.common.cbb;
package com.qiwenshare.common.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -1,4 +1,4 @@
package com.qiwenshare.common.cbb;
package com.qiwenshare.common.util;
import java.text.DateFormat;
import java.text.ParseException;

View File

@ -1,4 +0,0 @@
package com.qiwenshare.common.util;
public class OfficeUtil {
}

View File

@ -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<Map<String, LockVO>> 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<String, LockVO> 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 {} failbecause timeout ", key);
return false;
}
private boolean acquired(String key) {
Map<String, LockVO> 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<String, LockVO> 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<Boolean> 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<Boolean> 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;
}
}
}

View File

@ -1,6 +1,6 @@
package com.qiwenshare.file.advice;
import com.qiwenshare.common.cbb.ResultCodeEnum;
import com.qiwenshare.common.result.ResultCodeEnum;
import lombok.Data;
/**

View File

@ -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;
/**
* 该注解为统一异常处理的核心

View File

@ -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;

View File

@ -19,7 +19,7 @@ public interface IFileService extends IService<FileBean> {
// List<FileBean> selectFileListByPath(FileBean fileBean);
void deleteLocalFile(FileBean fileBean);
// void deleteLocalFile(FileBean fileBean);

View File

@ -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);

View File

@ -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> {
UserBean getUserBeanByToken(String token);

View File

@ -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<FileBean> 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)

View File

@ -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){

View File

@ -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;

View File

@ -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;

View File

@ -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());
}

View File

@ -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;

View File

@ -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<FileMapper, FileBean> 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"));
// }
// }
// }
// }

View File

@ -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<StorageBean> lambdaQueryWrapper = new LambdaQueryWrapper<>();

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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