From 2841620be623be15c1832a783136a2b73c2b4424 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期四, 13 二月 2020 10:48:51 +0800 Subject: [PATCH] 初始化项目 --- ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java | 311 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 311 insertions(+), 0 deletions(-) diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java new file mode 100644 index 0000000..45898d7 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,311 @@ +package com.ruoyi.project.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.constant.UserConstants; +import com.ruoyi.common.exception.CustomException; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.framework.aspectj.lang.annotation.DataScope; +import com.ruoyi.project.system.domain.SysRole; +import com.ruoyi.project.system.domain.SysRoleDept; +import com.ruoyi.project.system.domain.SysRoleMenu; +import com.ruoyi.project.system.mapper.SysRoleDeptMapper; +import com.ruoyi.project.system.mapper.SysRoleMapper; +import com.ruoyi.project.system.mapper.SysRoleMenuMapper; +import com.ruoyi.project.system.mapper.SysUserRoleMapper; +import com.ruoyi.project.system.service.ISysRoleService; + +/** + * 瑙掕壊 涓氬姟灞傚鐞� + * + * @author ruoyi + */ +@Service +public class SysRoleServiceImpl implements ISysRoleService +{ + @Autowired + private SysRoleMapper roleMapper; + + @Autowired + private SysRoleMenuMapper roleMenuMapper; + + @Autowired + private SysUserRoleMapper userRoleMapper; + + @Autowired + private SysRoleDeptMapper roleDeptMapper; + + /** + * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁 + * + * @param role 瑙掕壊淇℃伅 + * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅 + */ + @Override + @DataScope(deptAlias = "d") + public List<SysRole> selectRoleList(SysRole role) + { + return roleMapper.selectRoleList(role); + } + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 + * + * @param userId 鐢ㄦ埛ID + * @return 鏉冮檺鍒楄〃 + */ + @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; + } + + /** + * 鏌ヨ鎵�鏈夎鑹� + * + * @return 瑙掕壊鍒楄〃 + */ + public List<SysRole> selectRoleAll() + { + return roleMapper.selectRoleAll(); + } + + /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛� + * + * @param userId 鐢ㄦ埛ID + * @return 閫変腑瑙掕壊ID鍒楄〃 + */ + public List<Integer> selectRoleListByUserId(Long userId) + { + return roleMapper.selectRoleListByUserId(userId); + } + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 瑙掕壊瀵硅薄淇℃伅 + */ + public SysRole selectRoleById(Long roleId) + { + return roleMapper.selectRoleById(roleId); + } + + /** + * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @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; + } + + /** + * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @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; + } + + /** + * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔 + * + * @param role 瑙掕壊淇℃伅 + */ + public void checkRoleAllowed(SysRole role) + { + if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) + { + throw new CustomException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳瑙掕壊"); + } + } + + /** + * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + @Override + public int countUserRoleByRoleId(Long roleId) + { + return userRoleMapper.countUserRoleByRoleId(roleId); + } + + /** + * 鏂板淇濆瓨瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional + public int insertRole(SysRole role) + { + // 鏂板瑙掕壊淇℃伅 + roleMapper.insertRole(role); + return insertRoleMenu(role); + } + + /** + * 淇敼淇濆瓨瑙掕壊淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional + public int updateRole(SysRole role) + { + // 淇敼瑙掕壊淇℃伅 + roleMapper.updateRole(role); + // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱� + roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId()); + return insertRoleMenu(role); + } + + /** + * 淇敼瑙掕壊鐘舵�� + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + public int updateRoleStatus(SysRole role) + { + return roleMapper.updateRole(role); + } + + /** + * 淇敼鏁版嵁鏉冮檺淇℃伅 + * + * @param role 瑙掕壊淇℃伅 + * @return 缁撴灉 + */ + @Override + @Transactional + public int authDataScope(SysRole role) + { + // 淇敼瑙掕壊淇℃伅 + roleMapper.updateRole(role); + // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱� + roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); + // 鏂板瑙掕壊鍜岄儴闂ㄤ俊鎭紙鏁版嵁鏉冮檺锛� + return insertRoleDept(role); + } + + /** + * 鏂板瑙掕壊鑿滃崟淇℃伅 + * + * @param 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; + } + + /** + * 鏂板瑙掕壊閮ㄩ棬淇℃伅(鏁版嵁鏉冮檺) + * + * @param role 瑙掕壊瀵硅薄 + */ + 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; + } + + /** + * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊 + * + * @param roleId 瑙掕壊ID + * @return 缁撴灉 + */ + @Override + public int deleteRoleById(Long roleId) + { + return roleMapper.deleteRoleById(roleId); + } + + /** + * 鎵归噺鍒犻櫎瑙掕壊淇℃伅 + * + * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID + * @return 缁撴灉 + */ + public int deleteRoleByIds(Long[] roleIds) + { + for (Long roleId : roleIds) + { + checkRoleAllowed(new SysRole(roleId)); + SysRole role = selectRoleById(roleId); + if (countUserRoleByRoleId(roleId) > 0) + { + throw new CustomException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", role.getRoleName())); + } + } + return roleMapper.deleteRoleByIds(roleIds); + } +} -- Gitblit v1.9.3