/// <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)); }