From 34312ff6193083ef692472c2f5449cd2d26093d3 Mon Sep 17 00:00:00 2001
From: wanggeng <450292408@qq.com>
Date: Fri, 10 Dec 2021 11:44:20 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0mongo=20+=20minio=E7=9A=84?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E7=BB=9F=E4=B8=80=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
module-file/pom.xml | 8 +
.../file/service/IDefaultFileService.java | 28 +++-
.../module/file/service/IFileService.java | 1 +
.../file/service/IMinIoFileService.java | 29 ++++
.../service/impl/DefaultFileServiceImpl.java | 77 ++++++++-
.../file/service/impl/FileServiceImpl.java | 100 ++++++------
.../service/impl/MinIoFileServiceImpl.java | 150 +++++++++++++++++-
7 files changed, 336 insertions(+), 57 deletions(-)
diff --git a/module-file/pom.xml b/module-file/pom.xml
index 58dc8620..6f6fc221 100644
--- a/module-file/pom.xml
+++ b/module-file/pom.xml
@@ -33,6 +33,14 @@
+
+
+ org.springframework.data
+ spring-data-mongodb
+ provided
+
+
+
\ No newline at end of file
diff --git a/module-file/src/main/java/ink/wgink/module/file/service/IDefaultFileService.java b/module-file/src/main/java/ink/wgink/module/file/service/IDefaultFileService.java
index f0eaab82..ed4d168f 100644
--- a/module-file/src/main/java/ink/wgink/module/file/service/IDefaultFileService.java
+++ b/module-file/src/main/java/ink/wgink/module/file/service/IDefaultFileService.java
@@ -3,7 +3,12 @@ package ink.wgink.module.file.service;
import ink.wgink.exceptions.FileException;
import ink.wgink.exceptions.base.SystemException;
import ink.wgink.module.file.enums.UploadTypeEnum;
+import ink.wgink.module.file.pojo.dtos.FileDTO;
+import ink.wgink.module.file.pojo.dtos.FileInfoDTO;
+import ink.wgink.module.file.pojo.vos.FileVO;
+import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.pos.FilePO;
+import ink.wgink.pojo.result.SuccessResultList;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@@ -20,6 +25,8 @@ import java.util.Map;
*/
public interface IDefaultFileService {
+ String saveFileByUserId(String userId, FileVO fileVO);
+
/**
* 上传文件
*
@@ -41,6 +48,8 @@ public interface IDefaultFileService {
*/
void uploadFileByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map params);
+ void remove(List ids);
+
/**
* 物理删除文件
*
@@ -48,6 +57,13 @@ public interface IDefaultFileService {
*/
void deleteFile(List filePOs);
+ /**
+ * 物理删除
+ *
+ * @param params
+ */
+ void delete(List ids);
+
/**
* 保存文件信息
*
@@ -92,7 +108,7 @@ public interface IDefaultFileService {
* @param params
* @param canRange
*/
- void downLoadFile(HttpServletRequest request, HttpServletResponse response, Map params, boolean canRange);
+ boolean downLoadFile(HttpServletRequest request, HttpServletResponse response, Map params, boolean canRange);
/**
* 下载文件
@@ -106,4 +122,14 @@ public interface IDefaultFileService {
*/
boolean downLoadFile(HttpServletRequest request, HttpServletResponse response, FilePO filePO, boolean isOpen, boolean canRange);
+ SuccessResultList> listPageInfo(ListPage page);
+
+ List list(List idList);
+
+ List listPO(List idList);
+
+ FilePO getPO(String fileId);
+
+ List listByUrl(String url);
+
}
diff --git a/module-file/src/main/java/ink/wgink/module/file/service/IFileService.java b/module-file/src/main/java/ink/wgink/module/file/service/IFileService.java
index a8312a6c..b53a4588 100644
--- a/module-file/src/main/java/ink/wgink/module/file/service/IFileService.java
+++ b/module-file/src/main/java/ink/wgink/module/file/service/IFileService.java
@@ -228,6 +228,7 @@ public interface IFileService {
* @param params
* @return
*/
+ @Deprecated
FilePO getPO(Map params);
/**
diff --git a/module-file/src/main/java/ink/wgink/module/file/service/IMinIoFileService.java b/module-file/src/main/java/ink/wgink/module/file/service/IMinIoFileService.java
index 31382db7..4ba7f43c 100644
--- a/module-file/src/main/java/ink/wgink/module/file/service/IMinIoFileService.java
+++ b/module-file/src/main/java/ink/wgink/module/file/service/IMinIoFileService.java
@@ -1,7 +1,12 @@
package ink.wgink.module.file.service;
import ink.wgink.module.file.enums.UploadTypeEnum;
+import ink.wgink.module.file.pojo.dtos.FileDTO;
+import ink.wgink.module.file.pojo.dtos.FileInfoDTO;
+import ink.wgink.module.file.pojo.vos.FileVO;
+import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.pos.FilePO;
+import ink.wgink.pojo.result.SuccessResultList;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@@ -18,6 +23,10 @@ import java.util.Map;
*/
public interface IMinIoFileService {
+ String saveFileByUserId(String userId, FileVO fileVO);
+
+ void remove(List ids);
+
/**
* 物理删除文件
*
@@ -45,6 +54,17 @@ public interface IMinIoFileService {
*/
void uploadFileByUserId(String userId, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map params);
+ /**
+ * 下载文件
+ *
+ * @param request
+ * @param response
+ * @param params
+ * @param canRange
+ * @return
+ */
+ boolean downLoadFile(HttpServletRequest request, HttpServletResponse response, Map params, boolean canRange);
+
/**
* 下载文件
*
@@ -56,4 +76,13 @@ public interface IMinIoFileService {
*/
boolean downLoadFile(HttpServletRequest request, HttpServletResponse response, FilePO filePO, boolean isOpen, boolean canRange);
+ SuccessResultList> listPageInfo(ListPage page);
+
+ List list(List idList);
+
+ List listPO(List idList);
+
+ FilePO getPO(String fileId);
+
+ List listByUrl(String fileUrl);
}
diff --git a/module-file/src/main/java/ink/wgink/module/file/service/impl/DefaultFileServiceImpl.java b/module-file/src/main/java/ink/wgink/module/file/service/impl/DefaultFileServiceImpl.java
index 02df15e9..0d1cc040 100644
--- a/module-file/src/main/java/ink/wgink/module/file/service/impl/DefaultFileServiceImpl.java
+++ b/module-file/src/main/java/ink/wgink/module/file/service/impl/DefaultFileServiceImpl.java
@@ -1,18 +1,25 @@
package ink.wgink.module.file.service.impl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.exceptions.FileException;
import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.base.SystemException;
import ink.wgink.module.file.dao.IFileDao;
import ink.wgink.module.file.enums.UploadTypeEnum;
+import ink.wgink.module.file.pojo.dtos.FileDTO;
import ink.wgink.module.file.pojo.dtos.FileInfoDTO;
+import ink.wgink.module.file.pojo.vos.FileVO;
import ink.wgink.module.file.service.IDefaultFileService;
import ink.wgink.module.file.service.IFileService;
+import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.pos.FilePO;
+import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.properties.FileProperties;
import ink.wgink.util.UUIDUtil;
import ink.wgink.util.date.DateUtil;
+import ink.wgink.util.map.HashMapUtil;
import ink.wgink.util.request.StaticResourceRequestUtil;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.catalina.connector.ClientAbortException;
@@ -32,6 +39,7 @@ import java.nio.channels.FileChannel;
import java.nio.channels.WritableByteChannel;
import java.security.MessageDigest;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -56,6 +64,17 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
private String[] audioTypes;
private String[] fileTypes;
+ @Override
+ public String saveFileByUserId(String userId, FileVO fileVO) {
+ String fileId = UUIDUtil.getUUID();
+ Map params = HashMapUtil.beanToMap(fileVO);
+ params.put("fileId", fileId);
+ params.put("isBack", 0);
+ setSaveInfoByUserId(params, userId);
+ fileDao.save(params);
+ return fileId;
+ }
+
/**
* 上传文件
*
@@ -129,6 +148,14 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
}
}
+ @Override
+ public void remove(List ids) {
+ Map params = getHashMap(2);
+ params.put("fileIds", ids);
+ setUpdateInfo(params);
+ fileDao.remove(params);
+ }
+
@Override
public void deleteFile(List filePOs) {
Map fileParams = getHashMap(4);
@@ -177,6 +204,13 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
}
}
+ @Override
+ public void delete(List ids) {
+ Map params = getHashMap(2);
+ params.put("fileIds", ids);
+ fileDao.delete(params);
+ }
+
/**
* 删除源文件
*
@@ -275,10 +309,13 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
}
@Override
- public void downLoadFile(HttpServletRequest request, HttpServletResponse response, Map params, boolean canRange) {
+ public boolean downLoadFile(HttpServletRequest request, HttpServletResponse response, Map params, boolean canRange) {
FilePO filePO = fileDao.getPO(params);
+ if (null == filePO) {
+ throw new FileException("文件不存在");
+ }
boolean isOpen = Boolean.valueOf(params.get("isOpen").toString());
- downLoadFile(request, response, filePO, isOpen, canRange);
+ return downLoadFile(request, response, filePO, isOpen, canRange);
}
@Override
@@ -351,6 +388,42 @@ public class DefaultFileServiceImpl extends DefaultBaseService implements IDefau
return isDownloadComplete;
}
+ @Override
+ public SuccessResultList> listPageInfo(ListPage page) {
+ PageHelper.startPage(page.getPage(), page.getRows());
+ List fileInfoDTOs = fileDao.listInfo(page.getParams());
+ PageInfo pageInfo = new PageInfo<>(fileInfoDTOs);
+ return new SuccessResultList<>(fileInfoDTOs, pageInfo.getPageNum(), pageInfo.getTotal());
+ }
+
+ @Override
+ public List list(List idList) {
+ Map params = getHashMap(1);
+ params.put("ids", idList);
+ return fileDao.list(params);
+ }
+
+ @Override
+ public List listPO(List idList) {
+ Map params = getHashMap(2);
+ params.put("fileIds", idList);
+ return fileDao.listPO(params);
+ }
+
+ @Override
+ public FilePO getPO(String fileId) {
+ Map params = new HashMap<>();
+ params.put("fileId", fileId);
+ return fileDao.getPO(params);
+ }
+
+ @Override
+ public List listByUrl(String fileUrl) {
+ Map params = getHashMap(2);
+ params.put("fileUrl", fileUrl);
+ return fileDao.list(params);
+ }
+
/**
* 处理视频流问题
*
diff --git a/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java b/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java
index 25f76a5f..6bcf0c24 100644
--- a/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java
+++ b/module-file/src/main/java/ink/wgink/module/file/service/impl/FileServiceImpl.java
@@ -5,11 +5,9 @@ import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import ink.wgink.common.base.DefaultBaseService;
-import ink.wgink.exceptions.FileException;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.base.SystemException;
-import ink.wgink.module.file.dao.IFileDao;
import ink.wgink.module.file.enums.UploadTypeEnum;
import ink.wgink.module.file.pojo.dtos.FileDTO;
import ink.wgink.module.file.pojo.dtos.FileInfoDTO;
@@ -23,8 +21,6 @@ import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.properties.FileProperties;
import ink.wgink.util.ResourceUtil;
-import ink.wgink.util.UUIDUtil;
-import ink.wgink.util.map.HashMapUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,26 +44,20 @@ import java.util.*;
public class FileServiceImpl extends DefaultBaseService implements IFileService {
private static final Logger LOG = LoggerFactory.getLogger(FileServiceImpl.class);
-
@Autowired
private FileProperties fileProperties;
@Autowired
- private IFileDao fileDao;
- @Autowired
private IDefaultFileService defaultFileService;
@Autowired
private IMinIoFileService minIoFileService;
- public List listFileInfo(Map params) {
- return fileDao.listInfo(params);
- }
-
@Override
public SuccessResultList> listPageInfo(ListPage page) {
- PageHelper.startPage(page.getPage(), page.getRows());
- List fileInfoDTOs = fileDao.listInfo(page.getParams());
- PageInfo pageInfo = new PageInfo<>(fileInfoDTOs);
- return new SuccessResultList<>(fileInfoDTOs, pageInfo.getPageNum(), pageInfo.getTotal());
+ if (fileProperties.getUseMinIo()) {
+ return minIoFileService.listPageInfo(page);
+ } else {
+ return defaultFileService.listPageInfo(page);
+ }
}
@Override
@@ -77,10 +67,11 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
@Override
public void remove(List ids) {
- Map params = getHashMap(2);
- params.put("fileIds", ids);
- setUpdateInfo(params);
- fileDao.remove(params);
+ if (fileProperties.getUseMinIo()) {
+ minIoFileService.remove(ids);
+ } else {
+ defaultFileService.remove(ids);
+ }
}
@Override
@@ -98,9 +89,8 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
minIoFileService.deleteFile(filePOs);
} else {
defaultFileService.deleteFile(filePOs);
+ defaultFileService.delete(ids);
}
- // 删除记录
- fileDao.delete(params);
}
@Override
@@ -182,27 +172,29 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
@Override
public List list(List idList) throws SearchException {
- Map params = getHashMap(1);
- params.put("ids", idList);
- return fileDao.list(params);
+ if (fileProperties.getUseMinIo()) {
+ return minIoFileService.list(idList);
+ } else {
+ return defaultFileService.list(idList);
+ }
}
@Override
public List listPO(List idList) {
- Map params = getHashMap(2);
- params.put("fileIds", idList);
- return fileDao.listPO(params);
+ if (fileProperties.getUseMinIo()) {
+ return minIoFileService.listPO(idList);
+ } else {
+ return defaultFileService.listPO(idList);
+ }
}
@Override
public String saveFileByUserId(String userId, FileVO fileVO) {
- String fileId = UUIDUtil.getUUID();
- Map params = HashMapUtil.beanToMap(fileVO);
- params.put("fileId", fileId);
- params.put("isBack", 0);
- setSaveInfoByUserId(params, userId);
- fileDao.save(params);
- return fileId;
+ if (fileProperties.getUseMinIo()) {
+ return minIoFileService.saveFileByUserId(userId, fileVO);
+ } else {
+ return defaultFileService.saveFileByUserId(userId, fileVO);
+ }
}
@@ -218,19 +210,11 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
@Override
public boolean downLoadFile(HttpServletRequest request, HttpServletResponse response, Map params, boolean canRange) {
- FilePO filePO = fileDao.getPO(params);
- if (null == filePO) {
- throw new FileException("文件不存在");
- }
- boolean isOpen = Boolean.valueOf(params.get("isOpen").toString());
- // 没有备份的数据从本地下载
- if (filePO.getIsBack() == 0) {
- return defaultFileService.downLoadFile(request, response, filePO, isOpen, canRange);
- }
if (fileProperties.getUseMinIo()) {
- return minIoFileService.downLoadFile(request, response, filePO, isOpen, canRange);
+ return minIoFileService.downLoadFile(request, response, params, canRange);
+ } else {
+ return defaultFileService.downLoadFile(request, response, params, canRange);
}
- throw new FileException("文件下载异常");
}
@Override
@@ -270,7 +254,15 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
@Override
public FilePO getPO(Map params) throws SearchException {
- return fileDao.getPO(params);
+ if (params.get("fileId") == null) {
+ throw new ParamsException("fileId不能为空");
+ }
+ String fileId = params.get("fileId").toString();
+ if (fileProperties.getUseMinIo()) {
+ return minIoFileService.getPO(fileId);
+ } else {
+ return defaultFileService.getPO(fileId);
+ }
}
/**
@@ -286,14 +278,22 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
int pageSize = Integer.parseInt(params.get("size").toString());
int pageNum = start / pageSize + 1;
String downloadFile = "true";
+ String fileUrl = null;
if (UEDITOR_LIST_IMAGE.equals(action)) {
- params.put("fileUrl", "images");
- } else if (UEDITOR_LIST_FILE.equals(action)) {
- params.put("fileUrl", "files");
+ fileUrl = "images";
+ } else {
+ // UEDITOR_LIST_FILE.equals(action)
+ fileUrl = "files";
downloadFile = "false";
}
PageHelper.startPage(pageNum, pageSize);
- List listFileDTOs = fileDao.list(params);
+ List listFileDTOs;
+ if (fileProperties.getUseMinIo()) {
+ listFileDTOs = minIoFileService.listByUrl(fileUrl);
+ } else {
+ listFileDTOs = defaultFileService.listByUrl(fileUrl);
+ }
+
PageInfo pageInfo = new PageInfo<>(listFileDTOs);
List