예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }