You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
5.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.yanzhen.controller; // 定义包名
import com.github.pagehelper.PageInfo; // 导入分页插件
import com.yanzhen.entity.Org; // 导入组织实体类
import com.yanzhen.service.OrgService; // 导入组织服务接口
import com.yanzhen.utils.Result; // 导入结果工具类
import org.springframework.beans.factory.annotation.Autowired; // 导入自动装配注解
import org.springframework.web.bind.annotation.*; // 导入Spring MVC相关注解
import java.util.ArrayList; // 导入ArrayList类
import java.util.HashMap; // 导入HashMap类
import java.util.List; // 导入List接口
import java.util.Map; // 导入Map接口
@RestController // 声明这是一个控制器并且返回的数据直接写入HTTP响应体中
@RequestMapping("/org") // 设置请求路径前缀为/org
public class OrgController { // 定义控制器类
@Autowired // 自动注入OrgService实例
private OrgService orgService;
@GetMapping("tree") // 映射GET请求到/org/tree路径
public Result tree(){ // 定义获取树形结构的方法
PageInfo<Org> pageInfo = orgService.query(null); // 查询所有组织数据
//所有的树形数据
List<Org> list = pageInfo.getList(); // 获取查询结果列表
//要构建的树形结构
List<Map<String,Object>> trees = new ArrayList<>(); // 初始化树形结构的列表
for (Org entity : list) { // 遍历所有组织数据
if(entity.getParentId() == 0){ // 如果父ID为0表示是顶级节点
Map<String,Object> map = new HashMap<>(); // 创建一个新的Map对象
map.put("id",entity.getId()); // 将组织ID放入Map
map.put("name",entity.getName()); // 将组织名称放入Map
if(entity.getType()<4){ // 如果类型小于4表示有子节点
map.put("isParent",true); // 标记为父节点
map.put("open",true); // 默认展开
map.put("children",getChild(entity,list)); // 递归获取子节点并放入Map
}else{
map.put("isParent",false); // 标记为叶子节点
}
trees.add(map); // 将Map添加到树形结构列表中
}
}
return Result.ok(trees); // 返回包含树形结构的响应结果
}
//自己调自己、有出口
public List<Map<String,Object>> getChild(Org parent,List<Org> list){ // 定义递归方法获取子节点
List<Map<String,Object>> child = new ArrayList<>(); // 初始化子节点列表
for (Org org : list) { // 遍历所有组织数据
if(parent.getId() == org.getParentId()){ // 如果当前组织的父ID等于传入的父节点ID
Map<String,Object> map = new HashMap<>(); // 创建一个新的Map对象
map.put("id",org.getId()); // 将组织ID放入Map
map.put("name",org.getName()); // 将组织名称放入Map
if(org.getType()<4){ // 如果类型小于4表示有子节点
map.put("isParent",true); // 标记为父节点
map.put("children",getChild(org,list)); // 递归获取子节点并放入Map
}else{
map.put("isParent",false); // 标记为叶子节点
}
child.add(map); // 将Map添加到子节点列表中
}
}
return child; // 返回子节点列表
}
@PostMapping("create") // 映射POST请求到/org/create路径
public Result create(@RequestBody Org org){ // 定义创建组织的方法
//未设置则为一级栏目
if(org.getParentId() == null){ // 如果父ID为空设置为0顶级节点
org.setParentId(0);
}
int flag = orgService.create(org); // 调用服务层方法创建组织
if(flag>0){ // 如果创建成功
return Result.ok(); // 返回成功结果
}else{
return Result.fail(); // 返回失败结果
}
}
@GetMapping("delete") // 映射GET请求到/org/delete路径
public Result delete(String id){ // 定义删除组织的方法
int flag = orgService.delete(id); // 调用服务层方法删除组织
if(flag>0){ // 如果删除成功
return Result.ok(); // 返回成功结果
}else{
return Result.fail(); // 返回失败结果
}
}
@PostMapping("update") // 映射POST请求到/org/update路径
public Result update(@RequestBody Org org){ // 定义更新组织的方法
int flag = orgService.update(org); // 调用服务层方法更新组织信息
if(flag>0){ // 如果更新成功
return Result.ok(); // 返回成功结果
}else{
return Result.fail(); // 返回失败结果
}
}
@GetMapping("detail") // 映射GET请求到/org/detail路径
public Org detail(Integer id){ // 定义获取组织详情的方法
return orgService.detail(id); // 调用服务层方法获取组织详情并返回
}
@PostMapping("query") // 映射POST请求到/org/query路径
public Map<String,Object> query(@RequestBody Org org){ // 定义查询组织的方法
PageInfo<Org> pageInfo = orgService.query(org); // 调用服务层方法查询组织数据
return Result.ok(pageInfo); // 返回包含查询结果的响应结果
}
}