/// <summary> /// /// </summary> /// <param name="menus">菜单集合</param> /// <param name="permissions">权限集合</param> /// <param name="parentGuid">父级菜单GUID</param> /// <param name="isSuperAdministrator">是否为超级管理员角色</param> /// <returns></returns> public static List <PermissionMenuTree> FillRecursive(this List <PermissionMenuTree> menus, List <SystemPermissionWithAssignProperty> permissions, Guid?parentGuid, bool isSuperAdministrator = false) { List <PermissionMenuTree> recursiveObjects = new List <PermissionMenuTree>(); foreach (var item in menus.Where(x => x.ParentGuid == parentGuid)) { var children = new PermissionMenuTree { AllAssigned = isSuperAdministrator ? true : (permissions.Where(x => x.MenuGuid == item.Guid).Count(x => x.IsAssigned == 0) == 0), Expand = true, Guid = item.Guid, ParentGuid = item.ParentGuid, Permissions = permissions.Where(x => x.MenuGuid == item.Guid).Select(x => new PermissionElement { Name = x.Name, Code = x.Code, IsAssignedToRole = IsAssigned(x.IsAssigned, isSuperAdministrator) }).ToList(), Title = item.Title, Children = FillRecursive(menus, permissions, item.Guid) }; recursiveObjects.Add(children); } return(recursiveObjects); }
/// <summary> /// 获取菜单权限 /// </summary> /// <param name="menus">菜单集合</param> /// <param name="permissions">权限集合</param> /// <param name="parentGuid">父级id</param> /// <param name="IsSuperAdministrator">是否超级管理员</param> /// <returns></returns> public static List <PermissionMenuTree> FillRecursive(this List <PermissionMenuTree> menus, List <Sys_PermissionWithAssignProperty> permissions, Guid?parentGuid, bool IsSuperAdministrator = false) { List <PermissionMenuTree> trees = new List <PermissionMenuTree>(); foreach (var item in menus.Where(x => x.Parentid == parentGuid)) { var chil = LoadPermisson(permissions, item.id, IsSuperAdministrator); //当前菜单的权限 chil.AddRange(FillRecursive(menus, permissions, item.id, IsSuperAdministrator)); //子菜单 var children = new PermissionMenuTree { id = item.id, Parentid = item.Parentid, Title = item.Title, Expand = true, AllAssigned = IsSuperAdministrator ? true : (permissions.Where(x => x.Menuid == item.id).Count(x => x.IsAssigned == 0) == 0), //todo:前台ui无法实现这种 //Permissions = permissions.Where(x => x.Menuid == item.id).Select(x => new PermissionElement //{ // Id = x.Id, // IsAssignedToRole = IsAssigned(x.IsAssigned, IsSuperAdministrator), // Name = x.Name //}).ToList(), Children = IsChildren(menus, item.id) ? FillRecursive(menus, permissions, item.id, IsSuperAdministrator) : LoadPermisson(permissions, item.id, IsSuperAdministrator), Disabled = true//IsChildren(menus, item.id) }; trees.Add(children); } return(trees); }