From 4e11a347e91c3fd41c2c12a341afd75d23f520f1 Mon Sep 17 00:00:00 2001 From: yovinchen Date: Sat, 10 Jun 2023 10:41:01 +0800 Subject: [PATCH] Initial commit --- .../auth/controller/SysMenuController.java | 82 +++++++++++++++++++ .../atguigu/auth/mapper/SysMenuMapper.java | 16 ++++ .../auth/mapper/SysRoleMenuMapper.java | 16 ++++ .../atguigu/auth/mapper/xml/SysMenuMapper.xml | 5 ++ .../auth/mapper/xml/SysRoleMenuMapper.xml | 5 ++ .../atguigu/auth/service/SysMenuService.java | 32 ++++++++ .../auth/service/SysRoleMenuService.java | 16 ++++ .../auth/service/impl/SysMenuServiceImpl.java | 60 ++++++++++++++ .../service/impl/SysRoleMenuServiceImpl.java | 20 +++++ .../com/atguigu/auth/utils/MenuHelper.java | 60 ++++++++++++++ .../test/java/com/atguigu/code/CodeGet.java | 2 +- 11 files changed, 313 insertions(+), 1 deletion(-) create mode 100644 service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysMenuMapper.xml create mode 100644 service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysRoleMenuMapper.xml create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/utils/MenuHelper.java diff --git a/service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java b/service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java new file mode 100644 index 0000000..2aa8b80 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java @@ -0,0 +1,82 @@ +package com.atguigu.auth.controller; + + +import com.atguigu.auth.service.SysMenuService; +import com.atguigu.common.result.Result; +import com.atguigu.model.system.SysMenu; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 菜单管理 前端控制器 + *

+ * + * @author yovinchen + * @since 2023-06-09 + */ +@Api(tags = "菜单管理接口") +@RestController +@RequestMapping("/admin/system/sysMenu") +public class SysMenuController { + + @Autowired + private SysMenuService sysMenuService; + + /** + * 菜单列表 + * + * @return + */ + @ApiOperation(value = "菜单列表") + @GetMapping("/findNodes") + public Result findNodes() { + List list = sysMenuService.findNodes(); + return Result.ok(list); + } + + /** + * 新增菜单 + * + * @param sysMenu + * @return + */ + @ApiOperation(value = "新增菜单") + @PostMapping("save") + public Result save(@RequestBody SysMenu sysMenu) { + sysMenuService.save(sysMenu); + return Result.ok(); + } + + /** + * 修改菜单 + * + * @param sysMenu + * @return + */ + @ApiOperation(value = "修改菜单") + @PutMapping("update") + public Result updateById(@RequestBody SysMenu sysMenu) { + sysMenuService.updateById(sysMenu); + return Result.ok(); + } + + /** + * 删除菜单 + * + * @param id + * @return + */ + @ApiOperation(value = "删除菜单") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + sysMenuService.removeMenuById(id); + return Result.ok(); + } + +} + diff --git a/service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java b/service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java new file mode 100644 index 0000000..be7eb56 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.auth.mapper; + +import com.atguigu.model.system.SysMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 菜单表 Mapper 接口 + *

