From aab1b953cb1e78782b251a9c1dedcf19fbd188b3 Mon Sep 17 00:00:00 2001
From: Bunny <1319900154@qq.com>
Date: Thu, 14 Dec 2023 16:32:09 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E8=8F=9C=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/inspectionProfiles/Project_Default.xml | 1 +
.../bunny/controller/SysMenuController.java | 27 ++++++++--
.../controller/SysRoleMenuController.java | 37 +++++++++++++
.../java/cn/bunny/mapper/SysMenuMapper.java | 12 +++++
.../cn/bunny/mapper/SysRoleMenuMapper.java | 18 +++++++
.../java/cn/bunny/service/SysMenuService.java | 9 ++++
.../cn/bunny/service/SysRoleMenuService.java | 13 +++++
.../java/cn/bunny/service/SysRoleService.java | 2 +-
.../service/impl/SysMenuServiceImpl.java | 24 +++++++++
.../service/impl/SysRoleMenuServiceImpl.java | 52 ++++++++++++++++++
.../resources/mapper/menu/SysMenuMapper.xml | 53 +++++++++++++++++--
.../mapper/menu/SysRoleMenuMapper.xml | 31 +++++++++++
12 files changed, 272 insertions(+), 7 deletions(-)
create mode 100644 spzx-manager/src/main/java/cn/bunny/controller/SysRoleMenuController.java
create mode 100644 spzx-manager/src/main/java/cn/bunny/mapper/SysRoleMenuMapper.java
create mode 100644 spzx-manager/src/main/java/cn/bunny/service/SysRoleMenuService.java
create mode 100644 spzx-manager/src/main/java/cn/bunny/service/impl/SysRoleMenuServiceImpl.java
create mode 100644 spzx-manager/src/main/resources/mapper/menu/SysRoleMenuMapper.xml
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 18c7468..649fe27 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -2,6 +2,7 @@
+
\ No newline at end of file
diff --git a/spzx-manager/src/main/java/cn/bunny/controller/SysMenuController.java b/spzx-manager/src/main/java/cn/bunny/controller/SysMenuController.java
index 8bc78b4..55823ff 100644
--- a/spzx-manager/src/main/java/cn/bunny/controller/SysMenuController.java
+++ b/spzx-manager/src/main/java/cn/bunny/controller/SysMenuController.java
@@ -5,19 +5,40 @@ import cn.bunny.common.spzx.model.vo.common.Result;
import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
import cn.bunny.service.SysMenuService;
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;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
+@Tag(name = "菜单操作")
@RestController
@RequestMapping("/admin/system.sysMenu")
public class SysMenuController {
@Autowired
private SysMenuService sysMenuService;
+ @Operation(summary = "删除菜单", description = "删除某个菜单")
+ @DeleteMapping("/removeById")
+ public Result removeById(@RequestParam Long id) {
+ sysMenuService.removeById(id);
+ return Result.build(null, ResultCodeEnum.SUCCESS);
+ }
+
+ @Operation(summary = "修改菜单", description = "修改菜单")
+ @PutMapping("update")
+ public Result update(@RequestBody SysMenu sysMenu) {
+ sysMenuService.update(sysMenu);
+ return Result.build(null, ResultCodeEnum.SUCCESS);
+ }
+
+ @Operation(summary = "添加菜单", description = "添加菜单")
+ @PostMapping("/save")
+ public Result save(@RequestBody SysMenu sysMenu) {
+ sysMenuService.save(sysMenu);
+ return Result.build(null, ResultCodeEnum.SUCCESS);
+ }
+
@Operation(summary = "查询所有子节点", description = "返回list集合")
@GetMapping("findNodes")
public Result findNodes() {
diff --git a/spzx-manager/src/main/java/cn/bunny/controller/SysRoleMenuController.java b/spzx-manager/src/main/java/cn/bunny/controller/SysRoleMenuController.java
new file mode 100644
index 0000000..59af27e
--- /dev/null
+++ b/spzx-manager/src/main/java/cn/bunny/controller/SysRoleMenuController.java
@@ -0,0 +1,37 @@
+package cn.bunny.controller;
+
+import cn.bunny.common.spzx.model.dto.system.AssginMenuDto;
+import cn.bunny.common.spzx.model.vo.common.Result;
+import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
+import cn.bunny.service.SysRoleMenuService;
+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.*;
+
+import java.util.Map;
+
+@Tag(name = "角色菜单")
+@RestController
+@RequestMapping("/admin/system/sysRoleMenu")
+public class SysRoleMenuController {
+ @Autowired
+ private SysRoleMenuService sysRoleMenuService;
+
+ @Operation(summary = "查询所有菜单", description = "查询角色分配过菜单id列表")
+ @GetMapping("/findSysRoleMenuByRoleId/{roleId}")
+ public Result findSysRoleMenuByRoleId(@PathVariable("roleId") String roleId) {
+ Map map = sysRoleMenuService.findSysRoleMenuByRoleId(roleId);
+
+ return Result.build(map, ResultCodeEnum.SUCCESS);
+ }
+
+ @Operation(summary = "保存角色分配菜单")
+ @PostMapping("/doAssign")
+ public Result doAssign(@RequestBody AssginMenuDto assginMenuDto) {
+ // 删除角色之前分配过菜单数据
+ sysRoleMenuService.doAssign(assginMenuDto);
+
+ return Result.build(null, ResultCodeEnum.SUCCESS);
+ }
+}
diff --git a/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java b/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java
index e5f697f..297377f 100644
--- a/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java
+++ b/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java
@@ -9,4 +9,16 @@ import java.util.List;
public interface SysMenuMapper {
// 查询所有子节点
List findAll();
+
+ // 保存菜单
+ void save(SysMenu sysMenu);
+
+ // 修改菜单
+ void update(SysMenu sysMenu);
+
+ // 删除菜单
+ void removeById(Long id);
+
+ // 查询是否有子菜单
+ Long selectById(Long id);
}
diff --git a/spzx-manager/src/main/java/cn/bunny/mapper/SysRoleMenuMapper.java b/spzx-manager/src/main/java/cn/bunny/mapper/SysRoleMenuMapper.java
new file mode 100644
index 0000000..8f3fff4
--- /dev/null
+++ b/spzx-manager/src/main/java/cn/bunny/mapper/SysRoleMenuMapper.java
@@ -0,0 +1,18 @@
+package cn.bunny.mapper;
+
+import cn.bunny.common.spzx.model.dto.system.AssginMenuDto;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface SysRoleMenuMapper {
+ // 查询角色分配过菜单id列表
+ List findSysRoleMenuByRoleId(String roleId);
+
+ // 删除角色分配菜单数据
+ void deleteByRoleId(Long roleId);
+
+ // 保存分配数据
+ void doAssign(AssginMenuDto assginMenuDto);
+}
diff --git a/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java b/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java
index b2f0a4b..69a873c 100644
--- a/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java
+++ b/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java
@@ -7,4 +7,13 @@ import java.util.List;
public interface SysMenuService {
// 查询所有子节点
List findNodes();
+
+ // 添加
+ void save(SysMenu sysMenu);
+
+ // 修改菜单
+ void update(SysMenu sysMenu);
+
+ // 删除菜单
+ void removeById(Long id);
}
diff --git a/spzx-manager/src/main/java/cn/bunny/service/SysRoleMenuService.java b/spzx-manager/src/main/java/cn/bunny/service/SysRoleMenuService.java
new file mode 100644
index 0000000..f761508
--- /dev/null
+++ b/spzx-manager/src/main/java/cn/bunny/service/SysRoleMenuService.java
@@ -0,0 +1,13 @@
+package cn.bunny.service;
+
+import cn.bunny.common.spzx.model.dto.system.AssginMenuDto;
+
+import java.util.Map;
+
+public interface SysRoleMenuService {
+ // 查询所有菜单
+ Map findSysRoleMenuByRoleId(String roleId);
+
+ // 保存角色分配菜单
+ void doAssign(AssginMenuDto assginMenuDto);
+}
diff --git a/spzx-manager/src/main/java/cn/bunny/service/SysRoleService.java b/spzx-manager/src/main/java/cn/bunny/service/SysRoleService.java
index aef0e24..5accf83 100644
--- a/spzx-manager/src/main/java/cn/bunny/service/SysRoleService.java
+++ b/spzx-manager/src/main/java/cn/bunny/service/SysRoleService.java
@@ -22,6 +22,6 @@ public interface SysRoleService {
// 彻底删除角色
void deleteSysRoleByRoleId(Long roleId);
- // 查询所有角色信息
+ // 查询所有角色
Map findAll(Long userId);
}
diff --git a/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java b/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java
index 34fbd4d..23ca0be 100644
--- a/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java
+++ b/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java
@@ -1,6 +1,8 @@
package cn.bunny.service.impl;
+import cn.bunny.common.exception.BunnyException;
import cn.bunny.common.spzx.model.entity.system.SysMenu;
+import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
import cn.bunny.mapper.SysMenuMapper;
import cn.bunny.service.SysMenuService;
import cn.bunny.utils.MenuHelper;
@@ -25,4 +27,26 @@ public class SysMenuServiceImpl implements SysMenuService {
return MenuHelper.buildTree(sysMenuList);
}
+
+ // 添加菜单
+ @Override
+ public void save(SysMenu sysMenu) {
+ sysMenuMapper.save(sysMenu);
+ }
+
+ // 修改菜单
+ @Override
+ public void update(SysMenu sysMenu) {
+ sysMenuMapper.update(sysMenu);
+ }
+
+ // 删除菜单
+ @Override
+ public void removeById(Long id) {
+ Long count = sysMenuMapper.selectById(id);
+ if (count > 0) {
+ throw new BunnyException(ResultCodeEnum.NODE_ERROR);
+ }
+ sysMenuMapper.removeById(id);
+ }
}
diff --git a/spzx-manager/src/main/java/cn/bunny/service/impl/SysRoleMenuServiceImpl.java b/spzx-manager/src/main/java/cn/bunny/service/impl/SysRoleMenuServiceImpl.java
new file mode 100644
index 0000000..7d70476
--- /dev/null
+++ b/spzx-manager/src/main/java/cn/bunny/service/impl/SysRoleMenuServiceImpl.java
@@ -0,0 +1,52 @@
+package cn.bunny.service.impl;
+
+import cn.bunny.common.spzx.model.dto.system.AssginMenuDto;
+import cn.bunny.common.spzx.model.entity.system.SysMenu;
+import cn.bunny.mapper.SysRoleMenuMapper;
+import cn.bunny.service.SysMenuService;
+import cn.bunny.service.SysRoleMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class SysRoleMenuServiceImpl implements SysRoleMenuService {
+ @Autowired
+ private SysRoleMenuMapper sysRoleMenuMapper;
+
+ @Autowired
+ private SysMenuService sysMenuService;
+
+ // 查询所有菜单 和查询所有角色分配过的id列表
+ @Override
+ public Map findSysRoleMenuByRoleId(String roleId) {
+ // 查询所有
+ List sysMenuList = sysMenuService.findNodes();
+
+ // 查询角色分配过菜单id列表
+ List roleMenuIds = sysRoleMenuMapper.findSysRoleMenuByRoleId(roleId);
+
+ // 整合数据返回
+ Map map = new HashMap<>();
+ map.put("sysMenuList", sysMenuList);
+ map.put("roleMenuIds", roleMenuIds);
+
+ return map;
+ }
+
+ // 分配菜单
+ @Override
+ public void doAssign(AssginMenuDto assginMenuDto) {
+ // 删除角色分配菜单数据
+ sysRoleMenuMapper.deleteByRoleId(assginMenuDto.getRoleId());
+
+ // 保存分配数据
+ List