feat(修改): 查询菜单

This commit is contained in:
bunny 2024-03-24 00:06:55 +08:00
parent 825f9893f4
commit aa750cf167
6 changed files with 126 additions and 1 deletions

View File

@ -0,0 +1,46 @@
package com.atguigu.utils;
import com.atguigu.spzx.model.entity.system.SysMenu;
import java.util.ArrayList;
import java.util.List;
public class MenuHelper {
/**
* 构建树型结构
*
* @param sysMenuList 系统菜单列表
* @return 菜单结构列表
*/
public static List<SysMenu> buildTree(List<SysMenu> sysMenuList) {
ArrayList<SysMenu> tress = new ArrayList<>();
// 把菜单数据进行遍历
sysMenuList.forEach(sysMenu -> {
if (sysMenu.getParentId() == 0) tress.add(getChildren(sysMenu, sysMenuList));
});
return tress;
}
/**
* 构建递归循环
*
* @param sysMenu 当前菜单对象
* @param sysMenuList 全部菜单列表
* @return 菜单
*/
private static SysMenu getChildren(SysMenu sysMenu, List<SysMenu> sysMenuList) {
// 遍历所有菜单数据判断id和parentID对应关系
sysMenu.setChildren(new ArrayList<>());
sysMenuList.forEach(menu -> {
if (menu.getChildren() == null) menu.setChildren(new ArrayList<>());
if (sysMenu.getId().equals(menu.getParentId())) {
sysMenu.getChildren().add(getChildren(menu, sysMenuList));
}
});
return sysMenu;
}
}

View File

@ -1,8 +1,11 @@
package com.atguigu.spzx.manger.controller; package com.atguigu.spzx.manger.controller;
import com.atguigu.spzx.manger.service.SysMenuService;
import com.atguigu.spzx.model.entity.system.SysMenu; import com.atguigu.spzx.model.entity.system.SysMenu;
import com.atguigu.spzx.model.vo.result.Result; import com.atguigu.spzx.model.vo.result.Result;
import com.atguigu.spzx.model.vo.result.ResultCodeEnum; import com.atguigu.spzx.model.vo.result.ResultCodeEnum;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -10,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@Tag(name = "菜单管理接口")
@RestController @RestController
@RequestMapping(value = "/admin/system/sysMenu") @RequestMapping(value = "/admin/system/sysMenu")
public class SysMenuController { public class SysMenuController {
@ -17,10 +21,10 @@ public class SysMenuController {
@Autowired @Autowired
private SysMenuService sysMenuService; private SysMenuService sysMenuService;
@Operation(summary = "查询菜单", description = "查询菜单内容")
@GetMapping("/findNodes") @GetMapping("/findNodes")
public Result<List<SysMenu>> findNodes() { public Result<List<SysMenu>> findNodes() {
List<SysMenu> list = sysMenuService.findNodes(); List<SysMenu> list = sysMenuService.findNodes();
return Result.build(list, ResultCodeEnum.SUCCESS); return Result.build(list, ResultCodeEnum.SUCCESS);
} }
} }

View File

@ -0,0 +1,16 @@
package com.atguigu.spzx.manger.mapper;
import com.atguigu.spzx.model.entity.system.SysMenu;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SysMenuMapper {
/**
* 查询菜单
*
* @return 菜单列表
*/
List<SysMenu> selectAll();
}

View File

@ -0,0 +1,14 @@
package com.atguigu.spzx.manger.service;
import com.atguigu.spzx.model.entity.system.SysMenu;
import java.util.List;
public interface SysMenuService {
/**
* 查询菜单
*
* @return 菜单列表
*/
List<SysMenu> findNodes();
}

View File

@ -0,0 +1,28 @@
package com.atguigu.spzx.manger.service.impl;
import com.atguigu.spzx.manger.mapper.SysMenuMapper;
import com.atguigu.spzx.manger.service.SysMenuService;
import com.atguigu.spzx.model.entity.system.SysMenu;
import com.atguigu.utils.MenuHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysMenuServiceImpl implements SysMenuService {
@Autowired
private SysMenuMapper sysMenuMapper;
/**
* 查询菜单
*
* @return 菜单列表
*/
@Override
public List<SysMenu> findNodes() {
List<SysMenu> sysMenuList = sysMenuMapper.selectAll();
return MenuHelper.buildTree(sysMenuList);
}
}

View File

@ -0,0 +1,17 @@
<?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.atguigu.spzx.manger.mapper.SysMenuMapper">
<resultMap id="sysMenuMap" type="com.atguigu.spzx.model.entity.system.SysMenu" autoMapping="true"/>
<!-- 用于select查询公用抽取的列 -->
<sql id="columns">
id,parent_id,title,component,sort_value,status,create_time,update_time,is_deleted
</sql>
<!-- 查询菜单 -->
<select id="selectAll" resultType="com.atguigu.spzx.model.entity.system.SysMenu">
select
<include refid="columns"/>
from sys_menu where is_deleted = 0 order by sort_value
</select>
</mapper>