houzhongjian
2024-12-26 5b9f87937feb53890138dbcd3a94cd883997e950
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.system.service.permission;
H 2
3 import com.iailab.module.system.api.permission.dto.DeptDataPermissionRespDTO;
4
5 import java.util.Collection;
6 import java.util.Set;
7
8 import static java.util.Collections.singleton;
9
10 /**
11  * 权限 Service 接口
12  * <p>
13  * 提供用户-角色、角色-菜单、角色-部门的关联权限处理
14  *
15  * @author iailab
16  */
17 public interface PermissionService {
18
19     /**
20      * 判断是否有权限,任一一个即可
21      *
22      * @param userId      用户编号
23      * @param permissions 权限
24      * @return 是否
25      */
26     boolean hasAnyPermissions(Long userId, String... permissions);
27
28     /**
29      * 判断是否有角色,任一一个即可
30      *
31      * @param roles 角色数组
32      * @return 是否
33      */
34     boolean hasAnyRoles(Long userId, String... roles);
35
36     // ========== 角色-菜单的相关方法  ==========
37
38     /**
39      * 设置角色菜单
40      *
41      * @param roleId  角色编号
42      * @param menuIds 菜单编号集合
43      */
44     void assignRoleMenu(Long roleId, Set<Long> menuIds);
45
46     /**
818a01 47      * 设置角色应用菜单
H 48      *
49      * @param roleId  角色编号
50      * @param menuIds 菜单编号集合
51      */
7da8f1 52 //    void assignRoleAppMenu(Long roleId, Set<Long> menuIds);
818a01 53
H 54     /**
e7c126 55      * 处理角色删除时,删除关联授权数据
H 56      *
57      * @param roleId 角色编号
58      */
59     void processRoleDeleted(Long roleId);
60
61     /**
62      * 处理菜单删除时,删除关联授权数据
63      *
64      * @param menuId 菜单编号
65      */
66     void processMenuDeleted(Long menuId);
67
68     /**
69      * 获得角色拥有的菜单编号集合
70      *
71      * @param roleId 角色编号
72      * @return 菜单编号集合
73      */
74     default Set<Long> getRoleMenuListByRoleId(Long roleId) {
75         return getRoleMenuListByRoleId(singleton(roleId));
76     }
77
78     /**
818a01 79      * 获得角色拥有的应用菜单编号集合
H 80      *
81      * @param roleId 角色编号
82      * @return 菜单编号集合
83      */
84     default Set<Long> getRoleAppMenuListByRoleId(Long roleId) {
85         return getRoleAppMenuListByRoleId(singleton(roleId));
86     }
87
88     /**
e7c126 89      * 获得角色们拥有的菜单编号集合
H 90      *
91      * @param roleIds 角色编号数组
92      * @return 菜单编号集合
93      */
94     Set<Long> getRoleMenuListByRoleId(Collection<Long> roleIds);
95
96     /**
818a01 97      * 获得角色们拥有的应用菜单编号集合
H 98      *
99      * @param roleIds 角色编号数组
100      * @return 菜单编号集合
101      */
102     Set<Long> getRoleAppMenuListByRoleId(Collection<Long> roleIds);
103
104     /**
e7c126 105      * 获得拥有指定菜单的角色编号数组,从缓存中获取
H 106      *
107      * @param menuId 菜单编号
108      * @return 角色编号数组
109      */
110     Set<Long> getMenuRoleIdListByMenuIdFromCache(Long menuId);
111
112     // ========== 用户-角色的相关方法  ==========
113
114     /**
115      * 设置用户角色
116      *
117      * @param userId  角色编号
118      * @param roleIds 角色编号集合
119      */
120     void assignUserRole(Long userId, Set<Long> roleIds);
121
122     /**
123      * 处理用户删除时,删除关联授权数据
124      *
125      * @param userId 用户编号
126      */
127     void processUserDeleted(Long userId);
128
129     /**
130      * 获得拥有多个角色的用户编号集合
131      *
132      * @param roleIds 角色编号集合
133      * @return 用户编号集合
134      */
135     Set<Long> getUserRoleIdListByRoleId(Collection<Long> roleIds);
136
137     /**
138      * 获得用户拥有的角色编号集合
139      *
140      * @param userId 用户编号
141      * @return 角色编号集合
142      */
143     Set<Long> getUserRoleIdListByUserId(Long userId);
144
145     /**
146      * 获得用户拥有的角色编号集合,从缓存中获取
147      *
148      * @param userId 用户编号
149      * @return 角色编号集合
150      */
151     Set<Long> getUserRoleIdListByUserIdFromCache(Long userId);
152
153     // ========== 用户-部门的相关方法  ==========
154
155     /**
156      * 设置角色的数据权限
157      *
158      * @param roleId           角色编号
159      * @param dataScope        数据范围
160      * @param dataScopeDeptIds 部门编号数组
161      */
162     void assignRoleDataScope(Long roleId, Integer dataScope, Set<Long> dataScopeDeptIds);
163
164     /**
165      * 获得登陆用户的部门数据权限
166      *
167      * @param userId 用户编号
168      * @return 部门数据权限
169      */
170     DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
171
172 }