|
@@ -6,6 +6,7 @@ import com.aliyuncs.profile.DefaultProfile;
|
|
|
import com.caimei.mapper.cmMapper.FileMapper;
|
|
|
import com.caimei.model.ResponseJson;
|
|
|
import com.caimei.model.vo.FileTreeVo;
|
|
|
+import com.caimei.service.async.AsyncService;
|
|
|
import com.caimei.service.data.DatabaseService;
|
|
|
import com.caimei.utils.FileZipUtils;
|
|
|
import com.caimei.utils.OSSUtils;
|
|
@@ -21,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.UUID;
|
|
@@ -39,6 +41,9 @@ public class DatabaseServiceImpl implements DatabaseService {
|
|
|
@Value("${spring.profiles.active}")
|
|
|
private String active;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private AsyncService asyncService;
|
|
|
+
|
|
|
@Override
|
|
|
public ResponseJson<List<FileTreeVo>> getFileById(Integer fileId, Integer authUserId) {
|
|
|
List<FileTreeVo> fileTree = fileMapper.findFileTree(fileId, authUserId, null);
|
|
@@ -82,7 +87,7 @@ public class DatabaseServiceImpl implements DatabaseService {
|
|
|
// 设置下载文件的mineType,告诉浏览器下载文件类型
|
|
|
// int i = fileName.lastIndexOf(".");
|
|
|
// String substring = fileName.substring(i + 1, filePath.length());
|
|
|
- // response.setContentType(substring);
|
|
|
+ response.setContentType("application/zip");
|
|
|
// 设置一个响应头,无论是否被浏览器解析,都下载
|
|
|
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
|
|
|
byte[] bytes = new byte[1024];
|
|
@@ -118,7 +123,7 @@ public class DatabaseServiceImpl implements DatabaseService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ResponseJson getOssUploadResult(Integer authUserId, String fileName, String ossName, String ossUrl, String fileSize, Integer parentId) {
|
|
|
+ public ResponseJson getOssUploadResult(Integer authUserId, String fileName, String ossName, String ossUrl, String fileSize, Integer parentId, String mime) {
|
|
|
FileTreeVo fileTreeVo = new FileTreeVo();
|
|
|
fileTreeVo.setFileName(fileName);
|
|
|
fileTreeVo.setOssName(ossName);
|
|
@@ -130,7 +135,12 @@ public class DatabaseServiceImpl implements DatabaseService {
|
|
|
fileTreeVo.setFileSize(fileSize);
|
|
|
fileTreeVo.setPackageType(1);
|
|
|
fileTreeVo.setAuthUserId(authUserId);
|
|
|
+ fileTreeVo.setMime(mime);
|
|
|
fileMapper.insertNewFile(fileTreeVo);
|
|
|
+ if(mime.contains("image")){
|
|
|
+ //图片保存缩略图
|
|
|
+ asyncService.insertScreenshot(fileTreeVo);
|
|
|
+ }
|
|
|
return ResponseJson.success();
|
|
|
}
|
|
|
|
|
@@ -145,11 +155,21 @@ public class DatabaseServiceImpl implements DatabaseService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ResponseJson movePackage(Integer fileId, Integer parentId) {
|
|
|
- FileTreeVo fileTreeVo = new FileTreeVo();
|
|
|
- fileTreeVo.setId(fileId);
|
|
|
- fileTreeVo.setParentId(parentId);
|
|
|
- fileMapper.updateFile(fileTreeVo);
|
|
|
+ public ResponseJson movePackage(String fileId, Integer parentId) {
|
|
|
+ if (fileId.contains(",")) {
|
|
|
+ String[] split = fileId.split(",");
|
|
|
+ for (String s : split) {
|
|
|
+ FileTreeVo fileTreeVo = new FileTreeVo();
|
|
|
+ fileTreeVo.setId(Integer.valueOf(s));
|
|
|
+ fileTreeVo.setParentId(parentId);
|
|
|
+ fileMapper.updateFile(fileTreeVo);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ FileTreeVo fileTreeVo = new FileTreeVo();
|
|
|
+ fileTreeVo.setId(Integer.valueOf(fileId));
|
|
|
+ fileTreeVo.setParentId(parentId);
|
|
|
+ fileMapper.updateFile(fileTreeVo);
|
|
|
+ }
|
|
|
return ResponseJson.success();
|
|
|
}
|
|
|
|
|
@@ -204,6 +224,85 @@ public class DatabaseServiceImpl implements DatabaseService {
|
|
|
return ResponseJson.success(fileTreeVo);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public ResponseJson downLoadChoseZip(String fileId, Integer authUserId, HttpServletResponse response) {
|
|
|
+ if (fileId.contains(",")) {
|
|
|
+ String[] split = fileId.split(",");
|
|
|
+ ArrayList<FileTreeVo> fileTreeVos = new ArrayList<>();
|
|
|
+ for (String s : split) {
|
|
|
+ FileTreeVo file = fileMapper.findFile(Integer.valueOf(s), authUserId, null);
|
|
|
+ fileTreeVos.add(file);
|
|
|
+ }
|
|
|
+ //有package则在服务器固定路径new file.mkdir
|
|
|
+ UUID uuid = UUID.randomUUID();
|
|
|
+ String filePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/tempFile/" + uuid;
|
|
|
+ String zipPath = filePath;
|
|
|
+ if ("dev".equals(active)) {
|
|
|
+ filePath = "D:\\caimei-workSpace\\file\\" + uuid;
|
|
|
+ zipPath = filePath;
|
|
|
+ }
|
|
|
+ boolean mkdirs = new File(filePath).mkdirs();
|
|
|
+ Assert.isTrue(mkdirs, "文件夹创建失败");
|
|
|
+
|
|
|
+ for (FileTreeVo fileTreeVo : fileTreeVos) {
|
|
|
+ if (1 == fileTreeVo.getPackageType()) {
|
|
|
+ //普通文件直接下载到临时文件夹uuid下
|
|
|
+ String fileName = "";
|
|
|
+ if ("dev".equals(active)) {
|
|
|
+ fileName = zipPath + "\\" + fileTreeVo.getFileName();
|
|
|
+ } else {
|
|
|
+ fileName = zipPath + "/" + fileTreeVo.getFileName();
|
|
|
+ }
|
|
|
+ OSSUtils.downFileByFilePath("authFile/", fileTreeVo.getOssName(), fileName);
|
|
|
+ } else {
|
|
|
+ //文件夹在uuid文件夹下创建自己包名的文件夹
|
|
|
+ String param = fileTreeVo.getId() + "," + authUserId;
|
|
|
+ String myPath = "";
|
|
|
+ myPath = filePath + "/" + fileTreeVo.getFileName();
|
|
|
+ if ("dev".equals(active)) {
|
|
|
+ myPath = filePath + "\\" + fileTreeVo.getFileName();
|
|
|
+ }
|
|
|
+ recursion(param, myPath);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //压缩
|
|
|
+ FileZipUtils.compress(zipPath, "", true);
|
|
|
+ String s = zipPath + ".zip";
|
|
|
+ String fileName = uuid + ".zip";
|
|
|
+ File file = new File(s);
|
|
|
+ try {
|
|
|
+ if (file.exists()) {
|
|
|
+ FileInputStream fileInputStream = new FileInputStream(file);
|
|
|
+ ServletOutputStream outputStream = response.getOutputStream();
|
|
|
+ // 设置下载文件的mineType,告诉浏览器下载文件类型
|
|
|
+// int i = fileName.lastIndexOf(".");
|
|
|
+// String substring = fileName.substring(i + 1, filePath.length());
|
|
|
+ response.setContentType("application/zip");
|
|
|
+ // 设置一个响应头,无论是否被浏览器解析,都下载
|
|
|
+ response.setHeader("Content-disposition", "attachment; filename=" + fileName);
|
|
|
+ byte[] bytes = new byte[1024];
|
|
|
+ int len;
|
|
|
+ while ((len = fileInputStream.read(bytes)) != -1) {
|
|
|
+ outputStream.write(bytes, 0, len);
|
|
|
+ }
|
|
|
+ fileInputStream.close();
|
|
|
+ outputStream.close();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ FileZipUtils.deleteFile(new File(zipPath));
|
|
|
+ }
|
|
|
+ return ResponseJson.error("请勾选多个文件");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseJson<FileTreeVo> getFileDetail(Integer fileId, Integer authUserId) {
|
|
|
+ FileTreeVo file = fileMapper.findFile(fileId, authUserId, null);
|
|
|
+ return ResponseJson.success(file);
|
|
|
+ }
|
|
|
+
|
|
|
private void PackageTree(FileTreeVo fileTreeVo) {
|
|
|
if (null == fileTreeVo) {
|
|
|
return;
|
|
@@ -217,7 +316,7 @@ public class DatabaseServiceImpl implements DatabaseService {
|
|
|
|
|
|
|
|
|
private FileTreeVo getCrumbsParent(FileTreeVo file, Integer authUserId) {
|
|
|
- if (null != file && 0 == file.getParentId()) {
|
|
|
+ if (null == file || 0 == file.getParentId()) {
|
|
|
return file;
|
|
|
}
|
|
|
FileTreeVo fil = fileMapper.findFile(file.getParentId(), authUserId, null);
|