manage : 添加 文件目录功能
parent
66bb459c5a
commit
0a199d66a4
@ -0,0 +1,55 @@
|
||||
package com.supervision.manage.controller.file;
|
||||
|
||||
import com.supervision.manage.pojo.vo.DirectoryInfoVo;
|
||||
import com.supervision.manage.service.DirectoryInfoManageService;
|
||||
import com.supervision.model.DirectoryInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Api(tags = "文件目录管理")
|
||||
@RestController
|
||||
@RequestMapping("/directoryManage")
|
||||
@RequiredArgsConstructor
|
||||
public class DirectoryInfoManageController {
|
||||
|
||||
|
||||
private final DirectoryInfoManageService directoryInfoManageService;
|
||||
@ApiOperation("新增文件目录")
|
||||
@PostMapping("/addDirectory")
|
||||
public String addDirectory(@RequestBody DirectoryInfo directoryInfo) {
|
||||
|
||||
return directoryInfoManageService.addDirectory(directoryInfo);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("删除文件目录")
|
||||
@DeleteMapping("/deleteDirectory")
|
||||
public boolean deleteDirectory(@ApiParam("目录ID") @RequestParam("directoryId") String directoryId) {
|
||||
|
||||
return directoryInfoManageService.deleteDirectory(directoryId);
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation("修改文件目录")
|
||||
@PutMapping("/updateDirectory")
|
||||
public boolean updateDirectory(@RequestBody DirectoryInfo directoryInfo) {
|
||||
|
||||
return directoryInfoManageService.updateDirectory(directoryInfo);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("查询文件目录")
|
||||
@GetMapping("/getFileDirectory")
|
||||
public List<DirectoryInfoVo> getFileDirectory(@ApiParam("父级目录ID") @RequestParam(value = "parentDirId",required = false) String parentDirId) {
|
||||
|
||||
return directoryInfoManageService.getFileDirectory(parentDirId);
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.supervision.manage.pojo.vo;
|
||||
|
||||
import com.supervision.model.DirectoryInfo;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class DirectoryInfoVo extends DirectoryInfo {
|
||||
|
||||
private List<DirectoryInfo> child;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.supervision.manage.service;
|
||||
|
||||
import com.supervision.manage.pojo.vo.DirectoryInfoVo;
|
||||
import com.supervision.model.DirectoryInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DirectoryInfoManageService {
|
||||
|
||||
|
||||
/**
|
||||
* 新增文件目录
|
||||
* @param directoryInfo 文件信息
|
||||
* @return目录id
|
||||
*/
|
||||
String addDirectory(DirectoryInfo directoryInfo);
|
||||
|
||||
/**
|
||||
* 删除文件目录
|
||||
* @param directoryId 目录id
|
||||
* @return true:删除成功 false:删除失败
|
||||
*/
|
||||
boolean deleteDirectory(String directoryId);
|
||||
|
||||
boolean updateDirectory(DirectoryInfo directoryInfo);
|
||||
|
||||
List<DirectoryInfoVo> getFileDirectory(String parentDirId);
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
package com.supervision.manage.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import com.supervision.manage.pojo.vo.DirectoryInfoVo;
|
||||
import com.supervision.manage.service.DirectoryInfoManageService;
|
||||
import com.supervision.model.DirectoryInfo;
|
||||
import com.supervision.service.DirectoryInfoService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DirectoryInfoManageServiceImpl implements DirectoryInfoManageService {
|
||||
|
||||
private final DirectoryInfoService directoryInfoService;
|
||||
|
||||
|
||||
@Override
|
||||
public String addDirectory(DirectoryInfo directoryInfo) {
|
||||
|
||||
// 判断文件目录是否已经存在
|
||||
Assert.notEmpty(directoryInfo.getDirectoryName(), "文件目录名称不能为空");
|
||||
Assert.isTrue(StrUtil.isEmpty(directoryInfo.getId()), "目录id需要为空");
|
||||
LambdaQueryChainWrapper<DirectoryInfo> wrapper = directoryInfoService.lambdaQuery()
|
||||
.eq(StrUtil.isNotEmpty(directoryInfo.getParentId()), DirectoryInfo::getParentId, directoryInfo.getParentId())
|
||||
.eq(DirectoryInfo::getDirectoryName, directoryInfo.getDirectoryName());
|
||||
if (StrUtil.isEmpty(directoryInfo.getParentId())){
|
||||
wrapper.isNull(DirectoryInfo::getParentId);
|
||||
}else {
|
||||
wrapper.eq(DirectoryInfo::getParentId, directoryInfo.getParentId());
|
||||
}
|
||||
Assert.isTrue(wrapper.count() == 0, "文件夹已存在");
|
||||
|
||||
// 创建文件目录
|
||||
directoryInfoService.save(directoryInfo);
|
||||
|
||||
return directoryInfo.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteDirectory(String directoryId) {
|
||||
|
||||
Assert.notEmpty(directoryId, "文件目录id不能为空");
|
||||
|
||||
Integer count = directoryInfoService.lambdaQuery()
|
||||
.eq(DirectoryInfo::getParentId, directoryId).count();
|
||||
Assert.isTrue(count == 0, "目录下有子目录,不能删除");
|
||||
|
||||
return directoryInfoService.removeById(directoryId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateDirectory(DirectoryInfo directoryInfo) {
|
||||
Assert.notNull(directoryInfo.getId(), "文件目录id不能为空");
|
||||
Assert.notEmpty(directoryInfo.getDirectoryName(),"文件名不能为空");
|
||||
Assert.notNull(directoryInfoService.getById(directoryInfo.getId()),"目录不存在");
|
||||
|
||||
return directoryInfoService.updateById(directoryInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DirectoryInfoVo> getFileDirectory(String parentDirId) {
|
||||
|
||||
|
||||
List<DirectoryInfo> directoryInfoList = directoryInfoService.lambdaQuery()
|
||||
.eq(StrUtil.isNotEmpty(parentDirId), DirectoryInfo::getParentId, parentDirId).list();
|
||||
|
||||
if (CollectionUtil.isEmpty(directoryInfoList)){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return directoryInfoListToTree(directoryInfoList);
|
||||
}
|
||||
|
||||
|
||||
private List<DirectoryInfoVo> directoryInfoListToTree(List<DirectoryInfo> directoryInfoList) {
|
||||
|
||||
ArrayList<DirectoryInfoVo> directoryInfoVos = new ArrayList<>();
|
||||
for (DirectoryInfo directoryInfo : directoryInfoList) {
|
||||
|
||||
if (StrUtil.isNotEmpty(directoryInfo.getParentId())){
|
||||
// 跳过非顶层的目录
|
||||
continue;
|
||||
}
|
||||
DirectoryInfoVo directoryInfoVo = BeanUtil.toBean(directoryInfo, DirectoryInfoVo.class);
|
||||
directoryInfoVos.add(directoryInfoVo);
|
||||
for (DirectoryInfo info : directoryInfoList) {
|
||||
if (!directoryInfoVo.getId().equals(info.getParentId())){
|
||||
continue;
|
||||
}
|
||||
if (directoryInfoVo.getChild() == null) {
|
||||
directoryInfoVo.setChild(CollectionUtil.newArrayList(BeanUtil.toBean(info, DirectoryInfoVo.class)));
|
||||
} else {
|
||||
directoryInfoVo.getChild().add(BeanUtil.toBean(info, DirectoryInfoVo.class));
|
||||
}
|
||||
}
|
||||
}
|
||||
return directoryInfoVos;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.supervision.mapper;
|
||||
|
||||
import com.supervision.model.DirectoryInfo;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
* @description 针对表【vp_directory_info(目录表)】的数据库操作Mapper
|
||||
* @createDate 2024-01-29 16:17:29
|
||||
* @Entity com.supervision.model.DirectoryInfo
|
||||
*/
|
||||
public interface DirectoryInfoMapper extends BaseMapper<DirectoryInfo> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,57 @@
|
||||
package com.supervision.model;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 目录表
|
||||
* @TableName vp_directory_info
|
||||
*/
|
||||
@TableName(value ="vp_directory_info")
|
||||
@Data
|
||||
public class DirectoryInfo implements Serializable {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 目录名称
|
||||
*/
|
||||
private String directoryName;
|
||||
|
||||
/**
|
||||
* 父级id
|
||||
*/
|
||||
private String parentId;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private String updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.supervision.service;
|
||||
|
||||
import com.supervision.model.DirectoryInfo;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
* @description 针对表【vp_directory_info(目录表)】的数据库操作Service
|
||||
* @createDate 2024-01-29 16:17:29
|
||||
*/
|
||||
public interface DirectoryInfoService extends IService<DirectoryInfo> {
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.supervision.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.supervision.model.DirectoryInfo;
|
||||
import com.supervision.service.DirectoryInfoService;
|
||||
import com.supervision.mapper.DirectoryInfoMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
* @description 针对表【vp_directory_info(目录表)】的数据库操作Service实现
|
||||
* @createDate 2024-01-29 16:17:29
|
||||
*/
|
||||
@Service
|
||||
public class DirectoryInfoServiceImpl extends ServiceImpl<DirectoryInfoMapper, DirectoryInfo>
|
||||
implements DirectoryInfoService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.supervision.mapper.DirectoryInfoMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.supervision.model.DirectoryInfo">
|
||||
<result property="id" column="id" jdbcType="VARCHAR"/>
|
||||
<result property="directoryName" column="directory_name" jdbcType="VARCHAR"/>
|
||||
<result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
|
||||
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
|
||||
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
|
||||
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,directory_name,parent_id,
|
||||
create_user_id,create_time,update_user_id,
|
||||
update_time
|
||||
</sql>
|
||||
</mapper>
|
Loading…
Reference in New Issue