/// <summary> /// 获取菜单列表,带有权限标示 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<TreeModel> GetHaveRightMenuAjaxByRole(RoleMenuQuery queryRoleMenu) { 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); IList<TreeModel> listResult = new List<TreeModel>(); if (listHaveRightMenuList != null) { IList<MenuEntity> listRoot = listHaveRightMenuList.Where(item => item.PMenuID == 0).ToList<MenuEntity>(); TreeModel treeNode = null; foreach (MenuEntity item in listRoot) { 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; treeNode.ischecked = dictExceptionRightMenu.ContainsKey(item.MenuID) ? false : true; IList<MenuEntity> listChild = listHaveRightMenuList.Where(p => p.PMenuID == item.MenuID).ToList<MenuEntity>(); if (listChild != null) { // 二级 foreach (MenuEntity itemChild in listChild) { 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; treeChildNode.ischecked = dictExceptionRightMenu.ContainsKey(itemChild.MenuID) ? false : true; treeNode.children.Add(treeChildNode); // 三级 IList<MenuEntity> lastListChild = listHaveRightMenuList.Where(p => p.PMenuID == itemChild.MenuID).ToList<MenuEntity>(); foreach (MenuEntity lastChild in lastListChild) { 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; treeLastNode.ischecked = dictExceptionRightMenu.ContainsKey(lastChild.MenuID) ? false : true; treeChildNode.children.Add(treeLastNode); } } } listResult.Add(treeNode); } } return listResult; }
/// <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; }
/// <summary> /// 处理子级 /// </summary> /// <param name="model"></param> /// <param name="list"></param> private void GetJournalChannelTreeList(TreeModel treeNode, IList<JournalChannelEntity> list) { var child = list.Where(p => p.PChannelID == treeNode.Id); if (child.Count() == 0) { treeNode.isexpand = false; treeNode.children = null; return; } TreeModel node = null; foreach (var item in child) { node = new TreeModel(); node.Id = item.JChannelID; node.text = item.ChannelName; node.url = string.Empty; node.icon = ""; node.isexpand = true; GetJournalChannelTreeList(node, list); treeNode.children.Add(node); } }
/// <summary> /// 获取期刊栏目数据 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<TreeModel> GetJournalChannelTreeList(JournalChannelQuery query) { var list = GetJournalChannelList(query); TreeModel treeNode = new TreeModel(); treeNode.Id = 0; treeNode.text = "期刊栏目"; treeNode.url = ""; treeNode.icon = ""; treeNode.isexpand = true; if (list != null && list.Count > 0) { var first = list.Where(p => p.PChannelID == 0); TreeModel node = null; foreach (var item in first) { node = new TreeModel(); node.Id = item.JChannelID; node.text = item.ChannelName; node.url = string.Empty; node.icon = ""; node.isexpand = true; GetJournalChannelTreeList(node, list); treeNode.children.Add(node); } } IList<TreeModel> resultList = new List<TreeModel>(); resultList.Add(treeNode); return resultList; }
/// <summary> /// 获取栏目属性数据 /// </summary> /// <param name="query"></param> /// <param name="isGetSysFun">是否获取系统功能菜单</param> /// <returns></returns> public IList<TreeModel> GetSiteChannelTreeList(SiteChannelQuery query, bool isGetSysFun) { var list = GetSiteChannelList(query); TreeModel treeNode = new TreeModel(); treeNode.Id = 0; treeNode.text = "栏目"; treeNode.url = ""; treeNode.icon = ""; treeNode.isexpand = true; if (list != null && list.Count > 0) { var first = list.Where(p => p.PChannelID == 0); TreeModel node = null; foreach (var item in first) { if (isGetSysFun) { if (item.ContentType > 0 && (item.ContentType != (byte)EnumContentType.SystemFun)) { node = new TreeModel(); node.Id = item.ChannelID; node.text = item.Keywords; node.url = GetChannelContentTypeUrl(item.ContentType, item.ChannelID); node.icon = ""; node.isexpand = true; GetSiteChannelTreeList(node, list); treeNode.children.Add(node); } } else { if (item.ContentType > 0) { node = new TreeModel(); node.Id = item.ChannelID; node.text = item.Keywords; node.url = GetChannelContentTypeUrl(item.ContentType, item.ChannelID); node.icon = ""; node.isexpand = true; GetSiteChannelTreeList(node, list); treeNode.children.Add(node); } } } } IList<TreeModel> resultList = new List<TreeModel>(); resultList.Add(treeNode); return resultList; }
/// <summary> /// 处理子级 /// </summary> /// <param name="model"></param> /// <param name="list"></param> private void GetSiteChannelTreeList(TreeModel treeNode, IList<SiteChannelEntity> list) { var child = list.Where(p => p.PChannelID == treeNode.Id); if (child.Count() == 0) { treeNode.isexpand = false; treeNode.children = null; return; } TreeModel node = null; foreach (var item in child) { node = new TreeModel(); node.Id = item.ChannelID; node.text = item.Keywords; node.url = GetChannelContentTypeUrl(item.ContentType, item.ChannelID); node.icon = ""; node.isexpand = true; GetSiteChannelTreeList(node, list); treeNode.children.Add(node); } }