From d6b795311fd42dc2f509a71987d17a623d2cf478 Mon Sep 17 00:00:00 2001 From: yovinchen Date: Sat, 10 Jun 2023 12:22:11 +0800 Subject: [PATCH] Initial commit --- .../auth/controller/SysMenuController.java | 28 ++++++++- .../atguigu/auth/service/SysMenuService.java | 17 +++++- .../auth/service/impl/SysMenuServiceImpl.java | 58 ++++++++++++++++++- .../auth/service/impl/SysRoleServiceImpl.java | 2 +- 4 files changed, 100 insertions(+), 5 deletions(-) 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 index 2aa8b80..1e89999 100644 --- a/service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java +++ b/service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java @@ -1,9 +1,9 @@ package com.atguigu.auth.controller; - import com.atguigu.auth.service.SysMenuService; import com.atguigu.common.result.Result; import com.atguigu.model.system.SysMenu; +import com.atguigu.vo.system.AssginMenuVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -27,6 +27,32 @@ public class SysMenuController { @Autowired private SysMenuService sysMenuService; + /** + * 根据角色获取菜单 + * + * @param roleId + * @return + */ + @ApiOperation(value = "根据角色获取菜单") + @GetMapping("toAssign/{roleId}") + public Result toAssign(@PathVariable Long roleId) { + List list = sysMenuService.findSysMenuByRoleId(roleId); + return Result.ok(list); + } + + /** + * 给角色分配权限 + * + * @param assignMenuVo + * @return + */ + @ApiOperation(value = "给角色分配权限") + @PostMapping("/doAssign") + public Result doAssign(@RequestBody AssginMenuVo assignMenuVo) { + sysMenuService.doAssign(assignMenuVo); + return Result.ok(); + } + /** * 菜单列表 * 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 index 49180aa..0f9e87c 100644 --- a/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java +++ b/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java @@ -1,9 +1,9 @@ package com.atguigu.auth.service; import com.atguigu.model.system.SysMenu; +import com.atguigu.vo.system.AssginMenuVo; import com.baomidou.mybatisplus.extension.service.IService; -import java.io.Serializable; import java.util.List; /** @@ -29,4 +29,19 @@ public interface SysMenuService extends IService { * @param id */ void removeMenuById(Long id); + + /** + * 根据角色获取菜单 + * + * @param roleId + * @return + */ + List findSysMenuByRoleId(Long roleId); + + /** + * 给角色分配权限 + * + * @param assignMenuVo + */ + void doAssign(AssginMenuVo assignMenuVo); } 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 index 3c721a1..f7569df 100644 --- 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 @@ -1,15 +1,20 @@ package com.atguigu.auth.service.impl; import com.atguigu.auth.mapper.SysMenuMapper; +import com.atguigu.auth.mapper.SysRoleMenuMapper; 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.atguigu.model.system.SysRoleMenu; +import com.atguigu.vo.system.AssginMenuVo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -22,6 +27,9 @@ import java.util.List; @Service public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { + + private SysRoleMenuMapper sysRoleMenuMapper; + /** * 菜单列表 * @@ -33,9 +41,8 @@ public class SysMenuServiceImpl extends ServiceImpl impl List sysMenuList = baseMapper.selectList(null); // 2、构建树形结构 - List list = MenuHelper.buildTree(sysMenuList); - return list; + return MenuHelper.buildTree(sysMenuList); } /** @@ -57,4 +64,51 @@ public class SysMenuServiceImpl extends ServiceImpl impl baseMapper.deleteById(id); } + /** + * 根据角色获取菜单 + * + * @param roleId + * @return + */ + @Override + public List findSysMenuByRoleId(Long roleId) { + //查询所有菜单 + List allSysMenuList = this.list(new LambdaQueryWrapper().eq(SysMenu::getStatus, 1)); + + //在角色菜单关系表中,根据角色id获取角色对应的所有菜单id + List sysRoleMenuList = sysRoleMenuMapper.selectList(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, roleId)); + //根据获取菜单id,获取对应菜单对象 + List menuIdList = sysRoleMenuList.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()); + //根据菜单id,和所有菜单集合中id比较,相同则封装 + allSysMenuList.forEach(permission -> { + if (menuIdList.contains(permission.getId())) { + permission.setSelect(true); + } else { + permission.setSelect(false); + } + }); + //返回规定格式的菜单列表 + return MenuHelper.buildTree(allSysMenuList); + } + + /** + * 给角色分配权限 + * + * @param assignMenuVo + */ + @Override + public void doAssign(AssginMenuVo assignMenuVo) { + //根据角色id 删除菜单角色表 分配数据 + sysRoleMenuMapper.delete(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, assignMenuVo.getRoleId())); + //从参数里面获取角色新分配菜单id列表, + //进行遍历,把每个id 数据添加菜单角色表 + for (Long menuId : assignMenuVo.getMenuIdList()) { + if (StringUtils.isEmpty(menuId)) continue; + SysRoleMenu rolePermission = new SysRoleMenu(); + rolePermission.setRoleId(assignMenuVo.getRoleId()); + rolePermission.setMenuId(menuId); + sysRoleMenuMapper.insert(rolePermission); + } + } + } diff --git a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleServiceImpl.java b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleServiceImpl.java index 08d512b..15af7f4 100644 --- a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleServiceImpl.java +++ b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleServiceImpl.java @@ -40,7 +40,7 @@ public class SysRoleServiceImpl extends ServiceImpl impl //查询的角色id List existUserRoleList = sysUserRoleMapper.selectList(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId).select(SysUserRole::getRoleId)); - List existRoleIdList = existUserRoleList.stream().map(c -> c.getRoleId()).collect(Collectors.toList()); + List existRoleIdList = existUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()); //对角色进行分类 List assginRoleList = new ArrayList<>();