/// <summary> /// 根据角色id获取所有菜单按钮 /// </summary> /// <param name="Id"></param> /// <returns></returns> public List <MenuButtonTree> GetAllMenuButtonByRoleId(Guid Id) { var list = new List <MenuButtonTree>(); var data = dal.GetAllMenuButtonByRoleId(Id); var distinctMenuData = data.GroupBy(d => d.MenuId).Select(d => new DistinctMenu { Id = d.Key, Name = d.Max(x => x.MenuName), ParentId = d.Max(x => x.ParentId) }).ToList(); var topData = data.Where(d => d.ParentId == null); foreach (var item in topData) { string stateStr = "closed"; var menuButton = new MenuButtonTree(); var attributes = new Attributess(); menuButton.id = item.MenuId; menuButton.state = stateStr; menuButton.text = item.MenuName; attributes.buttonid = item.ButtonId; attributes.menuid = item.MenuId; menuButton.attributes = attributes; menuButton.children = RecursionMenuButton(data, distinctMenuData, item.MenuId, Id, stateStr); list.Add(menuButton); } return(list); }
private List <MenuTree> RecursionMenuButton(List <MenuButtonList> data, List <DistinctMenu> menuData, Guid menuId, Guid roleId, string stateStr) { var list = new List <MenuTree>(); var childMenu = menuData.Where(d => d.ParentId == menuId); foreach (var menu in childMenu) { var buttonList = new List <ButtonTree>(); var menuButton = new MenuTree(); var attributes = new Attributess(); menuButton.id = menu.Id; menuButton.state = stateStr; menuButton.text = menu.Name; attributes.buttonid = null; attributes.menuid = menu.Id; menuButton.attributes = attributes; var buttonTree = data.Where(d => d.MenuId == menu.Id && d.ButtonId.HasValue); if (buttonTree.Any()) { foreach (var button in buttonTree) { var buttons = new ButtonTree(); var buttonAttribute = new Attributess(); buttons.id = roleId; buttons.text = button.ButtonName; buttons.@checked = button.Checked; buttons.attributes = buttonAttribute; buttonAttribute.buttonid = button.ButtonId; buttonAttribute.menuid = button.MenuId; buttonList.Add(buttons); } } menuButton.children = buttonList; list.Add(menuButton); } return(list); }