private static void GetChildPageAndAllFunsBySys_PageUrlEntity_Ex(Sys_PageUrlEntity_Ex spe, List <int> allChildPageIds, List <int> allFunIds) { //添加当前页面 allChildPageIds.Add(spe.PageId); //添加页面中的功能 if (spe.Sys_PageUrl.PageFuns != null && spe.Sys_PageUrl.PageFuns.Any()) { allFunIds.AddRange(spe.Sys_PageUrl.PageFuns.Select(a => a.FunId)); } if (spe.ChirldMenuPageUrls != null && spe.ChirldMenuPageUrls.Any()) { foreach (Sys_PageUrlEntity _s in spe.ChirldMenuPageUrls) { GetChildPageAndAllFunsBySys_PageUrlEntity_Ex( Dic_ParentPageId_ChirldPageMenus[_s.PageId], allChildPageIds, allFunIds); } } }
private void AddMenu(Sys_PageUrlEntity_Ex entity, Dictionary <int, Sys_PageUrlEntity_Ex> dic, List <MenuViewModel> menuList) { menuList.Add(new MenuViewModel() { PageId = entity.PageId, PageUrl = entity.Sys_PageUrl.PageUrl, ParentId = entity.Sys_PageUrl.ParentMenuPageId, PageSortNum = entity.Sys_PageUrl.MenuSortNum, PageTitle = entity.Sys_PageUrl.PageTitle, Funs = entity.Sys_PageUrl.PageFuns, HasChirldPageUrl = (entity.ChirldMenuPageUrls != null && entity.ChirldMenuPageUrls.Count > 0), IsFunPage = entity.Sys_PageUrl.IsFunPageStatus }); foreach (Sys_PageUrlEntity _entity in entity.ChirldMenuPageUrls.OrderBy(a => a.MenuSortNum).ToList()) { //如果该页面是父级页面,就继续递归添加子级 if (dic.ContainsKey(_entity.PageId)) { AddMenu(dic[_entity.PageId], dic, menuList); } else { //如果不是父级页面,添加本身 menuList.Add(new MenuViewModel() { PageId = _entity.PageId, PageUrl = _entity.PageUrl, ParentId = _entity.ParentMenuPageId, PageSortNum = _entity.MenuSortNum, PageTitle = _entity.PageTitle, Funs = _entity.PageFuns, HasChirldPageUrl = false, IsFunPage = _entity.IsFunPageStatus }); } } }
private void ShowMenuAndFuns(Sys_PageUrlEntity_Ex entity, List <TreeJsonData> treeDataList, Dictionary <int, int[]> dic_RolePageFuns) { MenuViewModel vm = new MenuViewModel() { PageId = entity.PageId, PageUrl = entity.Sys_PageUrl.PageUrl, ParentId = entity.Sys_PageUrl.ParentMenuPageId, PageSortNum = entity.Sys_PageUrl.MenuSortNum, PageTitle = entity.Sys_PageUrl.PageTitle, Funs = entity.Sys_PageUrl.PageFuns, HasChirldPageUrl = (entity.ChirldMenuPageUrls != null && entity.ChirldMenuPageUrls.Count > 0), IsFunPage = entity.Sys_PageUrl.IsFunPageStatus }; //先添加菜单,注意:菜单的FunId是当前页面的FunId,也就是如果当前页面是功能页面,该值才有效,值为FunId treeDataList.Add(new TreeJsonData { Id = vm.PageId.ToString(), FunId = PageMenuAndFunPool.GetFunIdByFunPage(vm.PageId).ToString(), PId = vm.ParentId.ToString(), Name = vm.PageTitle, Checked = dic_RolePageFuns != null && dic_RolePageFuns.ContainsKey(vm.PageId), IconSkin = vm.IsFunPage ? "fun" : ((vm.HasFuns || (!vm.HasChirldPageUrl)) ? "page" : "folder"), IsFun = vm.IsFunPage, IsFunPage = vm.IsFunPage }); if (vm.Funs != null && vm.Funs.Any()) { foreach (var f in vm.Funs) { if (!f.IsFunMenuStatus) { treeDataList.Add(new TreeJsonData { Id = "f_" + f.FunId, FunId = f.FunId.ToString(), PId = f.PageId.ToString(), Name = f.FunName, Checked = dic_RolePageFuns != null && dic_RolePageFuns.ContainsKey(f.PageId) && dic_RolePageFuns[f.PageId].Contains(f.FunId), IconSkin = "fun", IsFun = true, IsFunPage = false }); } } } foreach (Sys_PageUrlEntity _entity in entity.ChirldMenuPageUrls.OrderBy(a => a.MenuSortNum).ToList()) { //如果该页面是父级页面,就继续递归添加子级 if (DataServices.PageMenuFun.PageMenuAndFunPool.Dic_ParentPageId_ChirldPageMenus.ContainsKey(_entity.PageId)) { ShowMenuAndFuns(DataServices.PageMenuFun.PageMenuAndFunPool.Dic_ParentPageId_ChirldPageMenus[_entity.PageId], treeDataList, dic_RolePageFuns); } else { //如果不是父级页面,添加本身 MenuViewModel vm2 = new MenuViewModel() { PageId = _entity.PageId, PageUrl = _entity.PageUrl, ParentId = _entity.ParentMenuPageId, PageSortNum = _entity.MenuSortNum, PageTitle = _entity.PageTitle, Funs = _entity.PageFuns, HasChirldPageUrl = false, IsFunPage = _entity.IsFunPageStatus }; treeDataList.Add(new TreeJsonData { Id = vm2.PageId.ToString(), FunId = PageMenuAndFunPool.GetFunIdByFunPage(vm2.PageId).ToString(), PId = vm2.ParentId.ToString(), Name = vm2.PageTitle, Checked = dic_RolePageFuns != null && dic_RolePageFuns.ContainsKey(vm2.PageId), IconSkin = vm2.IsFunPage ? "fun" : ((vm2.HasFuns || (!vm2.HasChirldPageUrl)) ? "page" : "folder"), IsFun = vm2.IsFunPage, IsFunPage = vm2.IsFunPage }); if (vm2.Funs != null && vm2.Funs.Any()) { foreach (var f in vm2.Funs) { if (!f.IsFunMenuStatus) { treeDataList.Add(new TreeJsonData { Id = "f_" + f.FunId, FunId = f.FunId.ToString(), PId = f.PageId.ToString(), Name = f.FunName, Checked = dic_RolePageFuns != null && dic_RolePageFuns.ContainsKey(f.PageId) && dic_RolePageFuns[f.PageId].Contains(f.FunId), IconSkin = "fun", IsFun = true, IsFunPage = false }); } } } } } }