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); }
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, }); }