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);
         }
     }
 }
Exemple #2
0
        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
                                });
                            }
                        }
                    }
                }
            }
        }