Exemplo n.º 1
0
        /// <summary>
        /// 菜单主页显示
        /// </summary>
        /// <returns></returns>
        public ActionResult MainPage()
        {
            int alarmCount = warnlogSer.QueryWhere(w => w.Status.Equals("0")).GroupBy(g => g.WarnType).Count();

            ViewBag.count = alarmCount;
            // 通过Session获得登录后的用户的ID
            SB_User users = (SB_User)Session[Keys.userInfo];

            ViewBag.userInfo = users.Account;
            ViewBag.userId   = users.ID;
            // 通过用户的ID查询用户角色表
            var userRolesDistinct = sysroleuserSer.QueryWhere(s => s.UserID == users.ID).Distinct();
            //已获得角色集合,通过角色id去获得角色权限表,多个角色的话,权限可能有重复
            //获取系统校色页面表
            var rolePages = sysrolepageSer.QueryWhere(x => true);
            //获取页面表
            var pages = pageSer.QueryWhere(x => true).OrderBy(x => x.SortN).ToList();
            //通过系统角色ID查询出该角色页面
            var userPages = userRolesDistinct.Join(rolePages, x => x.SysRoleID, y => y.SysRoleID, (x, y) =>
                                                   new
            {
                x.UserID,
                x.SysRoleID,
                y.PageID
            }).Distinct();
            //获取该角色所有页面
            var query = pages.Join(userPages, x => x.ID, y => y.PageID, (x, y) => x).GroupBy(g => g.ID).Select(s => s.FirstOrDefault()).ToList();

            return(View(query));
        }