新建目录

接口信息

路径地址 http://localhost:7090/api/file/newFolder
请求方式 POST
请求参数 NewFolderDTO
返回结果 FileInfoVO

参数DTO

com.swx.easypan.entity.dto包下,创建 NewFolderDTO,新建目录参数

NewFolderDTO
@JsonIgnoreProperties(ignoreUnknown = true)
public class NewFolderDTO implements Serializable {
private static final long serialVersionUID = 1L;

@NotEmpty
private String filePid;
@NotEmpty
private String filename;

public String getFilePid() {
return filePid;
}

public void setFilePid(String filePid) {
this.filePid = filePid;
}

public String getFilename() {
return filename;
}

public void setFilename(String filename) {
this.filename = filename;
}
}

定义Service

找到 FileInfoService,定义新建目录方法

FileInfoService
/**
* 新建目录
*
* @param folderDTO 目录信息
* @param userId 用户ID
*/
FileInfoVO newFolder(NewFolderDTO folderDTO, String userId);

在 FileInfoServiceImpl 中,实现上述方法

FileInfoServiceImpl
@Override
public FileInfoVO newFolder(NewFolderDTO folderDTO, String userId) {
// 校验文件夹名
String rename = autoRename(folderDTO.getFilePid(), userId, folderDTO.getFilename());
// 构造属性
FileInfo fileInfo = new FileInfo();
fileInfo.setId(StringTools.getRandomString(Constants.LENGTH_10));
fileInfo.setUserId(userId);
fileInfo.setFilename(rename);
fileInfo.setFilePid(folderDTO.getFilePid());
fileInfo.setFolderType(FileFolderTypeEnums.FOLDER.getType());
fileInfo.setStatus(FileStatusEnums.USING.getStatus());
// 保存
this.save(fileInfo);
// 返回
FileInfoVO fileInfoVO = new FileInfoVO();
BeanUtils.copyProperties(fileInfo, fileInfoVO);
return fileInfoVO;
}

/**
* 当文件名字相同时,重命名文件
*
* @param filePid 文件PID
* @param userId 用户ID
* @param filename 文件名
*/
private String autoRename(String filePid, String userId, String filename) {
int count = this.count(new LambdaQueryWrapper<FileInfo>()
.eq(FileInfo::getUserId, userId)
.eq(FileInfo::getFilePid, filePid)
.eq(FileInfo::getDeleted, FileDelFlagEnums.USING.getFlag())
.eq(FileInfo::getFilename, filename));
if (count > 0) {
filename = StringTools.rename(filename);
}
return filename;
}

定义Controller

在 FileInfoController 下定义新建文件夹方法。

FileInfoController
// 新建文件夹
@PostMapping("/newFolder")
public FileInfoVO newFolder(HttpSession session, @RequestBody NewFolderDTO folderDTO) {
SessionWebUserVO user = (SessionWebUserVO) session.getAttribute(Constants.SESSION_KEY);
return fileInfoService.newFolder(folderDTO, user.getId());
}

查询目录

接口信息

路径地址 http://localhost:7090/api/file/getFolderInfo
请求方式 GET
请求参数 path
返回结果 List

定义Service

找到 FileInfoService,定义根据ids获取目录信息方法

FileInfoService
/**
* 根据ids获取目录信息
*
* @param ids ids
*/
List<FileInfoVO> listFolderByIds(String[] ids);

在 FileInfoServiceImpl 中,实现上述方法

FileInfoServiceImpl
/**
* 根据ids获取目录信息
*
* @param ids ids
*/
@Override
public List<FileInfoVO> listFolderByIds(String[] ids) {
LambdaQueryWrapper<FileInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.select(FileInfo::getId, FileInfo::getFilename).in(FileInfo::getId, Arrays.asList(ids)).last("order by field(id, \"" + StringUtils.join(ids, "\",\"") + "\")");
List<FileInfo> list = list(wrapper);
List<FileInfoVO> fileInfoVOS = list.stream().map(item -> {
FileInfoVO fileInfoVO = new FileInfoVO();
BeanUtils.copyProperties(item, fileInfoVO);
return fileInfoVO;
}).collect(Collectors.toList());
return fileInfoVOS;
}
定义Controller

在 FileInfoController 下定义新建文件夹方法。

FileInfoController
// 获取目录信息
@GetMapping("/getFolderInfo")
public List<FileInfoVO> getFolderInfo(HttpSession session, @NotEmpty String path) {
SessionWebUserVO user = (SessionWebUserVO) session.getAttribute(Constants.SESSION_KEY);
String[] ids = path.split("/");
return fileInfoService.listFolderByIds(ids);
}

获取目录

接口信息

路径地址 http://localhost:7090/api/file/loadAllFolder
请求方式 GET
请求参数 filePid
返回结果 List

定义Controller

在 FileInfoController 下定义新建文件夹方法。

FileInfoController
// 获取所有目录
@GetMapping("/loadAllFolder")
public List<FileInfoVO> loadAllFolder(HttpSession session,
@NotEmpty String filePid) {
SessionWebUserVO user = (SessionWebUserVO) session.getAttribute(Constants.SESSION_KEY);
LambdaQueryWrapper<FileInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FileInfo::getFilePid, filePid)
.eq(FileInfo::getUserId, user.getId())
.eq(FileInfo::getFolderType, FileFolderTypeEnums.FOLDER.getType());
List<FileInfo> list = fileInfoService.list(wrapper);
return list.stream().map(item -> {
FileInfoVO fileInfoVO = new FileInfoVO();
BeanUtils.copyProperties(item, fileInfoVO);
return fileInfoVO;
}).collect(Collectors.toList());
}