123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 |
- package com.ruoyi.system.service.impl;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.ruoyi.common.annotation.DataScope;
- import com.ruoyi.common.constant.UserConstants;
- import com.ruoyi.common.core.domain.entity.SysRole;
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.exception.ServiceException;
- import com.ruoyi.common.utils.SecurityUtils;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.common.utils.spring.SpringUtils;
- import com.ruoyi.system.domain.SysRoleDept;
- import com.ruoyi.system.domain.SysRoleMenu;
- import com.ruoyi.system.domain.SysUserRole;
- import com.ruoyi.system.mapper.SysRoleDeptMapper;
- import com.ruoyi.system.mapper.SysRoleMapper;
- import com.ruoyi.system.mapper.SysRoleMenuMapper;
- import com.ruoyi.system.mapper.SysUserRoleMapper;
- import com.ruoyi.system.service.ISysRoleService;
- @Service
- public class SysRoleServiceImpl implements ISysRoleService
- {
- @Autowired
- private SysRoleMapper roleMapper;
- @Autowired
- private SysRoleMenuMapper roleMenuMapper;
- @Autowired
- private SysUserRoleMapper userRoleMapper;
- @Autowired
- private SysRoleDeptMapper roleDeptMapper;
-
- @Override
- @DataScope(deptAlias = "d")
- public List<SysRole> selectRoleList(SysRole role)
- {
- return roleMapper.selectRoleList(role);
- }
-
- @Override
- public List<SysRole> selectRolesByUserId(Long userId)
- {
- List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
- List<SysRole> roles = selectRoleAll();
- for (SysRole role : roles)
- {
- for (SysRole userRole : userRoles)
- {
- if (role.getRoleId().longValue() == userRole.getRoleId().longValue())
- {
- role.setFlag(true);
- break;
- }
- }
- }
- return roles;
- }
-
- @Override
- public Set<String> selectRolePermissionByUserId(Long userId)
- {
- List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
- Set<String> permsSet = new HashSet<>();
- for (SysRole perm : perms)
- {
- if (StringUtils.isNotNull(perm))
- {
- permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
- }
- }
- return permsSet;
- }
-
- @Override
- public List<SysRole> selectRoleAll()
- {
- return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
- }
-
- @Override
- public List<Long> selectRoleListByUserId(Long userId)
- {
- return roleMapper.selectRoleListByUserId(userId);
- }
-
- @Override
- public SysRole selectRoleById(Long roleId)
- {
- return roleMapper.selectRoleById(roleId);
- }
-
- @Override
- public String checkRoleNameUnique(SysRole role)
- {
- Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
- SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
- if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
- {
- return UserConstants.NOT_UNIQUE;
- }
- return UserConstants.UNIQUE;
- }
-
- @Override
- public String checkRoleKeyUnique(SysRole role)
- {
- Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
- SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
- if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
- {
- return UserConstants.NOT_UNIQUE;
- }
- return UserConstants.UNIQUE;
- }
-
- @Override
- public void checkRoleAllowed(SysRole role)
- {
- if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin())
- {
- throw new ServiceException("不允许操作超级管理员角色");
- }
- }
-
- @Override
- public void checkRoleDataScope(Long roleId)
- {
- if (!SysUser.isAdmin(SecurityUtils.getUserId()))
- {
- SysRole role = new SysRole();
- role.setRoleId(roleId);
- List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
- if (StringUtils.isEmpty(roles))
- {
- throw new ServiceException("没有权限访问角色数据!");
- }
- }
- }
-
- @Override
- public int countUserRoleByRoleId(Long roleId)
- {
- return userRoleMapper.countUserRoleByRoleId(roleId);
- }
-
- @Override
- @Transactional
- public int insertRole(SysRole role)
- {
-
- roleMapper.insertRole(role);
- return insertRoleMenu(role);
- }
-
- @Override
- @Transactional
- public int updateRole(SysRole role)
- {
-
- roleMapper.updateRole(role);
-
- roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
- return insertRoleMenu(role);
- }
-
- @Override
- public int updateRoleStatus(SysRole role)
- {
- return roleMapper.updateRole(role);
- }
-
- @Override
- @Transactional
- public int authDataScope(SysRole role)
- {
-
- roleMapper.updateRole(role);
-
- roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId());
-
- return insertRoleDept(role);
- }
-
- public int insertRoleMenu(SysRole role)
- {
- int rows = 1;
-
- List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
- for (Long menuId : role.getMenuIds())
- {
- SysRoleMenu rm = new SysRoleMenu();
- rm.setRoleId(role.getRoleId());
- rm.setMenuId(menuId);
- list.add(rm);
- }
- if (list.size() > 0)
- {
- rows = roleMenuMapper.batchRoleMenu(list);
- }
- return rows;
- }
-
- public int insertRoleDept(SysRole role)
- {
- int rows = 1;
-
- List<SysRoleDept> list = new ArrayList<SysRoleDept>();
- for (Long deptId : role.getDeptIds())
- {
- SysRoleDept rd = new SysRoleDept();
- rd.setRoleId(role.getRoleId());
- rd.setDeptId(deptId);
- list.add(rd);
- }
- if (list.size() > 0)
- {
- rows = roleDeptMapper.batchRoleDept(list);
- }
- return rows;
- }
-
- @Override
- @Transactional
- public int deleteRoleById(Long roleId)
- {
-
- roleMenuMapper.deleteRoleMenuByRoleId(roleId);
-
- roleDeptMapper.deleteRoleDeptByRoleId(roleId);
- return roleMapper.deleteRoleById(roleId);
- }
-
- @Override
- @Transactional
- public int deleteRoleByIds(Long[] roleIds)
- {
- for (Long roleId : roleIds)
- {
- checkRoleAllowed(new SysRole(roleId));
- checkRoleDataScope(roleId);
- SysRole role = selectRoleById(roleId);
- if (countUserRoleByRoleId(roleId) > 0)
- {
- throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
- }
- }
-
- roleMenuMapper.deleteRoleMenu(roleIds);
-
- roleDeptMapper.deleteRoleDept(roleIds);
- return roleMapper.deleteRoleByIds(roleIds);
- }
-
- @Override
- public int deleteAuthUser(SysUserRole userRole)
- {
- return userRoleMapper.deleteUserRoleInfo(userRole);
- }
-
- @Override
- public int deleteAuthUsers(Long roleId, Long[] userIds)
- {
- return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
- }
-
- @Override
- public int insertAuthUsers(Long roleId, Long[] userIds)
- {
-
- List<SysUserRole> list = new ArrayList<SysUserRole>();
- for (Long userId : userIds)
- {
- SysUserRole ur = new SysUserRole();
- ur.setUserId(userId);
- ur.setRoleId(roleId);
- list.add(ur);
- }
- return userRoleMapper.batchUserRole(list);
- }
- }
|