/// <summary> /// 获取菜单列表,带有权限标示 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<TreeModel> GetHaveRightMenu(RoleMenuQuery queryRoleMenu) { if (queryRoleMenu.GroupID == 2) { MenuQuery query = new MenuQuery(); query.JournalID = queryRoleMenu.JournalID; query.GroupID = 2; query.Status = 1; return GetTreeNodeList(query); } # region 找到内容菜单,添加栏目列表 Func<IList<TreeModel>> funcGetSiteChanneNodes = () => { IList<TreeModel> channelTreeList = new List<TreeModel>(); SiteChannelQuery channelQuery = new SiteChannelQuery(); channelQuery.JournalID = queryRoleMenu.JournalID; channelQuery.Status = 1; SiteConfigFacadeAPIService siteConfigAPIService = new SiteConfigFacadeAPIService(); channelTreeList = siteConfigAPIService.GetSiteChannelTreeList(channelQuery,true); TreeModel root = channelTreeList.Single(p => p.Id == 0); return root.children; }; # endregion IList<TreeModel> listResult = new List<TreeModel>(); HttpClientHelper clientHelper = new HttpClientHelper(); // 给指定的作者设置了例外的菜单 IDictionary<long, string> dictExceptionRightMenu = new Dictionary<long, string>(); if (queryRoleMenu.AuthorID != null) { AuthorMenuRightExceptionEntity authorExecEntity = new AuthorMenuRightExceptionEntity(); authorExecEntity.AuthorID = queryRoleMenu.AuthorID.Value; authorExecEntity.JournalID = queryRoleMenu.JournalID; dictExceptionRightMenu = clientHelper.PostAuth<IDictionary<long, string>, AuthorMenuRightExceptionEntity>(GetAPIUrl(APIConstant.SYSGETAUTHOREXCEPTIONRIGHTMENU), authorExecEntity); } IList<MenuEntity> listHaveRightMenuList = clientHelper.Post<IList<MenuEntity>, RoleMenuQuery>(GetAPIUrl(APIConstant.SYSGETHAVERIGHTMENULIST), queryRoleMenu); if (listHaveRightMenuList != null) { IList<MenuEntity> listRoot = listHaveRightMenuList.Where(item => item.PMenuID == 0).ToList<MenuEntity>(); TreeModel treeNode = null; foreach (MenuEntity item in listRoot) { if (!dictExceptionRightMenu.ContainsKey(item.MenuID)) { bool first = true; treeNode = new TreeModel(); treeNode.key = item.MenuID.ToString(); treeNode.text = item.MenuName; treeNode.url = SiteConfig.RootPath + item.MenuUrl; treeNode.icon = SiteConfig.RootPath + item.IconUrl; treeNode.isexpand = queryRoleMenu.IsExpend; IList<MenuEntity> listChild = listHaveRightMenuList.Where(p => p.PMenuID == item.MenuID).ToList<MenuEntity>(); if (listChild != null) { treeNode.isexpand = (first != queryRoleMenu.IsExpend) && first ? first : queryRoleMenu.IsExpend; // 二级 foreach (MenuEntity itemChild in listChild) { if (!dictExceptionRightMenu.ContainsKey(itemChild.MenuID)) { TreeModel treeChildNode = new TreeModel(); treeChildNode.key = itemChild.MenuID.ToString(); treeChildNode.text = itemChild.MenuName; treeChildNode.url = SiteConfig.RootPath + itemChild.MenuUrl; treeChildNode.icon = SiteConfig.RootPath + itemChild.IconUrl; treeChildNode.isexpand = queryRoleMenu.IsExpend; // 如果是网站内容管理节点,则载入站点栏目设置 if (itemChild.IsContentMenu) { treeChildNode.children = funcGetSiteChanneNodes(); treeNode.children.Add(treeChildNode); } else { treeNode.children.Add(treeChildNode); // 三级 IList<MenuEntity> lastListChild = listHaveRightMenuList.Where(p => p.PMenuID == itemChild.MenuID).ToList<MenuEntity>(); foreach (MenuEntity lastChild in lastListChild) { if (!dictExceptionRightMenu.ContainsKey(lastChild.MenuID)) { TreeModel treeLastNode = new TreeModel(); treeLastNode.key = lastChild.MenuID.ToString(); treeLastNode.text = lastChild.MenuName; treeLastNode.url = SiteConfig.RootPath + lastChild.MenuUrl; treeLastNode.icon = SiteConfig.RootPath + lastChild.IconUrl; treeLastNode.isexpand = queryRoleMenu.IsExpend; treeChildNode.children.Add(treeLastNode); } } } } } first = false; } listResult.Add(treeNode); } } } return listResult; }