List findPermissionByRoleId(Integer roleId);
List findPermissionById(List currentRolePermissions);
PermissionMapper.xml
2.业务层 PermissionService.java
List findPermissionByRoleId(Integer roleId);
List findPermissionById(List currentRolePermissions);
PermissionServiceImpl.java
public List findPermissionByRoleId(Integer roleId) {
return permissionMapper.findPermissionByRoleId(roleId);
}
public List findPermissionById(List currentRolePermissions) {
return permissionMapper.findPermissionById(currentRolePermissions);
}
3.控制层 RoleController.java
@RequestMapping("/initMenuTree")
public DataGridViewResult initMenuTree(Integer roleId){
//调用查询所有菜单权限列表的方法
List permissionList = permissionService.findPermissionList(null);
//调用根据角色ID查询菜单列表的方法(角色权限列表集合)
List currentRolePermissionIds = permissionService.findPermissionByRoleId(roleId);
//创建集合保存菜单信息
List currentPermissions = new ArrayList();
//判断角色权限列表集合是否存在数据
if(currentRolePermissionIds!=null && currentRolePermissionIds.size()>0){
//如果角色权限列表集合中存在数据,则需要根据权限菜单ID查询详细信息
currentPermissions = permissionService.findPermissionById(currentRolePermissionIds);
}
//创建菜单节点集合
List treeNodes = new ArrayList();
//循环遍历权限菜单列表
for (Permission permission : permissionList) {
//定义变量,标识是否选中
String checkArr = "0";//0表示复选框不选中,1表示选中复选框
//内层循环遍历当前角色拥有的权限菜单
//循环比较的原因:比较两个集合中的数据是否有相同的,有相同的表示当前角色拥有这个权限
for (Permission currentPermission : currentPermissions) {
//比较两个集合中权限菜单id是否相同,相同则选择
if(permission.getId() == currentPermission.getId()){
checkArr = "1";
break;
}
}
//定义变量,标识菜单是否展开
Boolean spread = (permission.getSpread()==null || permission.getSpread()==1) ? true : false;
treeNodes.add(new TreeNode(permission.getId(),permission.getPid(),permission.getTitle(),spread,checkArr));
}
return new DataGridViewResult(treeNodes);
}
14.1.3 保存角色菜单关系
1.数据层 RoleMapper.java
@Insert("insert into sys_role_permission(rid,pid) values(#{roleId},#{pid})")
int saveRolePermission(@Param("pid") Integer permissionId, @Param("roleId") Integer roleId);
@Delete("delete from sys_role_permission where rid = #{roleId}")
void deleteRolePermissionByRoleId(Integer roleId);
List findPermissionListByUserId(@Param("userId") Integer userId, @Param("type") String type);
PermissionMapper.xml
select distinct t1.* from sys_permission t1
inner join sys_role_permission t2 on t2.`pid` = t1.`id`
inner join sys_user_role t3 on t3.`rid` = t2.`rid`
where t3.`uid` = #{userId} and t1.`type` =#{type}
2.业务层 PermissionService.java
List findPermissionListByUserId(Integer userId, String type);
PermissionServiceImpl.java
public List findPermissionListByUserId(Integer userId, String type) {
return permissionMapper.findPermissionListByUserId(userId,type);
}