From 9e5d3f634b52333c076eb443a64de873c5ddceed Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 09 十一月 2024 14:39:46 +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