Пример #1
0
        private List <LayUiMenuDto> GetSubMenuAsync(List <Menu> parentMenus, List <Menu> allMenu)
        {
            var menuDtoList = new List <LayUiMenuDto>();

            foreach (var menu in parentMenus)
            {
                var menuDto = new LayUiMenuDto
                {
                    Name  = menu.MenuName,
                    Title = menu.MenuName,
                    Jump  = menu.MenuUri,
                    Icon  = menu.Icon,
                };
                var subMenus    = allMenu.Where(c => c.ParentId == menu.Id).ToList();
                var subMenuDtos = subMenus.Select(
                    c => new LayUiMenuDto {
                    Name  = c.MenuName,
                    Title = c.MenuName,
                    Jump  = c.MenuUri,
                    Icon  = c.Icon,
                }).ToList();
                menuDto.List = subMenuDtos;
                GetSubMenuAsync(subMenus, allMenu);
            }
            return(menuDtoList);
        }
Пример #2
0
        public async Task <MsMenuJsonDto> QueryMsMenuAsync(Guid userId)
        {
            var user = await _identityServices.GetAsync(userId);

            if (user == null)
            {
                return(new MsMenuJsonDto());
            }
            var menuList = new List <Menu>();

            //获取系统菜单
            var msMenus = await _menuRepository.QueryMsMenuAsync(user.MsId == null?Guid.Empty : user.MsId.Value);

            //获取用户角色
            var userRoles = await _roleRepository.QueryRoleAsync(userId);

            foreach (var item in userRoles)
            {
                //获取角色菜单
                var menus = msMenus.Where(c => c.Id == item.Id);
                menuList = menuList.Intersect(menus.ToList(), new MenuComparer()).ToList();
            }

            var parentMenus = menuList.Where(c => c.ParentId == null).ToList();
            var menuDtos    = new List <LayUiMenuDto>();

            foreach (var menu in parentMenus)
            {
                var menuDto = new LayUiMenuDto
                {
                    Name  = menu.MenuName,
                    Title = menu.MenuName,
                    Jump  = menu.MenuUri,
                    Icon  = menu.Icon,
                    List  = GetSubMenuAsync(parentMenus, menuList),
                };
                menuDtos.Add(menuDto);
            }
            return(new MsMenuJsonDto
            {
                Code = 0,
                Msg = "",
                Data = menuDtos,
            });
        }