From 64f7ccb9ef8b5a0618e65cddc14b981c1f108ba3 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 04 十一月 2024 09:01:59 +0800 Subject: [PATCH] 代码提交 --- xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java | 124 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 114 insertions(+), 10 deletions(-) diff --git a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java index 3929769..87836a7 100644 --- a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java +++ b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/service/impl/SysRoleServiceImpl.java @@ -1,19 +1,17 @@ package com.xinquan.system.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xinquan.common.core.web.page.PageInfo; +import com.xinquan.system.api.domain.SysMenu; import com.xinquan.system.domain.SysRoleDept; import com.xinquan.system.domain.SysRoleMenu; import com.xinquan.system.domain.SysUserRole; -import com.xinquan.system.mapper.SysRoleDeptMapper; -import com.xinquan.system.mapper.SysRoleMapper; -import com.xinquan.system.mapper.SysRoleMenuMapper; -import com.xinquan.system.mapper.SysUserRoleMapper; +import com.xinquan.system.domain.dto.SysRoleDTO; +import com.xinquan.system.domain.dto.SysRoleQuery; +import com.xinquan.system.mapper.*; import com.xinquan.system.service.ISysRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,6 +44,8 @@ @Autowired private SysRoleDeptMapper roleDeptMapper; + @Autowired + private SysMenuMapper menuMapper; /** * 根据条件分页查询角色数据 @@ -373,7 +373,7 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public int deleteRoleByIds(Long[] roleIds) + public int deleteRoleByIds(List<Long> roleIds) { for (Long roleId : roleIds) { @@ -443,4 +443,108 @@ public List<SysRole> isExitUpdate(String roleName, Long roleId) { return roleMapper.isExitUpdate(roleName,roleId); } + + @Override + public PageInfo<SysRole> selectList(SysRoleQuery query) { + PageInfo<SysRole> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize()); + List<SysRole> list = roleMapper.selectList(query,pageInfo); + pageInfo.setRecords(list); + return pageInfo; + } + @Override + public Boolean isExit(Long id, String roleName) { + int count = this.selectCountByRoleName(roleName); + if (StringUtils.isNotNull(id)) { + // 修改 + SysRole sysRole = roleMapper.selectRoleById(id); + return Objects.nonNull(sysRole) && !sysRole.getRoleName().equals(roleName) && count > 0; + } else { + // 新增 + return count > 0; + } + } + @Override + public List<SysMenu> getMenuLevelList(List<Long> menusId) { + //获取当前的权限菜单 + List<SysMenu> all = roleMenuMapper.getAllInIds(menusId); + // 第三级 + List<SysMenu> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList()); + // 第二级 + List<SysMenu> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList()); + // 第一级 + List<SysMenu> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList()); + + for (SysMenu menu : s2) { + List<SysMenu> collect = s3.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList()); + menu.setChildren(collect); + } + for (SysMenu menu : s1) { + List<SysMenu> collect = s2.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList()); + menu.setChildren(collect); + } + return s1; + } + @Override + public List<SysMenu> roleInfoFromUserId(Long userId) { + List<SysRole> sysRole = roleMapper.selectRoleByUserId(userId); + List<SysMenu> menus2 = new ArrayList<>(); + for (SysRole role : sysRole) { + List<SysMenu> menus1 = menuMapper.selectListByRoleId(role.getRoleId()); + menus2.addAll(menus1); + } + List<SysMenu> menus = menus2.stream().distinct().collect(Collectors.toList()); + // 获取当前角色的菜单列表 + if(menus.size()==0){ + return new ArrayList<>(); + } + List<Long> menusId = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); + // 获取当前的权限菜单(有层级) + return this.getMenuLevelList(menusId); + } + @Override + public int selectCountByRoleName(String roleName) { + return roleMapper.selectCountByRoleName(roleName); + } + @Override + public int editRole(SysRoleDTO dto) { + // 修改角色信息 + SysRole sysRole = new SysRole(); + sysRole.setRoleId(dto.getRoleId()); + sysRole.setRoleName(dto.getRoleName()); + sysRole.setRemark(dto.getRemark()); + roleMapper.updateRole(sysRole); + // 删除角色与菜单关联 + roleMenuMapper.deleteRoleMenuByRoleId(dto.getRoleId()); + + // 添加角色权限中间表 + List<Long> menuIds = dto.getMenuIds(); + List<SysRoleMenu> sysRoleMenus = new ArrayList<>(); + for (Long menuId : menuIds) { + SysRoleMenu sysRoleMenu = new SysRoleMenu(); + sysRoleMenu.setRoleId(dto.getRoleId()); + sysRoleMenu.setMenuId(menuId); + sysRoleMenus.add(sysRoleMenu); + } + + return roleMenuMapper.batchRoleMenu(sysRoleMenus); + } + @Override + public void saveRole(SysRoleDTO dto) { + // 添加角色 + SysRole sysRole = new SysRole(); + sysRole.setRoleName(dto.getRoleName()); + sysRole.setRemark(dto.getRemark()); + roleMapper.insertRole(sysRole); + + // 添加角色权限中间表 + List<Long> menuIds = dto.getMenuIds(); + List<SysRoleMenu> sysRoleMenus = new ArrayList<>(); + for (Long menuId : menuIds) { + SysRoleMenu sysRoleMenu = new SysRoleMenu(); + sysRoleMenu.setRoleId(sysRole.getRoleId()); + sysRoleMenu.setMenuId(menuId); + sysRoleMenus.add(sysRoleMenu); + } + roleMenuMapper.batchRoleMenu(sysRoleMenus); + } } -- Gitblit v1.7.1