新建目录
接口信息
参数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
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; }
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()); }
|
查询目录
接口信息
定义Service
找到 FileInfoService,定义根据ids获取目录信息方法
FileInfoService
List<FileInfoVO> listFolderByIds(String[] ids);
|
在 FileInfoServiceImpl 中,实现上述方法
FileInfoServiceImpl
@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); }
|
获取目录
接口信息
定义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()); }
|