/** * 删除权限 * * @param perId * @return */ public ResultVO delPermission(int perId) { ResultVO resultVO = new ResultVO(true); // 获取所有权限 List<Permission> permissionList = permissionDao.selectAll(); Permission permission = permissionDao.get(permissionList, perId); if (permission == null) { resultVO.setOk(false); resultVO.setMsg("权限不存在"); return resultVO; } // 查看是否有权限 Subject subject = SecurityUtils.getSubject(); if (!subject.isPermitted(permission.getKey())) { resultVO.setOk(false); resultVO.setMsg("您没有操作权限"); return resultVO; } // 判断是否是根级权限 // 获取我拥有的权限 List<Permission> myPermissionList = new ArrayList<Permission>(); for (Permission p : permissionList) { String key = p.getKey(); boolean permitted = subject.isPermitted(key); if (permitted) { myPermissionList.add(p); } } List<Permission> rootPermissions = getRootPermissions(myPermissionList); for (Permission p : rootPermissions) { if (p.getId().intValue() == perId) { resultVO.setOk(false); resultVO.setMsg("根级权限不能删除"); return resultVO; } } // 获取子级权限id集合 List<Integer> childrenPermissionIds = getChildrenPermissionIds(perId, permissionList); // 删除权限 int num = permissionDao.deletePermission(perId); for (Integer id : childrenPermissionIds) { num = permissionDao.deletePermission(id); if (num == 1) { rolePermissionDao.deleteByPerId(id); menuPermissionDao.deleteByPerId(id); } } rolePermissionDao.deleteByPerId(perId); menuPermissionDao.deleteByPerId(perId); resultVO.setMsg("删除权限成功"); return resultVO; }
/** * 获取角色显示权限 * * @param roleId * @return */ public ResultVO getRoleShowPermissions(int roleId) { ResultVO resultVO = new ResultVO(true); List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>(); // 获取我拥有的权限 List<Permission> myPermissionList = new ArrayList<Permission>(); // 获取所有权限 List<Permission> permissionList = permissionDao.selectAll(); Subject subject = SecurityUtils.getSubject(); for (Permission permission : permissionList) { String key = permission.getKey(); boolean permitted = subject.isPermitted(key); if (permitted) { myPermissionList.add(permission); } } // 获取所有角色 List<Role> roles = roleDao.selectAll(); Role role = roleDao.get(roles, roleId); if (role == null) { resultVO.setOk(false); resultVO.setMsg("角色不存在"); return resultVO; } // 获取角色拥有的权限id Set<Integer> permissionIdSet = rolePermissionDao.getPermissionIdSetByRoleId(roleId); List<Permission> rootPermissions = getRootPermissions(myPermissionList); for (Permission permission : rootPermissions) { Map<String, Object> map = new HashMap<String, Object>(); map.put("id", permission.getId()); map.put("text", permission.getName()); map.put("key", permission.getKey()); map.put("checked", permissionIdSet.contains(permission.getId())); map.put("order", permission.getOrder()); map.put( "children", getChildrenPermissions(myPermissionList, permission.getId(), permissionIdSet, null)); mapList.add(map); } resultVO.setData(mapList); return resultVO; }