+ * + * @author yovinchen + * @since 2023-06-09 + */ +public interface SysMenuMapper extends BaseMapper { + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java b/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..8e44e67 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.auth.mapper; + +import com.atguigu.model.system.SysRoleMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 角色菜单 Mapper 接口 + *

+ * + * @author yovinchen + * @since 2023-06-09 + */ +public interface SysRoleMenuMapper extends BaseMapper { + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysMenuMapper.xml b/service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysMenuMapper.xml new file mode 100644 index 0000000..31098d7 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysMenuMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysRoleMenuMapper.xml b/service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysRoleMenuMapper.xml new file mode 100644 index 0000000..a1d08db --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/mapper/xml/SysRoleMenuMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java b/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java new file mode 100644 index 0000000..49180aa --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java @@ -0,0 +1,32 @@ +package com.atguigu.auth.service; + +import com.atguigu.model.system.SysMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 菜单表 服务类 + *

+ * + * @author yovinchen + * @since 2023-06-09 + */ +public interface SysMenuService extends IService { + + /** + * 菜单列表 + * + * @return + */ + List findNodes(); + + /** + * 删除菜单 + * + * @param id + */ + void removeMenuById(Long id); +} diff --git a/service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java b/service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java new file mode 100644 index 0000000..8a8c431 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java @@ -0,0 +1,16 @@ +package com.atguigu.auth.service; + +import com.atguigu.model.system.SysRoleMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 角色菜单 服务类 + *

+ * + * @author yovinchen + * @since 2023-06-09 + */ +public interface SysRoleMenuService extends IService { + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..3c721a1 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,60 @@ +package com.atguigu.auth.service.impl; + +import com.atguigu.auth.mapper.SysMenuMapper; +import com.atguigu.auth.service.SysMenuService; +import com.atguigu.auth.utils.MenuHelper; +import com.atguigu.common.execption.GuiguException; +import com.atguigu.model.system.SysMenu; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 菜单表 服务实现类 + *

+ * + * @author yovinchen + * @since 2023-06-09 + */ +@Service +public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { + + /** + * 菜单列表 + * + * @return + */ + @Override + public List findNodes() { + // 1、查询所有 的数据 + List sysMenuList = baseMapper.selectList(null); + + // 2、构建树形结构 + List list = MenuHelper.buildTree(sysMenuList); + + return list; + } + + /** + * 删除菜单 + * + * @param id + */ + @Override + public void removeMenuById(Long id) { + // 判断当前菜单是否有下一层菜单 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SysMenu::getParentId, id); + + Integer count = baseMapper.selectCount(lambdaQueryWrapper); + + if (count > 0) { + throw new GuiguException(201, "菜单不能删除"); + } + baseMapper.deleteById(id); + } + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java new file mode 100644 index 0000000..d44ecb8 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.auth.service.impl; + +import com.atguigu.auth.mapper.SysRoleMenuMapper; +import com.atguigu.auth.service.SysRoleMenuService; +import com.atguigu.model.system.SysRoleMenu; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 角色菜单 服务实现类 + *

+ * + * @author yovinchen + * @since 2023-06-09 + */ +@Service +public class SysRoleMenuServiceImpl extends ServiceImpl implements SysRoleMenuService { + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/utils/MenuHelper.java b/service-oa/src/main/java/com/atguigu/auth/utils/MenuHelper.java new file mode 100644 index 0000000..8db79f2 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/utils/MenuHelper.java @@ -0,0 +1,60 @@ +package com.atguigu.auth.utils; + +import com.atguigu.model.system.SysMenu; + +import java.util.ArrayList; +import java.util.List; + +/** + * ClassName: MenuHelper + * Package: com.atguigu.auth.utils + * + * @author yovinchen + * @Create 2023/6/9 23:31 + */ +public class MenuHelper { + + /** + * 使用递归方法建菜单 + * + * @param sysMenuList + * @return + */ + public static List buildTree(List sysMenuList) { + // 存放最终数据 + List trees = new ArrayList<>(); + + // 把所有的菜单数据进行遍历 + for (SysMenu sysMenu : sysMenuList) { + // 递归入口 parentId = 0 + if (sysMenu.getParentId().longValue() == 0) { + trees.add(getChildren(sysMenu, sysMenuList)); + } + + } + return trees; + + } + + /** + * 递归查找子节点 + * + * @param sysMenu + * @param sysMenuList + * @return + */ + public static SysMenu getChildren(SysMenu sysMenu, List sysMenuList) { + sysMenu.setChildren(new ArrayList()); + + // 遍历所有的菜单数据,判断id和parent_id的对应关系 + for (SysMenu menu : sysMenuList) { + if (sysMenu.getId().longValue() == menu.getParentId().longValue()) { + if (sysMenu.getChildren() == null) { + sysMenu.setChildren(new ArrayList<>()); + } + sysMenu.getChildren().add(getChildren(menu, sysMenuList)); + } + } + return sysMenu; + } +} diff --git a/service-oa/src/test/java/com/atguigu/code/CodeGet.java b/service-oa/src/test/java/com/atguigu/code/CodeGet.java index 4e93cdb..a622a92 100644 --- a/service-oa/src/test/java/com/atguigu/code/CodeGet.java +++ b/service-oa/src/test/java/com/atguigu/code/CodeGet.java @@ -47,7 +47,7 @@ public class CodeGet { // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); - strategy.setInclude("sys_user_role"); + strategy.setInclude("sys_menu","sys_role_menu"); //数据库表映射到实体的命名策略 strategy.setNaming(NamingStrategy.underline_to_camel); //数据库表字段映射到实体的命名策略