コード例 #1
0
        public async Task <RoleAssigMenuViewModel> GetRoleAssigMenuViewModels(Guid RoleId)
        {
            #region 获取所有的菜单和按钮
            var list          = this._menuRepositoty.GetAll(x => x.IsDrop == false).ToList(); //获取所有的菜单列表
            var RoleAssigMenu = MyMappers.ObjectMapper.Map <List <SysMenu>, List <RoleAssigMenuViewModel> >(list);
            var buttonlist    = _buttonRepositoty.GetAll(x => x.IsDrop == false);             //获取所有的按钮列表
            //var RoleAssigButton = MyMappers.ObjectMapper.Map<List<SysButton>, List<RoleAssigButtonViewModel>>(buttonlist);
            RoleAssigMenuViewModel roleAssigMenuView = new RoleAssigMenuViewModel()
            {
                Id       = Guid.Empty,
                expand   = true,
                title    = "根节点",
                disabled = false,
                @checked = false,
            };
            var SysbuttonList = await _buttonRepositoty.GetAllListAsync(x => x.IsDrop == false);//获取所有的菜单按钮列表

            #endregion


            #region 获取该角色下的所有权限
            var roleRight = await _roleRightAssigRepository.GetAllListAsync(x => x.RoleId == RoleId);

            #endregion

            //调用递归事件
            CreateRoleAssigTree(RoleAssigMenu, roleAssigMenuView, SysbuttonList, roleRight);

            //dynamic var =  LinqTosql();

            return(roleAssigMenuView);
        }
コード例 #2
0
        /// <summary>
        /// 获取树形菜单,渲染左侧菜单使用
        /// </summary>
        /// <returns></returns>
        public async Task <RouterBar> RouterBar(Guid userId)
        {
            var Rolelist = await _userRoleRepository.GetAllListAsync(x => x.UserIdOrDepId == userId);        //根据用户ID获取角色列表

            var RoleIds  = Rolelist.Select(x => x.RoleId).ToList();                                          //获取到角色列表中的角色ID
            var MenuList = await _roleRightAssigRepository.GetAllListAsync(x => RoleIds.Contains(x.RoleId)); //根据角色Id获取菜单列表

            var MenuIds  = MenuList.Select(x => x.MenuId).ToList();                                          //获取角色权限中的菜单ID
            var baselist = await _menuRepositoty.GetAllListAsync(x => MenuIds.Contains(x.Id));               //根据菜单ID获取菜单列表 x=>MenuIds.Contains(x.Id)

            var btnlist = await _buttonRepositoty.GetAllListAsync(x => x.IsShow == true && x.IsDrop == false);

            RouterBar routerbar = new RouterBar()
            {
                Id       = Guid.Empty,
                name     = "根节点",
                order    = 0,
                path     = "",
                meta     = new NavigationBarMeta(),
                ParentId = Guid.Empty,
            };
            //定义一个树形列表
            var routerbarTreeall = baselist.Where(x => x.IsDrop == false).Select(s => new RouterBar
            {
                Id       = s.Id,
                name     = s.Name,
                ParentId = s.ParentId,
                iconCls  = s.Icon,
                order    = s.Sort,
                path     = s.UrlAddress,
                meta     = new NavigationBarMeta
                {
                    requireAuth = true,
                    title       = s.Name,
                }
            }).ToList();

            try
            {
                //递归形成前端路由器格式的树形菜单
                CreateMenuTree(routerbarTreeall, routerbar, btnlist, MenuList);
                return(routerbar);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #3
0
        /// <summary>
        /// 获取树形菜单,渲染左侧菜单使用
        /// </summary>
        /// <returns></returns>
        public async Task <RouterBar> RouterBar(Guid userId)
        {
            //记录Job时间
            //Stopwatch stopwatch = new Stopwatch();
            //stopwatch.Start();
            var Rolelist = await _userRoleRepository.GetAllListAsync(x => x.UserIdOrDepId == userId);        //根据用户ID获取角色列表

            var RoleIds  = Rolelist.Select(x => x.RoleId).ToList();                                          //获取到角色列表中的角色ID
            var MenuList = await _roleRightAssigRepository.GetAllListAsync(x => RoleIds.Contains(x.RoleId)); //根据角色Id获取菜单列表

            var            MenuIds  = MenuList.Select(x => x.MenuId).ToList();                               //获取角色权限中的菜单ID
            List <SysMenu> baselist = new List <SysMenu>();

            if (await _redisCacheManager.Get(Appsettings.app(new string[] { "CacheOptions", "Menukey" })))                          //判断菜单缓存是否存在,如果存在则取缓存不存在则取数据库
            {
                baselist = await _redisCacheManager.GetList <SysMenu>(Appsettings.app(new string[] { "CacheOptions", "Menukey" })); //.Where(x=>MenuIds.Contains(x.Id)).ToList();

                baselist = baselist.Where(x => MenuIds.Contains(x.Id)).ToList();
            }
            else
            {
                await RestMenuCache();

                baselist = await _redisCacheManager.GetList <SysMenu>(Appsettings.app(new string[] { "CacheOptions", "Menukey" }));

                baselist = baselist.Where(x => MenuIds.Contains(x.Id)).ToList();
            }
            if (!baselist.Any())
            {
                baselist = await _menuRepositoty.GetAllListAsync(x => MenuIds.Contains(x.Id));//根据菜单ID获取菜单列表 x=>MenuIds.Contains(x.Id)
            }
            var btnlist = await _buttonRepositoty.GetAllListAsync(x => x.IsShow == true && x.IsDrop == false);

            RouterBar routerbar = new RouterBar()
            {
                Id       = Guid.Empty,
                name     = "根节点",
                order    = 0,
                path     = "",
                meta     = new NavigationBarMeta(),
                ParentId = Guid.Empty,
            };
            //定义一个树形列表
            var routerbarTreeall = baselist.Where(x => x.IsDrop == false).Select(s => new RouterBar
            {
                Id       = s.Id,
                name     = s.Name,
                ParentId = s.ParentId,
                iconCls  = s.Icon,
                order    = s.Sort,
                path     = s.UrlAddress,
                meta     = new NavigationBarMeta
                {
                    requireAuth = true,
                    title       = s.Name,
                }
            }).ToList();

            try
            {
                //递归形成前端路由器格式的树形菜单
                CreateMenuTree(routerbarTreeall, routerbar, btnlist, MenuList);
                return(routerbar);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }