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> menuInfo = assginMenuDto.getMenuIdList(); + if (menuInfo != null && menuInfo.size() > 0) { + sysRoleMenuMapper.doAssign(assginMenuDto); + } + } +} diff --git a/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml b/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml index c779c1a..974225a 100644 --- a/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml +++ b/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml @@ -3,12 +3,51 @@ - - + + - id,username userName ,password,name,phone,avatar,description,status,create_time,update_time,is_deleted + id,parent_id,title,component,sort_value,status,create_time,update_time,is_deleted + + + insert into sys_menu (id, parent_id, title, component, sort_value, status) + values (#{id}, + #{parentId}, + #{title}, + #{component}, + #{sortValue}, + #{status}); + + + + + update sys_menu set + + parent_id=#{parentId}, + + + title=#{title}, + + + component=#{component}, + + + sort_value=#{sortValue}, + + + status=#{status}, + + update_time=now(); + where id=#{id} + + + + update sys_menu + set is_deleted=1 + where id = #{id} + + + + + diff --git a/spzx-manager/src/main/resources/mapper/menu/SysRoleMenuMapper.xml b/spzx-manager/src/main/resources/mapper/menu/SysRoleMenuMapper.xml new file mode 100644 index 0000000..ce8f992 --- /dev/null +++ b/spzx-manager/src/main/resources/mapper/menu/SysRoleMenuMapper.xml @@ -0,0 +1,31 @@ + + + + + + + insert into sys_role_menu (role_id, menu_id, create_time, update_time, is_deleted, is_half) + values + ( + + #{roleId},#{menuInfo.id},now(),now(),0,#{menuInfo.isHalf} + + ) + + + + + delete + from sys_role_menu + where role_id = #{roleId} + + + + +