feat:新增文件列表右键功能(复制链接、共享文件、删除文件)

This commit is contained in:
czhqwer
2025-03-29 22:13:13 +08:00
parent ff03724c71
commit 1782ac2a4c
8 changed files with 224 additions and 39 deletions
@@ -102,8 +102,17 @@ public class FileController {
return Result.success(fileService.pageFiles(page, pageSize, storageType, fileName));
}
@PostMapping("/sharedFile")
public Result<?> listSharedFiles(@RequestParam String fileIdentifier) {
@PostMapping("/deleteFile")
public Result<?> deleteFile(HttpServletRequest request, @RequestParam String fileIdentifier) {
if (!authService.isMainUser(request.getRemoteAddr())) {
return Result.error("权限不足");
}
fileService.deleteFile(fileIdentifier);
return Result.success();
}
@PostMapping("/addSharedFile")
public Result<?> addSharedFile(@RequestParam String fileIdentifier) {
fileService.addSharedFile(fileIdentifier);
return Result.success();
}
@@ -15,4 +15,5 @@ public interface IFileService {
void removeSharedFile(String fileIdentifier);
void deleteFile(String fileIdentifier);
}
@@ -1,5 +1,6 @@
package cn.czh.service.impl;
import cn.czh.base.BusinessException;
import cn.czh.entity.SharedFile;
import cn.czh.entity.UploadFile;
import cn.czh.mapper.ShareFileMapper;
@@ -13,9 +14,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -35,18 +34,29 @@ public class FileServiceImpl implements IFileService {
public List<UploadFile> listSharedFiles() {
List<SharedFile> sharedFiles = shareFileMapper.selectList(null);
Set<String> files = sharedFiles.stream()
List<String> files = sharedFiles.stream()
.map(SharedFile::getFileIdentifier)
.collect(Collectors.toSet());
.collect(Collectors.toList());
List<UploadFile> uploadFiles = uploadFileMapper.selectList(null);
if (uploadFiles != null) {
return uploadFiles.stream()
.filter(uploadFile -> files.contains(uploadFile.getFileIdentifier()))
.collect(Collectors.toList());
if (uploadFiles == null) {
return Collections.emptyList();
}
return Collections.emptyList();
Map<String, UploadFile> uploadFileMap = uploadFiles.stream()
.collect(Collectors.toMap(
UploadFile::getFileIdentifier,
uploadFile -> uploadFile,
(oldValue, newValue) -> oldValue,
LinkedHashMap::new
));
return files.stream()
.filter(uploadFileMap::containsKey)
.map(uploadFileMap::get)
.collect(Collectors.toList());
}
@Override
@@ -67,4 +77,13 @@ public class FileServiceImpl implements IFileService {
public void removeSharedFile(String fileIdentifier) {
shareFileMapper.delete(Wrappers.lambdaQuery(SharedFile.class).eq(SharedFile::getFileIdentifier, fileIdentifier));
}
@Override
public void deleteFile(String fileIdentifier) {
SharedFile sharedFile = shareFileMapper.selectOne(Wrappers.lambdaQuery(SharedFile.class).eq(SharedFile::getFileIdentifier, fileIdentifier));
if (sharedFile != null) {
throw new BusinessException("文件正在分享中,无法删除");
}
uploadFileMapper.delete(Wrappers.lambdaQuery(UploadFile.class).eq(UploadFile::getFileIdentifier, fileIdentifier));
}
}