Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        /// <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);
                }
            }
        }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
 /// <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);
 }
Esempio n. 7
0
        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;
            }
        }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
        /// <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));
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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();
        }