package com.iailab.module.system.service.permission; import com.iailab.module.system.api.permission.dto.DeptDataPermissionRespDTO; import java.util.Collection; import java.util.Set; import static java.util.Collections.singleton; /** * 权限 Service 接口 *

* 提供用户-角色、角色-菜单、角色-部门的关联权限处理 * * @author iailab */ public interface PermissionService { /** * 判断是否有权限,任一一个即可 * * @param userId 用户编号 * @param permissions 权限 * @return 是否 */ boolean hasAnyPermissions(Long userId, String... permissions); /** * 判断是否有角色,任一一个即可 * * @param roles 角色数组 * @return 是否 */ boolean hasAnyRoles(Long userId, String... roles); // ========== 角色-菜单的相关方法 ========== /** * 设置角色菜单 * * @param roleId 角色编号 * @param menuIds 菜单编号集合 */ void assignRoleMenu(Long roleId, Set menuIds); /** * 设置角色应用菜单 * * @param roleId 角色编号 * @param menuIds 菜单编号集合 */ // void assignRoleAppMenu(Long roleId, Set menuIds); /** * 处理角色删除时,删除关联授权数据 * * @param roleId 角色编号 */ void processRoleDeleted(Long roleId); /** * 处理菜单删除时,删除关联授权数据 * * @param menuId 菜单编号 */ void processMenuDeleted(Long menuId); /** * 获得角色拥有的菜单编号集合 * * @param roleId 角色编号 * @return 菜单编号集合 */ default Set getRoleMenuListByRoleId(Long roleId) { return getRoleMenuListByRoleId(singleton(roleId)); } /** * 获得角色拥有的应用菜单编号集合 * * @param roleId 角色编号 * @return 菜单编号集合 */ default Set getRoleAppMenuListByRoleId(Long roleId) { return getRoleAppMenuListByRoleId(singleton(roleId)); } /** * 获得角色们拥有的菜单编号集合 * * @param roleIds 角色编号数组 * @return 菜单编号集合 */ Set getRoleMenuListByRoleId(Collection roleIds); /** * 获得角色们拥有的应用菜单编号集合 * * @param roleIds 角色编号数组 * @return 菜单编号集合 */ Set getRoleAppMenuListByRoleId(Collection roleIds); /** * 获得拥有指定菜单的角色编号数组,从缓存中获取 * * @param menuId 菜单编号 * @return 角色编号数组 */ Set getMenuRoleIdListByMenuIdFromCache(Long menuId); // ========== 用户-角色的相关方法 ========== /** * 设置用户角色 * * @param userId 角色编号 * @param roleIds 角色编号集合 */ void assignUserRole(Long userId, Set roleIds); /** * 处理用户删除时,删除关联授权数据 * * @param userId 用户编号 */ void processUserDeleted(Long userId); /** * 获得拥有多个角色的用户编号集合 * * @param roleIds 角色编号集合 * @return 用户编号集合 */ Set getUserRoleIdListByRoleId(Collection roleIds); /** * 获得用户拥有的角色编号集合 * * @param userId 用户编号 * @return 角色编号集合 */ Set getUserRoleIdListByUserId(Long userId); /** * 获得用户拥有的角色编号集合,从缓存中获取 * * @param userId 用户编号 * @return 角色编号集合 */ Set getUserRoleIdListByUserIdFromCache(Long userId); // ========== 用户-部门的相关方法 ========== /** * 设置角色的数据权限 * * @param roleId 角色编号 * @param dataScope 数据范围 * @param dataScopeDeptIds 部门编号数组 */ void assignRoleDataScope(Long roleId, Integer dataScope, Set dataScopeDeptIds); /** * 获得登陆用户的部门数据权限 * * @param userId 用户编号 * @return 部门数据权限 */ DeptDataPermissionRespDTO getDeptDataPermission(Long userId); }