/// <summary> /// 根据当前用户获取权限 /// </summary> /// <param name="userId">当前用户ID</param> /// <param name="appId">AppID</param> /// <param name="roleId">角色ID</param> /// <returns></returns> public RolePermissionsResponseModel GetMenuResponses(int userId, int appId, int roleId) { var ulistAll = GetMenuAndFunctionByUserId(userId, appId); var rlistAll = GetMenuAndFunctionByRoleId(roleId, appId); var responseModel = new RolePermissionsResponseModel { AllPermissions = ulistAll, CurrentPermissions = rlistAll, RoleId = roleId }; return(responseModel); }
private static ICollection <RolePermissionTreeNode> GetTreeNodes(RolePermissionsResponseModel model) { ICollection <RolePermissionTreeNode> allTreeNodes = new List <RolePermissionTreeNode>(); if (model.AllPermissions != null) { Map(model.AllPermissions, allTreeNodes); } ICollection <RolePermissionTreeNode> roleTreeNodes = new List <RolePermissionTreeNode>(); if (model.CurrentPermissions != null) { Map(model.CurrentPermissions, roleTreeNodes); } var intersectNodes = allTreeNodes.Intersect(roleTreeNodes, new RolePermissionTreeNodeEqualityComparer()).ToList(); Parallel.ForEach(intersectNodes, node => { node.Checked = true; node.Open = true; node.Disabled = false; }); var allExceptRoleNodes = allTreeNodes.Except(roleTreeNodes, new RolePermissionTreeNodeEqualityComparer()).ToList(); Parallel.ForEach(allExceptRoleNodes, node => { node.Checked = false; node.Open = false; node.Disabled = false; }); var roleExceptAllNodes = roleTreeNodes.Except(allTreeNodes, new RolePermissionTreeNodeEqualityComparer()).ToList(); Parallel.ForEach(roleExceptAllNodes, node => { node.Checked = true; node.Open = true; node.Disabled = true; }); var treeNodes = intersectNodes.Concat(allExceptRoleNodes).Concat(roleExceptAllNodes).ToList(); return(treeNodes); }