diff --git a/common/common-util/pom.xml b/common/common-util/pom.xml
index 998d960..9d7061a 100644
--- a/common/common-util/pom.xml
+++ b/common/common-util/pom.xml
@@ -34,5 +34,11 @@
com.alibaba
fastjson
+
+ com.atguigu
+ model
+ 1.0-SNAPSHOT
+ compile
+
diff --git a/common/common-util/src/main/java/com/atguigu/common/utlis/MenuHelper.java b/common/common-util/src/main/java/com/atguigu/common/utlis/MenuHelper.java
new file mode 100644
index 0000000..dcd49de
--- /dev/null
+++ b/common/common-util/src/main/java/com/atguigu/common/utlis/MenuHelper.java
@@ -0,0 +1,44 @@
+package com.atguigu.common.utlis;
+
+import com.atguigu.model.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/common/service-util/src/main/java/com/atguigu/CodeGet.java b/common/service-util/src/main/java/com/atguigu/CodeGet.java
index ac05953..c4cbcc8 100644
--- a/common/service-util/src/main/java/com/atguigu/CodeGet.java
+++ b/common/service-util/src/main/java/com/atguigu/CodeGet.java
@@ -55,7 +55,7 @@ public class CodeGet {
private static StrategyConfig getStrategyConfig() {
StrategyConfig strategy = new StrategyConfig();
// TODO 要生成的表
- strategy.setInclude("sys_user", "sys_role","sys_user_role");
+ strategy.setInclude("sys_menu", "sys_role_menu");
strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略
strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
diff --git a/common/service-util/target/classes/com/atguigu/CodeGet.class b/common/service-util/target/classes/com/atguigu/CodeGet.class
index 49d78bb..ab67a02 100644
Binary files a/common/service-util/target/classes/com/atguigu/CodeGet.class and b/common/service-util/target/classes/com/atguigu/CodeGet.class differ
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..cab54fd
--- /dev/null
+++ b/service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java
@@ -0,0 +1,57 @@
+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.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 菜单表 前端控制器
+ *
+ *
+ * @author bunny
+ * @since 2024-04-23
+ */
+@Tag(name = "菜单管理")
+@RestController
+@RequestMapping("/admin/system/sysMenu")
+public class SysMenuController {
+ @Autowired
+ private SysMenuService sysMenuService;
+
+ @ApiOperation(value = "获取菜单")
+ @GetMapping("findNodes")
+ public Result> findNodes() {
+ List list = sysMenuService.findNodes();
+ return Result.success(list);
+ }
+
+ @ApiOperation(value = "新增菜单")
+ @PostMapping("save")
+ public Result save(@RequestBody SysMenu permission) {
+ sysMenuService.save(permission);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "修改菜单")
+ @PutMapping("update")
+ public Result updateById(@RequestBody SysMenu permission) {
+ sysMenuService.updateById(permission);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "删除菜单")
+ @DeleteMapping("remove/{id}")
+ public Result remove(@PathVariable Long id) {
+ sysMenuService.removeById(id);
+ return Result.success();
+ }
+}
+
diff --git a/service-oa/src/main/java/com/atguigu/auth/controller/SysRoleMenuController.java b/service-oa/src/main/java/com/atguigu/auth/controller/SysRoleMenuController.java
new file mode 100644
index 0000000..90f9602
--- /dev/null
+++ b/service-oa/src/main/java/com/atguigu/auth/controller/SysRoleMenuController.java
@@ -0,0 +1,21 @@
+package com.atguigu.auth.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 角色菜单 前端控制器
+ *
+ *
+ * @author bunny
+ * @since 2024-04-23
+ */
+@RestController
+@RequestMapping("/auth/sys-role-menu")
+public class SysRoleMenuController {
+
+}
+
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..86a3a4e
--- /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 bunny
+ * @since 2024-04-23
+ */
+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..2dfbe6c
--- /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 bunny
+ * @since 2024-04-23
+ */
+public interface SysRoleMenuMapper extends BaseMapper {
+
+}
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..b7ded3b
--- /dev/null
+++ b/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java
@@ -0,0 +1,24 @@
+package com.atguigu.auth.service;
+
+import com.atguigu.model.system.SysMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ *
+ * 菜单表 服务类
+ *
+ *
+ * @author bunny
+ * @since 2024-04-23
+ */
+public interface SysMenuService extends IService {
+
+ /**
+ * 获取菜单
+ *
+ * @return 菜单列表
+ */
+ List findNodes();
+}
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..46c1204
--- /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 bunny
+ * @since 2024-04-23
+ */
+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..3eeacce
--- /dev/null
+++ b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java
@@ -0,0 +1,32 @@
+package com.atguigu.auth.service.impl;
+
+import com.atguigu.auth.mapper.SysMenuMapper;
+import com.atguigu.auth.service.SysMenuService;
+import com.atguigu.common.utlis.MenuHelper;
+import com.atguigu.model.system.SysMenu;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *
+ * 菜单表 服务实现类
+ *
+ *
+ * @author bunny
+ * @since 2024-04-23
+ */
+@Service
+public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService {
+
+ /**
+ * 获取菜单
+ *
+ * @return 菜单列表
+ */
+ @Override
+ public List findNodes() {
+ return MenuHelper.buildTree(list());
+ }
+}
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..a53fda7
--- /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 bunny
+ * @since 2024-04-23
+ */
+@Service
+public class SysRoleMenuServiceImpl extends ServiceImpl implements SysRoleMenuService {
+
+}
diff --git a/service-oa/src/main/resources/mapper/SysMenuMapper.xml b/service-oa/src/main/resources/mapper/SysMenuMapper.xml
new file mode 100644
index 0000000..31098d7
--- /dev/null
+++ b/service-oa/src/main/resources/mapper/SysMenuMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/service-oa/src/main/resources/mapper/SysRoleMenuMapper.xml b/service-oa/src/main/resources/mapper/SysRoleMenuMapper.xml
new file mode 100644
index 0000000..a1d08db
--- /dev/null
+++ b/service-oa/src/main/resources/mapper/SysRoleMenuMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+