diff --git a/src/main/java/com/qiwenshare/file/api/IFileService.java b/src/main/java/com/qiwenshare/file/api/IFileService.java index 5868cf6..099e890 100644 --- a/src/main/java/com/qiwenshare/file/api/IFileService.java +++ b/src/main/java/com/qiwenshare/file/api/IFileService.java @@ -9,9 +9,6 @@ import java.util.List; public interface IFileService extends IService { -// void increaseFilePointCount(Long fileId); -// -// void decreaseFilePointCount(Long fileId); Long getFilePointCount(Long fileId); void unzipFile(long userFileId, int unzipMode, String filePath); diff --git a/src/main/java/com/qiwenshare/file/api/IFiletransferService.java b/src/main/java/com/qiwenshare/file/api/IFiletransferService.java index e96ddb8..203076a 100644 --- a/src/main/java/com/qiwenshare/file/api/IFiletransferService.java +++ b/src/main/java/com/qiwenshare/file/api/IFiletransferService.java @@ -5,32 +5,20 @@ import com.qiwenshare.file.domain.StorageBean; import com.qiwenshare.file.dto.file.DownloadFileDTO; import com.qiwenshare.file.dto.file.UploadFileDTO; import com.qiwenshare.file.dto.file.PreviewDTO; +import com.qiwenshare.file.vo.file.UploadFileVo; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface IFiletransferService { + UploadFileVo uploadFileSpeed(UploadFileDTO uploadFileDTO); - - - - /** - * 上传文件 - * @param request 请求 - * @param UploadFileDto 文件信息 - */ void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId); void downloadFile(HttpServletResponse httpServletResponse, DownloadFileDTO downloadFileDTO); void previewFile(HttpServletResponse httpServletResponse, PreviewDTO previewDTO); void deleteFile(FileBean fileBean); - StorageBean selectStorageBean(StorageBean storageBean); - void insertStorageBean(StorageBean storageBean); - - void updateStorageBean(StorageBean storageBean); - - StorageBean selectStorageByUser(StorageBean storageBean); Long selectStorageSizeByUserId(Long userId); } diff --git a/src/main/java/com/qiwenshare/file/api/IStorageService.java b/src/main/java/com/qiwenshare/file/api/IStorageService.java index c230a06..766118b 100644 --- a/src/main/java/com/qiwenshare/file/api/IStorageService.java +++ b/src/main/java/com/qiwenshare/file/api/IStorageService.java @@ -4,6 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.qiwenshare.file.domain.StorageBean; public interface IStorageService extends IService { - public Long getTotalStorageSize(Long userId); + Long getTotalStorageSize(Long userId); boolean checkStorage(Long userId, Long fileSize); } diff --git a/src/main/java/com/qiwenshare/file/api/IUserFileService.java b/src/main/java/com/qiwenshare/file/api/IUserFileService.java index 59833df..c2dd075 100644 --- a/src/main/java/com/qiwenshare/file/api/IUserFileService.java +++ b/src/main/java/com/qiwenshare/file/api/IUserFileService.java @@ -15,14 +15,12 @@ public interface IUserFileService extends IService { boolean isDirExist(String fileName, String filePath, long userId); List selectSameUserFile(String fileName, String filePath, String extendName, Long userId); void replaceUserFilePath(String filePath, String oldFilePath, Long userId); - List userFileList(UserFile userFile, Long beginCount, Long pageCount); + IPage userFileList(String filePath, Long beginCount, Long pageCount); void updateFilepathByFilepath(String oldfilePath, String newfilePath, String fileName, String extendName, long userId); void userFileCopy(String oldfilePath, String newfilePath, String fileName, String extendName, long userId); IPage getFileByFileType(Integer fileTypeId, Long currentPage, Long pageCount, long userId); - Long selectCountByExtendName(List fileNameList, Long beginCount, Long pageCount, long userId); - List selectFileNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId); - Long selectCountNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId); + List selectFileListLikeRightFilePath(String filePath, long userId); List selectFilePathTreeByUserId(Long userId); void deleteUserFile(Long userFileId, Long sessionUserId); diff --git a/src/main/java/com/qiwenshare/file/component/AsyncTaskComp.java b/src/main/java/com/qiwenshare/file/component/AsyncTaskComp.java index 4efe9c3..52e4355 100644 --- a/src/main/java/com/qiwenshare/file/component/AsyncTaskComp.java +++ b/src/main/java/com/qiwenshare/file/component/AsyncTaskComp.java @@ -2,19 +2,36 @@ package com.qiwenshare.file.component; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.api.IFileService; import com.qiwenshare.file.api.IFiletransferService; import com.qiwenshare.file.api.IRecoveryFileService; import com.qiwenshare.file.api.IUserFileService; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.UserFile; +import com.qiwenshare.file.mapper.FileMapper; +import com.qiwenshare.file.mapper.UserFileMapper; +import com.qiwenshare.file.util.QiwenFileUtil; +import com.qiwenshare.ufop.factory.UFOPFactory; +import com.qiwenshare.ufop.operation.copy.domain.CopyFile; +import com.qiwenshare.ufop.util.UFOPUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.Future; /** @@ -26,17 +43,34 @@ import java.util.concurrent.Future; public class AsyncTaskComp { @Resource IUserFileService userFileService; - @Resource - IFileService fileService; + @Resource IRecoveryFileService recoveryFileService; @Resource IFiletransferService filetransferService; + @Resource + UFOPFactory ufopFactory; + @Resource + UserFileMapper userFileMapper; + @Resource + FileMapper fileMapper; + @Resource + FileDealComp fileDealComp; + + @Value("${ufop.storage-type}") + private Integer storageType; + + public Long getFilePointCount(Long fileId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserFile::getFileId, fileId); + long count = userFileMapper.selectCount(lambdaQueryWrapper); + return count; + } public Future deleteUserFile(Long userFileId) { long begin = System.currentTimeMillis(); - UserFile userFile =userFileService.getById(userFileId); + UserFile userFile = userFileService.getById(userFileId); if (userFile.getIsDir() == 1) { LambdaQueryWrapper userFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); userFileLambdaQueryWrapper.eq(UserFile::getDeleteBatchNum, userFile.getDeleteBatchNum()); @@ -44,13 +78,13 @@ public class AsyncTaskComp { recoveryFileService.deleteUserFileByDeleteBatchNum(userFile.getDeleteBatchNum()); for (UserFile userFileItem : list) { - Long filePointCount = fileService.getFilePointCount(userFileItem.getFileId()); + Long filePointCount = getFilePointCount(userFileItem.getFileId()); if (filePointCount != null && filePointCount == 0 && userFileItem.getIsDir() == 0) { - FileBean fileBean = fileService.getById(userFileItem.getFileId()); + FileBean fileBean = fileMapper.selectById(userFileItem.getFileId()); try { filetransferService.deleteFile(fileBean); - fileService.removeById(fileBean.getFileId()); + fileMapper.deleteById(fileBean.getFileId()); } catch (Exception e) { log.error("删除本地文件失败:" + JSON.toJSONString(fileBean)); } @@ -59,13 +93,13 @@ public class AsyncTaskComp { } else { recoveryFileService.deleteUserFileByDeleteBatchNum(userFile.getDeleteBatchNum()); - Long filePointCount = fileService.getFilePointCount(userFile.getFileId()); + Long filePointCount = getFilePointCount(userFile.getFileId()); if (filePointCount != null && filePointCount == 0 && userFile.getIsDir() == 0) { - FileBean fileBean = fileService.getById(userFile.getFileId()); + FileBean fileBean = fileMapper.selectById(userFile.getFileId()); try { filetransferService.deleteFile(fileBean); - fileService.removeById(fileBean.getFileId()); + fileMapper.deleteById(fileBean.getFileId()); } catch (Exception e) { log.error("删除本地文件失败:" + JSON.toJSONString(fileBean)); } @@ -73,34 +107,126 @@ public class AsyncTaskComp { } long end = System.currentTimeMillis(); - System.out.println("任务 deleteUserFile 耗时="+(end-begin)); + System.out.println("任务 deleteUserFile 耗时=" + (end - begin)); return new AsyncResult("deleteUserFile"); } - + + + public Future saveUnzipFile(UserFile userFile, FileBean fileBean, int unzipMode, String entryName, String filePath) { + String unzipUrl = UFOPUtils.getTempFile(fileBean.getFileUrl()).getAbsolutePath().replace("." + userFile.getExtendName(), ""); + String totalFileUrl = unzipUrl + entryName; + File currentFile = new File(totalFileUrl); + + + UserFile saveUserFile = new UserFile(); + + saveUserFile.setUploadTime(DateUtil.getCurrentTime()); + saveUserFile.setUserId(userFile.getUserId()); + saveUserFile.setFilePath(UFOPUtils.pathSplitFormat(userFile.getFilePath() + entryName.replace(currentFile.getName(), "")).replace("\\", "/")); + + if (currentFile.isDirectory()) { + saveUserFile.setIsDir(1); + saveUserFile.setFileName(currentFile.getName()); + } else { + + FileInputStream fis = null; + String md5Str = UUID.randomUUID().toString(); + try { + fis = new FileInputStream(currentFile); + md5Str = DigestUtils.md5Hex(fis); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + IOUtils.closeQuietly(fis); + } + + FileInputStream fileInputStream = null; + try { + Map param = new HashMap<>(); + param.put("identifier", md5Str); + List list = fileMapper.selectByMap(param); + + if (list != null && !list.isEmpty()) { //文件已存在 + saveUserFile.setFileId(list.get(0).getFileId()); + } else { //文件不存在 + fileInputStream = new FileInputStream(currentFile); + CopyFile createFile = new CopyFile(); + createFile.setExtendName(UFOPUtils.getFileExtendName(totalFileUrl)); + String saveFileUrl = ufopFactory.getCopier().copy(fileInputStream, createFile); + + FileBean tempFileBean = new FileBean(saveFileUrl, currentFile.length(), storageType, md5Str, userFile.getUserId()); +; + fileMapper.insert(tempFileBean); + + saveUserFile.setFileId(tempFileBean.getFileId()); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + IOUtils.closeQuietly(fileInputStream); + System.gc(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + currentFile.delete(); + } + + saveUserFile.setIsDir(0); + saveUserFile.setExtendName(UFOPUtils.getFileExtendName(totalFileUrl)); + saveUserFile.setFileName(UFOPUtils.getFileNameNotExtend(currentFile.getName())); + + } + + + saveUserFile.setDeleteFlag(0); + + if (unzipMode == 1) { + saveUserFile.setFilePath(UFOPUtils.pathSplitFormat(userFile.getFilePath() + userFile.getFileName() + "/" + entryName.replace(currentFile.getName(), "")).replace("\\", "/")); + } else if (unzipMode == 2) { + saveUserFile.setFilePath(UFOPUtils.pathSplitFormat(filePath + entryName.replace(currentFile.getName(), "")).replace("\\", "/")); + } + + String fileName = fileDealComp.getRepeatFileName(saveUserFile, saveUserFile.getFilePath()); + + if (saveUserFile.getIsDir() == 1 && !fileName.equals(saveUserFile.getFileName())) { + //如果是目录,而且重复,什么也不做 + } else { + saveUserFile.setFileName(fileName); + userFileMapper.insert(saveUserFile); + } + + + return new AsyncResult("saveUnzipFile"); + } + //获取异步结果 - public Future task4() throws InterruptedException{ + public Future task4() throws InterruptedException { long begin = System.currentTimeMillis(); Thread.sleep(2000L); long end = System.currentTimeMillis(); - System.out.println("任务4耗时="+(end-begin)); + System.out.println("任务4耗时=" + (end - begin)); return new AsyncResult("任务4"); } - - - public Future task5() throws InterruptedException{ + + + public Future task5() throws InterruptedException { long begin = System.currentTimeMillis(); Thread.sleep(3000L); long end = System.currentTimeMillis(); - System.out.println("任务5耗时="+(end-begin)); + System.out.println("任务5耗时=" + (end - begin)); return new AsyncResult("任务5"); } - - public Future task6() throws InterruptedException{ + + public Future task6() throws InterruptedException { long begin = System.currentTimeMillis(); Thread.sleep(1000L); long end = System.currentTimeMillis(); - System.out.println("任务6耗时="+(end-begin)); + System.out.println("任务6耗时=" + (end - begin)); return new AsyncResult("任务6"); } - + } \ No newline at end of file diff --git a/src/main/java/com/qiwenshare/file/component/FileDealComp.java b/src/main/java/com/qiwenshare/file/component/FileDealComp.java index 69d94c5..c21f082 100644 --- a/src/main/java/com/qiwenshare/file/component/FileDealComp.java +++ b/src/main/java/com/qiwenshare/file/component/FileDealComp.java @@ -258,9 +258,10 @@ public class FileDealComp { public void uploadESByUserFileId(Long userFileId) { try { - UserFile userFile = new UserFile(); - userFile.setUserFileId(userFileId); - List userfileResult = userFileMapper.userFileList(userFile, null, null); + + Map param = new HashMap<>(); + param.put("userFileId", userFileId); + List userfileResult = userFileMapper.selectByMap(param); if (userfileResult != null && userfileResult.size() > 0) { FileSearch fileSearch = new FileSearch(); BeanUtil.copyProperties(userfileResult.get(0), fileSearch); diff --git a/src/main/java/com/qiwenshare/file/controller/FileController.java b/src/main/java/com/qiwenshare/file/controller/FileController.java index 808a4ac..3488836 100644 --- a/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -197,35 +197,13 @@ public class FileController { @Parameter(description = "当前页", required = true) long currentPage, @Parameter(description = "页面数量", required = true) long pageCount){ - UserFile userFile = new UserFile(); - JwtUser sessionUserBean = SessionUtil.getSession(); - if (userFile == null) { - return RestResult.fail(); - } - userFile.setUserId(sessionUserBean.getUserId()); + IPage fileList = userFileService.userFileList(filePath, currentPage, pageCount); - List fileList = null; - userFile.setFilePath(UFOPUtils.urlDecode(filePath)); - if (currentPage == 0 || pageCount == 0) { - fileList = userFileService.userFileList(userFile, 0L, 10L); - } else { - long beginCount = (currentPage - 1) * pageCount; - - fileList = userFileService.userFileList(userFile, beginCount, pageCount); - - } - - LambdaQueryWrapper userFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); - userFileLambdaQueryWrapper.eq(UserFile::getUserId, userFile.getUserId()) - .eq(UserFile::getFilePath, userFile.getFilePath()) - .eq(UserFile::getDeleteFlag, 0); - long total = userFileService.count(userFileLambdaQueryWrapper); - Map map = new HashMap<>(); - map.put("total", total); - map.put("list", fileList); + map.put("total", fileList.getTotal()); + map.put("list", fileList.getRecords()); return RestResult.success().data(map); @@ -270,8 +248,6 @@ public class FileController { @ResponseBody public RestResult unzipFile(@RequestBody UnzipFileDTO unzipFileDto) { - JwtUser sessionUserBean = SessionUtil.getSession(); - try { fileService.unzipFile(unzipFileDto.getUserFileId(), unzipFileDto.getUnzipMode(), unzipFileDto.getFilePath()); } catch (QiwenException e) { diff --git a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index 4d3ea73..44cdfd4 100644 --- a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -41,7 +41,7 @@ import java.util.List; import java.util.Map; @Slf4j -@Tag(name = "filetransfer", description = "该接口为文件传输接口,主要用来做文件的上传和下载") +@Tag(name = "filetransfer", description = "该接口为文件传输接口,主要用来做文件的上传、下载和预览") @RestController @RequestMapping("/filetransfer") public class FiletransferController { @@ -83,77 +83,7 @@ public class FiletransferController { if (!isCheckSuccess) { return RestResult.fail().message("存储空间不足"); } - - UploadFileVo uploadFileVo = new UploadFileVo(); - Map param = new HashMap(); - param.put("identifier", uploadFileDto.getIdentifier()); - - List list = fileService.listByMap(param); - if (list != null && !list.isEmpty()) { - FileBean file = list.get(0); - - UserFile userFile = new UserFile(); - - userFile.setUserId(sessionUserBean.getUserId()); - String relativePath = uploadFileDto.getRelativePath(); - if (relativePath.contains("/")) { - userFile.setFilePath(uploadFileDto.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/"); - fileDealComp.restoreParentFilePath(uploadFileDto.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/", sessionUserBean.getUserId()); - fileDealComp.deleteRepeatSubDirFile(uploadFileDto.getFilePath(), sessionUserBean.getUserId()); - } else { - userFile.setFilePath(uploadFileDto.getFilePath()); - } - - String fileName = uploadFileDto.getFilename(); - userFile.setFileName(UFOPUtils.getFileNameNotExtend(fileName)); - userFile.setExtendName(UFOPUtils.getFileExtendName(fileName)); - userFile.setDeleteFlag(0); - List userFileList = userFileService.userFileList(userFile, null, null); - if (userFileList.size() <= 0) { - - userFile.setIsDir(0); - userFile.setUploadTime(DateUtil.getCurrentTime()); - userFile.setFileId(file.getFileId()); - //"fileName", "filePath", "extendName", "deleteFlag", "userId" - - userFileService.save(userFile); -// fileService.increaseFilePointCount(file.getFileId()); - fileDealComp.uploadESByUserFileId(userFile.getUserFileId()); - } - - uploadFileVo.setSkipUpload(true); - - } else { - uploadFileVo.setSkipUpload(false); - - List uploaded = uploadTaskDetailService.getUploadedChunkNumList(uploadFileDto.getIdentifier()); - if (uploaded != null && !uploaded.isEmpty()) { - uploadFileVo.setUploaded(uploaded); - } else { - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(UploadTask::getIdentifier, uploadFileDto.getIdentifier()); - List rslist = uploadTaskService.list(lambdaQueryWrapper); - if (rslist == null || rslist.isEmpty()) { - UploadTask uploadTask = new UploadTask(); - uploadTask.setIdentifier(uploadFileDto.getIdentifier()); - uploadTask.setUploadTime(DateUtil.getCurrentTime()); - uploadTask.setUploadStatus(UploadFileStatusEnum.UNCOMPLATE.getCode()); - uploadTask.setFileName(uploadFileDto.getFilename()); - String relativePath = uploadFileDto.getRelativePath(); - if (relativePath.contains("/")) { - uploadTask.setFilePath(uploadFileDto.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/"); - } else { - uploadTask.setFilePath(uploadFileDto.getFilePath()); - } - uploadTask.setExtendName(uploadTask.getExtendName()); - uploadTask.setUserId(sessionUserBean.getUserId()); - - uploadTaskService.save(uploadTask); - } - } - - } + UploadFileVo uploadFileVo = filetransferService.uploadFileSpeed(uploadFileDto); return RestResult.success().data(uploadFileVo); } diff --git a/src/main/java/com/qiwenshare/file/controller/OfficeController.java b/src/main/java/com/qiwenshare/file/controller/OfficeController.java index b632648..961442c 100644 --- a/src/main/java/com/qiwenshare/file/controller/OfficeController.java +++ b/src/main/java/com/qiwenshare/file/controller/OfficeController.java @@ -106,7 +106,6 @@ public class OfficeController { fileBean.setFileSize(0L); fileBean.setFileUrl(fileUrl); fileBean.setStorageType(storageType); -// fileBean.setPointCount(1); fileBean.setIdentifier(uuid); fileBean.setCreateTime(DateUtil.getCurrentTime()); fileBean.setCreateUserId(loginUser.getUserId()); diff --git a/src/main/java/com/qiwenshare/file/controller/ShareController.java b/src/main/java/com/qiwenshare/file/controller/ShareController.java index d917b7e..ec02daf 100644 --- a/src/main/java/com/qiwenshare/file/controller/ShareController.java +++ b/src/main/java/com/qiwenshare/file/controller/ShareController.java @@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qiwenshare.common.anno.MyLog; import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.util.DateUtil; -import com.qiwenshare.file.api.*; +import com.qiwenshare.file.api.IShareFileService; +import com.qiwenshare.file.api.IShareService; +import com.qiwenshare.file.api.IUserFileService; import com.qiwenshare.file.component.FileDealComp; import com.qiwenshare.file.config.security.user.JwtUser; import com.qiwenshare.file.domain.Share; @@ -36,15 +38,12 @@ import java.util.*; public class ShareController { public static final String CURRENT_MODULE = "文件分享"; - @Resource - IUserService userService; + @Resource IShareFileService shareFileService; @Resource IShareService shareService; @Resource - IFileService fileService; - @Resource IUserFileService userFileService; @Resource FileDealComp fileDealComp; @@ -129,12 +128,8 @@ public class ShareController { p.setFilePath(p.getFilePath().replaceFirst(filePath + fileName, savefilePath + savefileName)); saveUserFileList.add(p); log.info("当前文件:" + JSON.toJSONString(p)); - if (p.getIsDir() == 0) { -// fileService.increaseFilePointCount(p.getFileId()); - } + }); - } else { -// fileService.increaseFilePointCount(userFile.getFileId()); } userFile.setUserFileId(null); userFile.setUserId(userId); diff --git a/src/main/java/com/qiwenshare/file/controller/TaskController.java b/src/main/java/com/qiwenshare/file/controller/TaskController.java index 8b8d095..71d8889 100644 --- a/src/main/java/com/qiwenshare/file/controller/TaskController.java +++ b/src/main/java/com/qiwenshare/file/controller/TaskController.java @@ -1,42 +1,23 @@ package com.qiwenshare.file.controller; -import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qiwenshare.file.api.IElasticSearchService; import com.qiwenshare.file.component.FileDealComp; -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; -import com.qiwenshare.ufop.factory.UFOPFactory; -import com.qiwenshare.ufop.operation.read.Reader; -import com.qiwenshare.ufop.operation.read.domain.ReadFile; import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.List; @Slf4j @Controller public class TaskController { - @Resource - FileService fileService; @Resource UserFileService userFileService; - @Resource - FiletransferService filetransferService; @Autowired private IElasticSearchService elasticSearchService; @Resource diff --git a/src/main/java/com/qiwenshare/file/controller/UserController.java b/src/main/java/com/qiwenshare/file/controller/UserController.java index 3e9957e..9f363e5 100644 --- a/src/main/java/com/qiwenshare/file/controller/UserController.java +++ b/src/main/java/com/qiwenshare/file/controller/UserController.java @@ -19,7 +19,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.apache.shiro.crypto.hash.SimpleHash; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/com/qiwenshare/file/domain/FileBean.java b/src/main/java/com/qiwenshare/file/domain/FileBean.java index 04a52f8..a2ddb57 100644 --- a/src/main/java/com/qiwenshare/file/domain/FileBean.java +++ b/src/main/java/com/qiwenshare/file/domain/FileBean.java @@ -3,6 +3,7 @@ package com.qiwenshare.file.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.qiwenshare.common.util.DateUtil; import lombok.Data; import javax.persistence.*; @@ -51,4 +52,19 @@ public class FileBean { @Column(columnDefinition="bigint(20)") private Long modifyUserId; + public FileBean(){ + + } + + public FileBean(String fileUrl, Long fileSize, Integer storageType, String identifier, Long userId) { + this.fileUrl = fileUrl; + this.fileSize = fileSize; + this.fileStatus = 1; + this.storageType = storageType; + this.identifier = identifier; + this.createTime = DateUtil.getCurrentTime(); + this.createUserId = userId; + + } + } diff --git a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java index e8272a9..22a0b4d 100644 --- a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java +++ b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java @@ -14,7 +14,6 @@ import java.util.Map; public interface UserFileMapper extends BaseMapper { void replaceFilePath(@Param("filePath") String filePath, @Param("oldFilePath") String oldFilePath, @Param("userId") Long userId); - List userFileList(@Param("userFile") UserFile userFile, Long beginCount, Long pageCount); void updateFilepathByPathAndName(String oldfilePath, String newfilePath, String fileName, String extendName, long userId); void updateFilepathByFilepath(String oldfilePath, String newfilePath, long userId); @@ -29,9 +28,6 @@ public interface UserFileMapper extends BaseMapper { @Param("newFilePath") String newfilePath, @Param("userId") long userId); - IPage selectFileByExtendName(Page page, List fileNameList, long userId); - Long selectCountByExtendName(List fileNameList, Long beginCount, Long pageCount, long userId); - List selectFileNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId); - Long selectCountNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId); + IPage selectPageVo(Page page, @Param("userFile") UserFile userFile, @Param("extendNameList") List extendNameList); Long selectStorageSizeByUserId(@Param("userId") Long userId); } diff --git a/src/main/java/com/qiwenshare/file/service/FileService.java b/src/main/java/com/qiwenshare/file/service/FileService.java index 5374cb3..22acec9 100644 --- a/src/main/java/com/qiwenshare/file/service/FileService.java +++ b/src/main/java/com/qiwenshare/file/service/FileService.java @@ -3,22 +3,19 @@ package com.qiwenshare.file.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qiwenshare.common.operation.FileOperation; -import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.advice.QiwenException; import com.qiwenshare.file.api.IFileService; -import com.qiwenshare.file.component.FileDealComp; +import com.qiwenshare.file.component.AsyncTaskComp; import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.mapper.FileMapper; import com.qiwenshare.file.mapper.UserFileMapper; import com.qiwenshare.file.util.QiwenFileUtil; import com.qiwenshare.ufop.factory.UFOPFactory; -import com.qiwenshare.ufop.operation.copy.domain.CopyFile; import com.qiwenshare.ufop.operation.download.Downloader; import com.qiwenshare.ufop.operation.download.domain.DownloadFile; import com.qiwenshare.ufop.util.UFOPUtils; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -26,13 +23,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.Executors; @@ -47,12 +41,12 @@ public class FileService extends ServiceImpl implements IF UserFileMapper userFileMapper; @Resource UFOPFactory ufopFactory; + @Value("${ufop.storage-type}") private Integer storageType; @Resource - FileDealComp fileDealComp; - + AsyncTaskComp asyncTaskComp; @Override public Long getFilePointCount(Long fileId) { @@ -110,103 +104,7 @@ public class FileService extends ServiceImpl implements IF } for (int i = 0; i < fileEntryNameList.size(); i++){ String entryName = fileEntryNameList.get(i); - log.info("文件名:"+ entryName); - executor.execute(() -> { - String totalFileUrl = unzipUrl + entryName; - File currentFile = new File(totalFileUrl); - - FileBean tempFileBean = new FileBean(); - UserFile saveUserFile = new UserFile(); - - saveUserFile.setUploadTime(DateUtil.getCurrentTime()); - saveUserFile.setUserId(userFile.getUserId()); - saveUserFile.setFilePath(UFOPUtils.pathSplitFormat(userFile.getFilePath() + entryName.replace(currentFile.getName(), "")).replace("\\", "/")); - - if (currentFile.isDirectory()){ - saveUserFile.setIsDir(1); - saveUserFile.setFileName(currentFile.getName()); - }else{ - - FileInputStream fileInputStream = null; - FileInputStream fileInputStream1 = null; - try { - fileInputStream = new FileInputStream(currentFile); - String md5Str = DigestUtils.md5Hex(fileInputStream); - Map param = new HashMap(); - param.put("identifier", md5Str); - - List list = fileMapper.selectByMap(param); - if (list != null && !list.isEmpty()) { //文件已存在 - saveUserFile.setFileId(list.get(0).getFileId()); - } else { //文件不存在 - fileInputStream1 = new FileInputStream(currentFile); - CopyFile createFile = new CopyFile(); - createFile.setExtendName(UFOPUtils.getFileExtendName(totalFileUrl)); - String saveFileUrl = ufopFactory.getCopier().copy(fileInputStream1, createFile); - tempFileBean.setFileSize(currentFile.length()); - tempFileBean.setFileUrl(saveFileUrl); - tempFileBean.setStorageType(storageType); - tempFileBean.setIdentifier(md5Str); - fileMapper.insert(tempFileBean); - - saveUserFile.setFileId(tempFileBean.getFileId()); - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (fileInputStream != null) { - try { - log.info("关闭流"); - fileInputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (fileInputStream1 != null) { - try { - log.info("关闭流"); - fileInputStream1.close(); - - System.gc(); - try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - } catch (IOException e) { - e.printStackTrace(); - } - - currentFile.delete(); - } - } - - saveUserFile.setIsDir(0); - saveUserFile.setExtendName(UFOPUtils.getFileExtendName(totalFileUrl)); - saveUserFile.setFileName(UFOPUtils.getFileNameNotExtend(currentFile.getName())); - - } - - - saveUserFile.setDeleteFlag(0); - - if (unzipMode == 1) { - saveUserFile.setFilePath(UFOPUtils.pathSplitFormat(userFile.getFilePath() + userFile.getFileName() + "/" + entryName.replace(currentFile.getName(), "")).replace("\\", "/")); - } else if(unzipMode == 2) { - saveUserFile.setFilePath(UFOPUtils.pathSplitFormat(filePath + entryName.replace(currentFile.getName(), "")).replace("\\", "/")); - } - - String fileName = fileDealComp.getRepeatFileName(saveUserFile, saveUserFile.getFilePath()); - - if (saveUserFile.getIsDir() == 1 && !fileName.equals(saveUserFile.getFileName())) { - //如果是目录,而且重复,什么也不做 - } else { - saveUserFile.setFileName(fileName); - userFileMapper.insert(saveUserFile); - } - - }); + asyncTaskComp.saveUnzipFile(userFile, fileBean, unzipMode, entryName, filePath); } } diff --git a/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/src/main/java/com/qiwenshare/file/service/FiletransferService.java index 0083c8e..835a580 100644 --- a/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -2,16 +2,20 @@ package com.qiwenshare.file.service; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.api.IFiletransferService; import com.qiwenshare.file.component.FileDealComp; +import com.qiwenshare.file.config.security.user.JwtUser; import com.qiwenshare.file.domain.*; import com.qiwenshare.file.dto.file.DownloadFileDTO; import com.qiwenshare.file.dto.file.PreviewDTO; import com.qiwenshare.file.dto.file.UploadFileDTO; import com.qiwenshare.file.mapper.*; +import com.qiwenshare.file.util.SessionUtil; import com.qiwenshare.file.vo.file.FileListVo; +import com.qiwenshare.file.vo.file.UploadFileVo; import com.qiwenshare.ufop.constant.StorageTypeEnum; import com.qiwenshare.ufop.constant.UploadFileStatusEnum; import com.qiwenshare.ufop.exception.operation.DownloadException; @@ -36,7 +40,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.zip.Adler32; import java.util.zip.CheckedOutputStream; import java.util.zip.ZipEntry; @@ -47,8 +53,6 @@ import java.util.zip.ZipOutputStream; @Transactional(rollbackFor=Exception.class) public class FiletransferService implements IFiletransferService { - @Resource - StorageMapper storageMapper; @Resource FileMapper fileMapper; @@ -60,12 +64,87 @@ public class FiletransferService implements IFiletransferService { @Resource FileDealComp fileDealComp; @Resource - UploadTaskDetailMapper UploadTaskDetailMapper; + UploadTaskDetailMapper uploadTaskDetailMapper; @Resource UploadTaskMapper uploadTaskMapper; @Resource ImageMapper imageMapper; + + + @Override + public UploadFileVo uploadFileSpeed(UploadFileDTO uploadFileDTO) { + UploadFileVo uploadFileVo = new UploadFileVo(); + JwtUser sessionUserBean = SessionUtil.getSession(); + Map param = new HashMap<>(); + param.put("identifier", uploadFileDTO.getIdentifier()); + List list = fileMapper.selectByMap(param); + + if (list != null && !list.isEmpty()) { + FileBean file = list.get(0); + + UserFile userFile = new UserFile(); + + userFile.setUserId(sessionUserBean.getUserId()); + String relativePath = uploadFileDTO.getRelativePath(); + if (relativePath.contains("/")) { + userFile.setFilePath(uploadFileDTO.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/"); + fileDealComp.restoreParentFilePath(uploadFileDTO.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/", sessionUserBean.getUserId()); + fileDealComp.deleteRepeatSubDirFile(uploadFileDTO.getFilePath(), sessionUserBean.getUserId()); + } else { + userFile.setFilePath(uploadFileDTO.getFilePath()); + } + + String fileName = uploadFileDTO.getFilename(); + userFile.setFileName(UFOPUtils.getFileNameNotExtend(fileName)); + userFile.setExtendName(UFOPUtils.getFileExtendName(fileName)); + userFile.setDeleteFlag(0); + + List userFileList = userFileMapper.selectList(new QueryWrapper<>(userFile)); + if (userFileList.size() <= 0) { + + userFile.setIsDir(0); + userFile.setUploadTime(DateUtil.getCurrentTime()); + userFile.setFileId(file.getFileId()); + userFileMapper.insert(userFile); + fileDealComp.uploadESByUserFileId(userFile.getUserFileId()); + } + + uploadFileVo.setSkipUpload(true); + + } else { + uploadFileVo.setSkipUpload(false); + + List uploaded = uploadTaskDetailMapper.selectUploadedChunkNumList(uploadFileDTO.getIdentifier()); + if (uploaded != null && !uploaded.isEmpty()) { + uploadFileVo.setUploaded(uploaded); + } else { + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UploadTask::getIdentifier, uploadFileDTO.getIdentifier()); + List rslist = uploadTaskMapper.selectList(lambdaQueryWrapper); + if (rslist == null || rslist.isEmpty()) { + UploadTask uploadTask = new UploadTask(); + uploadTask.setIdentifier(uploadFileDTO.getIdentifier()); + uploadTask.setUploadTime(DateUtil.getCurrentTime()); + uploadTask.setUploadStatus(UploadFileStatusEnum.UNCOMPLATE.getCode()); + uploadTask.setFileName(uploadFileDTO.getFilename()); + String relativePath = uploadFileDTO.getRelativePath(); + if (relativePath.contains("/")) { + uploadTask.setFilePath(uploadFileDTO.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/"); + } else { + uploadTask.setFilePath(uploadFileDTO.getFilePath()); + } + uploadTask.setExtendName(uploadTask.getExtendName()); + uploadTask.setUserId(sessionUserBean.getUserId()); + uploadTaskMapper.insert(uploadTask); + } + } + + } + return uploadFileVo; + } + @Override public void uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDto, Long userId) { @@ -113,7 +192,7 @@ public class FiletransferService implements IFiletransferService { userFile.setExtendName(uploadFileResult.getExtendName()); userFile.setDeleteFlag(0); userFile.setIsDir(0); - List userFileList = userFileMapper.userFileList(userFile, null, null); + List userFileList = userFileMapper.selectList(new QueryWrapper<>(userFile)); if (userFileList.size() > 0) { String fileName = fileDealComp.getRepeatFileName(userFile, uploadFileDto.getFilePath()); userFile.setFileName(fileName); @@ -127,7 +206,7 @@ public class FiletransferService implements IFiletransferService { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(UploadTaskDetail::getIdentifier, uploadFileDto.getIdentifier()); - UploadTaskDetailMapper.delete(lambdaQueryWrapper); + uploadTaskDetailMapper.delete(lambdaQueryWrapper); LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.set(UploadTask::getUploadStatus, UploadFileStatusEnum.SUCCESS.getCode()) @@ -143,26 +222,26 @@ public class FiletransferService implements IFiletransferService { } } else if (UploadFileStatusEnum.UNCOMPLATE.equals(uploadFileResult.getStatus())) { - UploadTaskDetail UploadTaskDetail = new UploadTaskDetail(); - UploadTaskDetail.setFilePath(uploadFileDto.getFilePath()); + UploadTaskDetail uploadTaskDetail = new UploadTaskDetail(); + uploadTaskDetail.setFilePath(uploadFileDto.getFilePath()); if (relativePath.contains("/")) { - UploadTaskDetail.setFilePath(uploadFileDto.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/"); + uploadTaskDetail.setFilePath(uploadFileDto.getFilePath() + UFOPUtils.getParentPath(relativePath) + "/"); } else { - UploadTaskDetail.setFilePath(uploadFileDto.getFilePath()); + uploadTaskDetail.setFilePath(uploadFileDto.getFilePath()); } - UploadTaskDetail.setFilename(uploadFileDto.getFilename()); - UploadTaskDetail.setChunkNumber(uploadFileDto.getChunkNumber()); - UploadTaskDetail.setChunkSize((int)uploadFileDto.getChunkSize()); - UploadTaskDetail.setRelativePath(uploadFileDto.getRelativePath()); - UploadTaskDetail.setTotalChunks(uploadFileDto.getTotalChunks()); - UploadTaskDetail.setTotalSize((int)uploadFileDto.getTotalSize()); - UploadTaskDetail.setIdentifier(uploadFileDto.getIdentifier()); - UploadTaskDetailMapper.insert(UploadTaskDetail); + uploadTaskDetail.setFilename(uploadFileDto.getFilename()); + uploadTaskDetail.setChunkNumber(uploadFileDto.getChunkNumber()); + uploadTaskDetail.setChunkSize((int)uploadFileDto.getChunkSize()); + uploadTaskDetail.setRelativePath(uploadFileDto.getRelativePath()); + uploadTaskDetail.setTotalChunks(uploadFileDto.getTotalChunks()); + uploadTaskDetail.setTotalSize((int)uploadFileDto.getTotalSize()); + uploadTaskDetail.setIdentifier(uploadFileDto.getIdentifier()); + uploadTaskDetailMapper.insert(uploadTaskDetail); } else if (UploadFileStatusEnum.FAIL.equals(uploadFileResult.getStatus())) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(UploadTaskDetail::getIdentifier, uploadFileDto.getIdentifier()); - UploadTaskDetailMapper.delete(lambdaQueryWrapper); + uploadTaskDetailMapper.delete(lambdaQueryWrapper); LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.set(UploadTask::getUploadStatus, UploadFileStatusEnum.FAIL.getCode()) @@ -329,34 +408,7 @@ public class FiletransferService implements IFiletransferService { deleter.delete(deleteFile); } - @Override - public StorageBean selectStorageBean(StorageBean storageBean) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(StorageBean::getUserId, storageBean.getUserId()); - return storageMapper.selectOne(lambdaQueryWrapper); - } - - @Override - public void insertStorageBean(StorageBean storageBean) { - storageMapper.insert(storageBean); - } - - @Override - public void updateStorageBean(StorageBean storageBean) { - LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - lambdaUpdateWrapper.set(StorageBean::getStorageSize, storageBean.getStorageSize()) - .eq(StorageBean::getStorageId, storageBean.getStorageId()) - .eq(StorageBean::getUserId, storageBean.getUserId()); - storageMapper.update(null, lambdaUpdateWrapper); - } - - @Override - public StorageBean selectStorageByUser(StorageBean storageBean) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(StorageBean::getUserId, storageBean.getUserId()); - return storageMapper.selectOne(lambdaQueryWrapper); - } @Override public Long selectStorageSizeByUserId(Long userId){ diff --git a/src/main/java/com/qiwenshare/file/service/NoticeService.java b/src/main/java/com/qiwenshare/file/service/NoticeService.java index 6011742..0f0d5c7 100644 --- a/src/main/java/com/qiwenshare/file/service/NoticeService.java +++ b/src/main/java/com/qiwenshare/file/service/NoticeService.java @@ -11,10 +11,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; -/** - * @author: xxxg - * @date: 2021/11/18 10:45 - */ + @Service public class NoticeService extends ServiceImpl implements INoticeService { @Resource diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index 6544e82..bc61e44 100644 --- a/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -9,13 +9,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qiwenshare.common.constant.FileConstant; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.api.IUserFileService; +import com.qiwenshare.file.config.security.user.JwtUser; import com.qiwenshare.file.domain.RecoveryFile; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.mapper.FileMapper; import com.qiwenshare.file.mapper.FileTypeMapper; import com.qiwenshare.file.mapper.RecoveryFileMapper; import com.qiwenshare.file.mapper.UserFileMapper; +import com.qiwenshare.file.util.SessionUtil; import com.qiwenshare.file.vo.file.FileListVo; +import com.qiwenshare.ufop.util.UFOPUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -85,8 +88,15 @@ public class UserFileService extends ServiceImpl impl } @Override - public List userFileList(UserFile userFile, Long beginCount, Long pageCount) { - return userFileMapper.userFileList(userFile, beginCount, pageCount); + public IPage userFileList(String filePath, Long currentPage, Long pageCount) { + Page page = new Page<>(currentPage, pageCount); + UserFile userFile = new UserFile(); + JwtUser sessionUserBean = SessionUtil.getSession(); + + userFile.setUserId(sessionUserBean.getUserId()); + userFile.setFilePath(UFOPUtils.urlDecode(filePath)); + + return userFileMapper.selectPageVo(page, userFile, null); } @Override @@ -140,7 +150,6 @@ public class UserFileService extends ServiceImpl impl } - @Override public IPage getFileByFileType(Integer fileTypeId, Long currentPage, Long pageCount, long userId) { Page page = new Page<>(currentPage, pageCount); @@ -149,22 +158,9 @@ public class UserFileService extends ServiceImpl impl if (extendNameList != null && extendNameList.isEmpty()) { return page; } - return userFileMapper.selectFileByExtendName(page, extendNameList, userId); - } - - @Override - public Long selectCountByExtendName(List fileNameList, Long beginCount, Long pageCount, long userId) { - return userFileMapper.selectCountByExtendName(fileNameList, beginCount, pageCount, userId); - } - - @Override - public List selectFileNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId) { - return userFileMapper.selectFileNotInExtendNames(fileNameList, beginCount, pageCount, userId); - } - - @Override - public Long selectCountNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId) { - return userFileMapper.selectCountNotInExtendNames(fileNameList, beginCount, pageCount, userId); + UserFile userFile = new UserFile(); + userFile.setUserId(userId); + return userFileMapper.selectPageVo(page, userFile, extendNameList); } @Override diff --git a/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java b/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java index b43b75f..acf6d4b 100644 --- a/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java +++ b/src/main/java/com/qiwenshare/file/util/OperationLogUtil.java @@ -21,7 +21,6 @@ public class OperationLogUtil { */ public static OperationLogBean getOperationLogObj(HttpServletRequest request, Long userId, String isSuccess, String source, String operation, String detail) { -// UserBean sessionUserBean = (UserBean) SecurityUtils.getSubject().getPrincipal(); //用户需要登录才能进行的操作,需要记录操作日志 OperationLogBean operationLogBean = new OperationLogBean(); operationLogBean.setUserId(userId); diff --git a/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java b/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java index 6a14d75..0d2b8f5 100644 --- a/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java +++ b/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java @@ -18,4 +18,5 @@ public class QiwenFileUtil { userFile.setDeleteBatchNum(null); return userFile; } + } diff --git a/src/main/resources/mapper/UserFileMapper.xml b/src/main/resources/mapper/UserFileMapper.xml index bab883a..7055460 100644 --- a/src/main/resources/mapper/UserFileMapper.xml +++ b/src/main/resources/mapper/UserFileMapper.xml @@ -11,11 +11,18 @@ WHERE filepath LIKE N'${oldFilePath}%' and userId = #{userId}; - select * from userfile a - left join file on file.fileId = a.fileId left join image on a.fileId = image.fileId + left join file on file.fileId = a.fileId + + extendName in + + #{extendName} + + and a.userId = #{userFile.userId} @@ -33,56 +40,7 @@ and a.deleteFlag = 0 - ORDER BY isDir desc - - limit #{beginCount}, #{pageCount} - - - - - left join file on file.fileId = userfile.fileId - where extendName in - - #{fileName} - - and userId = #{userId} - and deleteFlag = 0 - - - left join file on file.fileId = userfile.fileId - where extendName not in - - #{fileName} - - and userId = #{userId} - and deleteFlag = 0 - - - - - - - -