public static List <MenuTreeModel> GetChildMenu(int userID, int ParentId) { AchieveDBEntities myDbContext = new AchieveDBEntities(); List <MenuTreeModel> listTemp = new List <MenuTreeModel>(); var query = from ur in myDbContext.tbUserRole join rmb in myDbContext.tbRoleMenu on ur.RoleId equals rmb.RoleId join m in myDbContext.tbMenu on rmb.MenuId equals m.Id where ur.UserId == userID && m.ParentId == ParentId orderby m.ParentId, m.Sort select m; if (query != null) { foreach (var tp in query) { MenuTreeModel m = new MenuTreeModel(); m.Id = tp.Id.ToString(); m.Icon = tp.Icon; m.MenuName = tp.Name; m.ParentId = tp.ParentId.ToString(); m.Url = tp.LinkAddress; m.Node = GetChildMenu(userID, tp.Id); listTemp.Add(m); } } return(listTemp); }
/// <summary> /// 根据权限ID获取菜单 /// </summary> /// <param name="id">权限ID</param> /// <returns></returns> public List <MenuTreeModel> GetMenuTreeByRoleId(int id) { List <MenuTreeModel> menuTreeList = new List <MenuTreeModel>(); List <Menu> allFirstMenus = GetFirstMenu(); int[] allFirstMenuIdArray = new int[allFirstMenus.Count]; int i = 0; //将菜单集合里的菜单ID转换成数组 foreach (var firstMenu in allFirstMenus) { allFirstMenuIdArray[i] = firstMenu.Id; i++; } int[] allMenuIdArray = _roleMenuService.GetMenuArray(id); //通过求交集获取需要的一级菜单id数组 int[] firstMenuIdArray = allMenuIdArray.Intersect(allFirstMenuIdArray).ToArray(); //通过求差集获取需要的二级菜单id数组 int[] secondMenuIdArray = allMenuIdArray.Except(firstMenuIdArray).ToArray(); //获取允许展示的二级菜单集合 List <Menu> secondMenuList = new List <Menu>(); foreach (var i1 in secondMenuIdArray) { Menu tempMenu = _repository.Find(c => c.Id == i1 && c.State == 1); if (tempMenu != null) { secondMenuList.Add(tempMenu); } } foreach (var firstMenuId in firstMenuIdArray) { Menu tempMenu = _repository.Find(c => c.Id == firstMenuId && c.State == 1); if (tempMenu != null) { List <Menu> tempSecondMenuList = new List <Menu>(); foreach (var menu in secondMenuList) { if (menu.PId == firstMenuId) { tempSecondMenuList.Add(menu); } } MenuTreeModel tempMenuTreeModel = new MenuTreeModel() { Id = tempMenu.Id, Icon = tempMenu.Icon, Name = tempMenu.Name, Url = tempMenu.Url, PId = tempMenu.PId, State = tempMenu.State, MenuList = tempSecondMenuList }; menuTreeList.Add(tempMenuTreeModel); } } return(menuTreeList); }
public static string GetUserMenu(int userID, string token) { string str = string.Empty; try { IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; tbUser temp = new tbUser(); AchieveDBEntities myDbContext = new AchieveDBEntities(); int count = myDbContext.tbUserToken.Where(p => p.UserId == userID && p.Token == token).Count <tbUserToken>(); if (count <= 0) { throw new Exception("帐号异常,请退出系统!"); } List <tbUser> templist = myDbContext.tbUser.Where(p => p.ID == userID).ToList(); if (templist != null && templist.Count > 0) { var query = from ur in myDbContext.tbUserRole join rmb in myDbContext.tbRoleMenu on ur.RoleId equals rmb.RoleId join m in myDbContext.tbMenu on rmb.MenuId equals m.Id where ur.UserId == userID && m.ParentId == 0 orderby m.ParentId, m.Sort select m; List <MenuTreeModel> list = new List <MenuTreeModel>(); if (query != null) { foreach (var tp in query) { MenuTreeModel m = new MenuTreeModel(); m.Id = tp.Id.ToString(); m.Icon = tp.Icon; m.MenuName = tp.Name; m.ParentId = tp.ParentId.ToString(); m.Url = tp.LinkAddress; m.Node = GetChildMenu(userID, tp.Id); list.Add(m); } } str = JsonConvert.SerializeObject(list, Formatting.Indented, timeFormat); str = ResponseHelper.ResponseMsg("1", "取数成功", str); } else { str = JsonConvert.SerializeObject(temp, Formatting.Indented, timeFormat); str = ResponseHelper.ResponseMsg("-1", "用户ID不存在", str); } } catch (Exception ex) { str = ResponseHelper.ResponseMsg("-1", ex.Message, ""); } return(str); }
/// <summary> /// 递归,无限树 /// </summary> /// <param name="toSource"></param> /// <param name="parent_id"></param> /// <param name="foSource"></param> private void GetMenuTreeJson(MenuTreeModel toSource, string parent_id, List <MenuTreeModel> foSource) { var list = foSource.FindAll(p => p.parent_id == parent_id); if (list.Count > 0) { toSource.children = new List <MenuTreeModel>(); foreach (var item in list) { GetMenuTreeJson(item, item.id, foSource); toSource.children.Add(item); } } }
private bool CheckRootNode(List <MenuTreeModel> menuTrees, MenuTreeModel currMenu) { foreach (var item in menuTrees) { if (item.Id == currMenu.Id && item.ParentID == currMenu.ParentID) { item.Children.AddRange(currMenu.Children); return(true); } if (item.Children != null && item.Children.Count > 0) { return(CheckRootNode(menuTrees, currMenu)); } } return(false); }
/// <summary> /// 判断节点是否已经存在,如果存在则把当前菜单添加到响应节点,如果不存在返回false /// </summary> /// <param name="menuTrees"></param> /// <param name="currMenu"></param> /// <returns></returns> private bool MenuExits(List <MenuTreeModel> menuTrees, MenuTreeModel currMenu) { foreach (var item in menuTrees) { if (item.Id == currMenu.ParentID) { item.Children.Add(currMenu); return(true); } if (item.Children != null && item.Children.Count > 0) { return(MenuExits(item.Children, currMenu)); } } return(false); }
private void getSonMenus(MenuTreeModel model) { var list = _repository.FindList(a => a.Fid == model.Id); if (list != null && list.Count() > 0) { var mapperList = _mapper.Map <IEnumerable <MenuEntity>, IEnumerable <MenuTreeModel> >(list); foreach (var sonmodel in mapperList) { getSonMenus(sonmodel); } model.children = mapperList; } }
/// <summary> /// 向上获取树 /// </summary> /// <param name="menus"></param> /// <param name="menuTree"></param> /// <param name="permission"></param> /// <returns></returns> private MenuTreeModel GetTree(List <TPMMenusDbModel> menus, MenuTreeModel menuTree, TTenantPermissionsModel permission) { var parent = menus.Where(p => p.Id == menuTree.ParentID).FirstOrDefault(); if (parent == null) { return(null); } var parentMenu = GetMenuTreeModel(parent); parentMenu.Children.Add(menuTree); if (parentMenu.ParentID != -1) { return(GetTree(menus, parentMenu, permission)); } return(parentMenu); }
/// <summary> /// Menu数据源 /// </summary> /// <returns></returns> public ActionResult MenuConfig_Read() { IEnumerable <Menu> topMenu = MenuRepository.FindAll().OrderBy(m => m.OrderNum).Where(m => m.FMenuID == 0); List <MenuTreeModel> result = new List <MenuTreeModel>(); foreach (Menu Menu in topMenu) { MenuTreeModel toptree = new MenuTreeModel(); toptree.MenuID = Menu.MenuID.ToString(); toptree.MenuName = Menu.MenuName; toptree.MenuURL = Menu.MenuURL; toptree.OrderNum = Menu.OrderNum; toptree.children = addchild(Menu.MenuID); result.Add(toptree); } return(Json(result)); }
public List <MenuTreeModel> GetMenuTree() { List <MenuTreeModel> menuTreeList = new List <MenuTreeModel>(); List <Menu> firstMenus = GetFirstMenu(); foreach (var firstMenu in firstMenus) { List <Menu> secondMenus = _repository.Select(c => c.PId == firstMenu.Id); MenuTreeModel tempMenuTreeModel = new MenuTreeModel() { Id = firstMenu.Id, Name = firstMenu.Name, Url = firstMenu.Url, Icon = firstMenu.Icon, PId = firstMenu.PId, State = firstMenu.State, MenuList = secondMenus }; menuTreeList.Add(tempMenuTreeModel); } return(menuTreeList); }
private List <MenuTreeModel> GetMenuTree(List <TPMMenusDbModel> aimData, Dictionary <int, string> menuButtons, List <TButtonsModel> buttonsModels, int pid) { List <MenuTreeModel> tree = new List <MenuTreeModel>(); var children = aimData.Where(p => p.ParentID == pid).ToList(); if (children.Count > 0) { foreach (var item in aimData.Where(p => p.ParentID == pid).OrderBy(p => p.Seq)) { MenuTreeModel node = new MenuTreeModel(); node.Id = item.Id; node.IsMenu = item.IsMenu; node.MenuAnotherName = item.MenuAnotherName; node.MenuDesc = item.MenuDesc; node.MenuIcon = item.MenuIcon; node.MenuName = item.MenuName; node.MenuPath = item.MenuPath; node.ParentID = item.ParentID; node.Seq = item.Seq; node.Status = item.Status; if (menuButtons.Keys.Any(p => p == item.Id)) { if (!string.IsNullOrEmpty(menuButtons[item.Id])) { var ids = menuButtons[item.Id].Split(",").Select(p => Convert.ToInt32(p)).ToList(); node.Buttons = buttonsModels.Where(p => ids.Contains(p.Id)).ToList(); } } node.Children = GetMenuTree(aimData, menuButtons, buttonsModels, item.Id); tree.Add(node); } } return(tree); }
public void Bind(IEditorService service, IWebLayout wl, IMenu menu) { _edsvc = service; Bind(_edsvc); _wl = wl; _wl.CommandSet.CustomCommandAdded += OnCustomCommandAdded; _wl.CommandSet.CustomCommandRemoved += OnCustomCommandRemoved; _rootMenu = menu; this.Model = _model = new MenuTreeModel(menu, wl); InitBuiltinCommandMenu(); InitCustomCommandMenu(); }