diff --git a/spzx-common/common-service/src/main/java/com/atguigu/utils/MenuHelper.java b/spzx-common/common-service/src/main/java/com/atguigu/utils/MenuHelper.java new file mode 100644 index 0000000..e491ed2 --- /dev/null +++ b/spzx-common/common-service/src/main/java/com/atguigu/utils/MenuHelper.java @@ -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 buildTree(List sysMenuList) { + ArrayList 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 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; + } +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysMenuController.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysMenuController.java index ce3a954..ed65b01 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysMenuController.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysMenuController.java @@ -1,8 +1,11 @@ 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.vo.result.Result; 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.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -10,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +@Tag(name = "菜单管理接口") @RestController @RequestMapping(value = "/admin/system/sysMenu") public class SysMenuController { @@ -17,10 +21,10 @@ public class SysMenuController { @Autowired private SysMenuService sysMenuService; + @Operation(summary = "查询菜单", description = "查询菜单内容") @GetMapping("/findNodes") public Result> findNodes() { List list = sysMenuService.findNodes(); return Result.build(list, ResultCodeEnum.SUCCESS); } - } \ No newline at end of file diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysMenuMapper.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysMenuMapper.java new file mode 100644 index 0000000..c45aead --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysMenuMapper.java @@ -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 selectAll(); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/SysMenuService.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/SysMenuService.java new file mode 100644 index 0000000..150be01 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/SysMenuService.java @@ -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 findNodes(); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysMenuServiceImpl.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..f6ce255 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysMenuServiceImpl.java @@ -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 findNodes() { + List sysMenuList = sysMenuMapper.selectAll(); + + return MenuHelper.buildTree(sysMenuList); + } +} diff --git a/spzx-manager/src/main/resources/mapper/SysMenuMapper.xml b/spzx-manager/src/main/resources/mapper/SysMenuMapper.xml new file mode 100644 index 0000000..f56b7ed --- /dev/null +++ b/spzx-manager/src/main/resources/mapper/SysMenuMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + id,parent_id,title,component,sort_value,status,create_time,update_time,is_deleted + + + + +