|
|
@@ -4,6 +4,7 @@ package com.sckw.file.service;
|
|
|
import com.aliyun.oss.model.OSSObject;
|
|
|
import com.sckw.core.common.enums.NumberConstant;
|
|
|
import com.sckw.core.common.enums.StringConstant;
|
|
|
+import com.sckw.core.common.enums.enums.FileDisposeLayoutEnum;
|
|
|
import com.sckw.core.common.enums.enums.FileEnum;
|
|
|
import com.sckw.core.model.file.FileInfo;
|
|
|
import com.sckw.core.model.vo.FileInfoVO;
|
|
|
@@ -16,7 +17,9 @@ import com.sckw.core.web.response.HttpResult;
|
|
|
import com.sckw.core.web.response.result.Status;
|
|
|
import com.sckw.file.api.dto.FileInfoDTO;
|
|
|
import com.sckw.file.config.FileListConfig;
|
|
|
+import com.sckw.file.dao.KwsFileEncryptDao;
|
|
|
import com.sckw.file.dao.KwsFileInfoDao;
|
|
|
+import com.sckw.file.model.kwfFileEncrypt;
|
|
|
import com.sckw.file.model.kwfFileInfo;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
@@ -35,7 +38,6 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.net.URLEncoder;
|
|
|
-import java.text.ParseException;
|
|
|
import java.util.*;
|
|
|
import java.util.zip.Adler32;
|
|
|
import java.util.zip.CheckedOutputStream;
|
|
|
@@ -58,6 +60,9 @@ public class FileService {
|
|
|
@Autowired
|
|
|
KwsFileInfoDao fileInfoDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ KwsFileEncryptDao fileEncryptDao;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FileListConfig fileListConfig;
|
|
|
|
|
|
@@ -249,7 +254,7 @@ public class FileService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- public HttpResult uploadFileInfo(MultipartFile file) throws ParseException {
|
|
|
+ public HttpResult uploadFileInfo(MultipartFile file){
|
|
|
boolean flag = checkFileFormat(file);
|
|
|
if (!flag) {
|
|
|
throw new RuntimeException("上传文件格式错误!");
|
|
|
@@ -259,11 +264,12 @@ public class FileService {
|
|
|
FileInfo returnFileInfo = FileUtils.uploadFileInfo(file, fileInfo, FileEnum.FILE_STORE_TYPE_OSS);
|
|
|
FileInfoVO fileInfoVO = new FileInfoVO();
|
|
|
BeanUtils.copyProperties(returnFileInfo, fileInfoVO);
|
|
|
- insertFile(returnFileInfo);
|
|
|
+ boolean isImage = FileUtils.isImage(file);
|
|
|
+ insertFile(returnFileInfo, isImage);
|
|
|
return HttpResult.ok(fileInfoVO);
|
|
|
}
|
|
|
|
|
|
- private void insertFile(FileInfo fileInfo){
|
|
|
+ private void insertFile(FileInfo fileInfo, boolean isImage) {
|
|
|
kwfFileInfo kwfFileInfo = new kwfFileInfo();
|
|
|
kwfFileInfo.setOriginalName(fileInfo.getFileOriginalName());
|
|
|
kwfFileInfo.setFileSuffix(FilenameUtils.getExtension(fileInfo.getFileOriginalName()));
|
|
|
@@ -279,12 +285,18 @@ public class FileService {
|
|
|
kwfFileInfo.setDelFlag(0);
|
|
|
kwfFileInfo.setCreateBy(LoginUserHolder.getUserId());
|
|
|
kwfFileInfo.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ if (FileEnum.FILE_STORE_TYPE_OSS.getFileType().equals(fileInfo.getType())) {
|
|
|
+ if (isImage) {
|
|
|
+ kwfFileInfo.setFileParameter(FileDisposeLayoutEnum.OSS_ABBREVIATE_LEFT.getParameter() + "200"
|
|
|
+ + FileDisposeLayoutEnum.OSS_ABBREVIATE_RIGHT.getParameter() + "200");
|
|
|
+ }
|
|
|
+ }
|
|
|
fileInfoDao.insert(kwfFileInfo);
|
|
|
}
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
- public HttpResult appUploadFileInfo(MultipartFile file){
|
|
|
+ public HttpResult appUploadFileInfo(MultipartFile file) {
|
|
|
boolean flag = checkFileFormat(file);
|
|
|
if (!flag) {
|
|
|
return HttpResult.error(Status.FAILURE.getCode(), "上传文件格式错误!");
|
|
|
@@ -294,8 +306,9 @@ public class FileService {
|
|
|
FileInfo returnFileInfo = FileUtils.uploadFileInfo(file, fileInfo, FileEnum.FILE_STORE_TYPE_OSS);
|
|
|
FileInfoVO fileInfoVO = new FileInfoVO();
|
|
|
BeanUtils.copyProperties(returnFileInfo, fileInfoVO);
|
|
|
- insertFile(returnFileInfo);
|
|
|
- return HttpResult.ok(Status.SUCCESS.getCode(),"", fileInfoVO);
|
|
|
+ boolean isImage = FileUtils.isImage(file);
|
|
|
+ insertFile(returnFileInfo, isImage);
|
|
|
+ return HttpResult.ok(Status.SUCCESS.getCode(), "", fileInfoVO);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -318,4 +331,83 @@ public class FileService {
|
|
|
Map<String, String> map = FileUtils.uploadFileByInfo(inputStream, fileInfo.getOriginalName(), FileEnum.Local_Address);
|
|
|
return HttpResult.ok(map);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public HttpResult uploadFileEncrypt(MultipartFile file) {
|
|
|
+ boolean flag = checkFileFormat(file);
|
|
|
+ if (!flag) {
|
|
|
+ throw new RuntimeException("上传文件格式错误!");
|
|
|
+ }
|
|
|
+ FileInfo fileInfo = FileUtils.getFileDataList(file);
|
|
|
+ String fileType = FileEnum.FILE_STORE_TYPE_OSS.getFileType();
|
|
|
+ fileInfo.setType(fileType);
|
|
|
+ /**上传文件*/
|
|
|
+ FileInfo returnFileInfo = FileUtils.uploadFileInfo(file, fileInfo, FileEnum.FILE_STORE_TYPE_OSS);
|
|
|
+ boolean isImage = FileUtils.isImage(file);
|
|
|
+ /**存储文件到数据库*/
|
|
|
+ insertFile(returnFileInfo, isImage);
|
|
|
+ /**存储到加密属性文件信息*/
|
|
|
+ String fileMd5 = returnFileInfo.getFileMd5();
|
|
|
+ String filePath = returnFileInfo.getFilePath();
|
|
|
+ FileInfoVO vo = new FileInfoVO();
|
|
|
+ vo.setFileMd5(fileMd5);
|
|
|
+ vo.setFilePath(filePath);
|
|
|
+// insertFileEncrypt(fileMd5, filePath, FileEnum.FILE_STORE_TYPE_OSS, isImage);
|
|
|
+ return HttpResult.ok(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 文件加密存储
|
|
|
+ *
|
|
|
+ * @param fileMd5 md5加密key
|
|
|
+ * @param filePath 文件相对路径
|
|
|
+ * @param fileEnum 文件类型
|
|
|
+ * @param isImage 是否是图片
|
|
|
+ */
|
|
|
+ public void insertFileEncrypt(String fileMd5, String filePath, FileEnum fileEnum, boolean isImage) {
|
|
|
+ Date date = new Date();
|
|
|
+ kwfFileEncrypt encrypt = new kwfFileEncrypt();
|
|
|
+ if (FileEnum.FILE_STORE_TYPE_OSS.getFileType().equals(fileEnum.getFileType())) {
|
|
|
+ if (isImage) {
|
|
|
+ encrypt.setFileParameter(FileDisposeLayoutEnum.OSS_ABBREVIATE_LEFT.getParameter() + "200"
|
|
|
+ + FileDisposeLayoutEnum.OSS_ABBREVIATE_RIGHT.getParameter() + "200");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ encrypt.setType(fileEnum.getFileType());
|
|
|
+ encrypt.setStatus(NumberConstant.ZERO);
|
|
|
+ encrypt.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ encrypt.setCreateTime(date);
|
|
|
+ encrypt.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ encrypt.setUpdateTime(date);
|
|
|
+ encrypt.setDelFlag(NumberConstant.ZERO);
|
|
|
+ encrypt.setId(new IdWorker(NumberConstant.ONE).nextId());
|
|
|
+ encrypt.setEncryptKey(fileMd5);
|
|
|
+ encrypt.setFilePath(filePath);
|
|
|
+ fileEncryptDao.insert(encrypt);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public HttpResult appUploadFileEncrypt(MultipartFile file) {
|
|
|
+ boolean flag = checkFileFormat(file);
|
|
|
+ if (!flag) {
|
|
|
+ throw new RuntimeException("上传文件格式错误!");
|
|
|
+ }
|
|
|
+ FileInfo fileInfo = FileUtils.getFileDataList(file);
|
|
|
+ String fileType = FileEnum.FILE_STORE_TYPE_OSS.getFileType();
|
|
|
+ fileInfo.setType(fileType);
|
|
|
+ /**上传文件*/
|
|
|
+ FileInfo returnFileInfo = FileUtils.uploadFileInfo(file, fileInfo, FileEnum.FILE_STORE_TYPE_OSS);
|
|
|
+ boolean isImage = FileUtils.isImage(file);
|
|
|
+ /**存储文件到数据库*/
|
|
|
+ insertFile(returnFileInfo, isImage);
|
|
|
+ /**存储到加密属性文件信息*/
|
|
|
+ String fileMd5 = returnFileInfo.getFileMd5();
|
|
|
+ String filePath = returnFileInfo.getFilePath();
|
|
|
+// insertFileEncrypt(fileMd5, filePath, FileEnum.FILE_STORE_TYPE_OSS, isImage);
|
|
|
+ FileInfoVO vo = new FileInfoVO();
|
|
|
+ vo.setFileMd5(fileMd5);
|
|
|
+ vo.setFilePath(filePath);
|
|
|
+ return HttpResult.ok(Status.SUCCESS.getCode(), "", vo);
|
|
|
+ }
|
|
|
}
|