/// <summary> /// 更新用户权限缓存 /// </summary> /// <param name="userId"><用户Id/param> public static void UpdateUserPermissionCache(string userId) { string cacheKey = BuildCacheKey(userId); List <string> permissions = new List <string>(); BaseBusiness <Base_PermissionUser> _db = new BaseBusiness <Base_PermissionUser>(); var userPermissions = _db.GetIQueryable().Where(x => x.UserId == userId).Select(x => x.PermissionValue).ToList(); var theUser = _db.Service.GetIQueryable <Base_User>().Where(x => x.UserId == userId).FirstOrDefault(); var roleIdList = Base_UserBusiness.GetUserRoleIds(userId); var rolePermissions = _db.Service.GetIQueryable <Base_PermissionRole>().Where(x => roleIdList.Contains(x.RoleId)).GroupBy(x => x.PermissionValue).Select(x => x.Key).ToList(); var existsPermissions = userPermissions.Concat(rolePermissions).Distinct(); permissions = existsPermissions.ToList(); CacheHelper.Cache.SetCache(cacheKey, permissions); }
/// <summary> /// 根据UserID获取用户所有权限信息 /// </summary> /// <param name="userId">用户Id</param> /// <returns></returns> public Base_User GetCurrentUserInfo(string userId) { var param = new List <DbParameter> { new SqlParameter("@userId", userId) }; Base_User data = null; string sqlStr = @"SELECT * FROM dbo.Base_User WHERE UserId=@userId; SELECT a.* FROM dbo.Base_SysRole a INNER JOIN dbo.Base_UserRoleMap b ON a.RoleId=b.RoleId WHERE b.UserId=@userId; SELECT DISTINCT(a.Id),a.* FROM dbo.Base_SysNavigation a INNER JOIN dbo.Base_SysRoleNavMap b ON a.Id=b.NavId INNER JOIN dbo.Base_SysRole c ON b.RoleId=c.RoleId INNER JOIN dbo.Base_UserRoleMap d ON c.RoleId=d.RoleId WHERE d.UserId=@userId; SELECT DISTINCT(a.Id),a.* FROM dbo.Base_SysButton a INNER JOIN dbo.Base_SysRoleButtonMap b ON a.Id=b.BtnId INNER JOIN dbo.Base_SysRole c ON b.RoleId=c.RoleId INNER JOIN dbo.Base_UserRoleMap d ON c.RoleId=d.RoleId WHERE d.UserId=@userId; "; var dataSet = GetDataSetWithSql(sqlStr, param); if (dataSet.Tables.Count != 0) { //dataSet[0] 用户信息 if (dataSet.Tables[0] != null) { data = dataSet.Tables[0].ToList <Base_User>().FirstOrDefault(); } //dataSet[1] 角色集合 if (dataSet.Tables[1] != null && data != null) { data.Base_SysRoles = dataSet.Tables[1].ToList <Base_SysRole>(); } //dataSet[2] 菜单集合 if (dataSet.Tables[2] != null && data != null) { var sysnavs = dataSet.Tables[2].ToList <Base_SysNavigation>(); sysnavs = sysnavs.OrderBy(c => c.SortNum).ToList(); var topNav = sysnavs.Where(c => string.IsNullOrEmpty(c.ParentId)).ToList(); data.Base_SysNavigations = Base_UserBusiness.navigationDtos(sysnavs, topNav); } //dataSet[3] 按钮集合 if (dataSet.Tables[3] != null && data != null) { data.Base_SysButtons = dataSet.Tables[3].ToList <Base_SysButton>(); } } return(data); }
/// <summary> /// 获取所有数据列表 /// </summary> /// <returns></returns> public List <Base_SysNavigationDto> GetMenuTrees() { var q = GetIQueryable().OrderBy(c => c.SortNum).ToList(); var topNav = q.Where(c => string.IsNullOrEmpty(c.ParentId)).ToList(); var treeNav = Base_UserBusiness.navigationDtos(q, topNav); Base_SysNavigationDto sysnav = new Base_SysNavigationDto { id = topNavId, label = "顶级菜单", children = treeNav }; var listData = new List <Base_SysNavigationDto>(); listData.Add(sysnav); return(listData); }
/// <summary> /// 获取用户权限模块 /// </summary> /// <param name="userId"></param> /// <returns></returns> public static List <PermissionModule> GetUserPermissionModules(string userId) { var userInfo = Base_UserBusiness.GetTheUser(userId); List <string> hasPermissions = new List <string>(); if (userInfo.RoleType.HasFlag(RoleType.超级管理员)) { hasPermissions = _allPermissionValues.DeepClone(); } else { hasPermissions = GetUserPermissionValues(userId); } return(GetPermissionModules(hasPermissions)); }