public List <PrivilegeDto> GetUrlPermissionItems(string userID, short[] roleIDs) { var sessionKey = "UrlPermission"; ICacheManager _sessionManager = IocObjectManager.GetInstance().Resolve <IHttpContextSessionManager>(); var result = _sessionManager.Get(sessionKey, 20, () => { return((from p in UseRepository.Table join u in _programRepository.Table on p.AccessValue equals u.ProgramID where p.AccessMaster == 1 && p.OperationID == 1 //&& ((p.PrivilegeMaster == 1 && p.PrivilegeValue == roleID.ToString()) || (p.PrivilegeMaster == 2 && p.PrivilegeValue == userID)) && p.OperationID == 1 select new PrivilegeDto { PrivilegeID = p.PrivilegeID, ValidFrom = p.ValidFrom, ValidUntil = p.ValidUntil, PrivilegeMaster = p.PrivilegeMaster, PrivilegeValue = p.PrivilegeValue, AccessMaster = p.AccessMaster, AccessValue = p.AccessValue, BranchMember = p.BranchMember, OperationID = p.OperationID, IsIdentity = p.IsIdentity, Url = u.Url }).Union( from p in UseRepository.Table join u in _programButtonRepository.Table on p.AccessValue equals u.ProgramButtonID where p.AccessMaster == 2 && p.OperationID == 1 //&& ((p.PrivilegeMaster == 1 && p.PrivilegeValue == roleID.ToString()) || (p.PrivilegeMaster == 2 && p.PrivilegeValue == userID)) && p.OperationID == 1 select new PrivilegeDto { PrivilegeID = p.PrivilegeID, ValidFrom = p.ValidFrom, ValidUntil = p.ValidUntil, PrivilegeMaster = p.PrivilegeMaster, PrivilegeValue = p.PrivilegeValue, AccessMaster = p.AccessMaster, AccessValue = p.AccessValue, BranchMember = p.BranchMember, OperationID = p.OperationID, IsIdentity = p.IsIdentity, Url = u.Url } ).ToList()); }, () => { return(_versionControlService.GetVersionFlag(sessionKey)); }); var item = result.Where(p => (p.PrivilegeMaster == 1 && roleIDs.Contains(short.Parse(p.PrivilegeValue))) || (p.PrivilegeMaster == 2 && p.PrivilegeValue == userID)); return(item != null?item.ToList() : null); }
/// 返回codeTable缓存数据 /// </summary> /// <param name="model"></param> /// <returns></returns> public List <CodeTableItemDto> GetCodeTable(CodeTableDto model) { var cacheKey = model.TableName; var strSql = "DECLARE @SQL NVARCHAR(2000) SELECT @SQL = SelectSql FROM tbCOM_CodeTable WHERE Name = @p0; "; if (!string.IsNullOrEmpty(model.Where)) { strSql += string.Format(" SELECT @SQL=N'SELECT * FROM ('+@SQL+N') AS temp WHERE {0}' ", model.Where); } strSql += " EXEC(@SQL) "; SqlParameter[] parameters = { new SqlParameter("@p0", model.TableName) }; Func <List <CodeTableItemDto> > loadFun = () => { var data = DbHelperSql.Query(DbHelperSql.DefaultQueryConn, strSql, parameters); return(data != null && data.Tables.Count > 0 ? Conversion.ConvertToList <CodeTableItemDto>(data.Tables[0]) : null); }; if (model.UseCache && string.IsNullOrEmpty(model.Where)) { ICacheManager cacheManager = IocObjectManager.GetInstance().Resolve <IHttpContextCacheManager>(); return(cacheManager.Get(cacheKey, 60, loadFun, () => { return _versionControlService.GetVersionFlag(cacheKey); })); } else { return(loadFun()); } }
/// 返回codeTable缓存数据 /// </summary> /// <param name="model"></param> /// <returns></returns> public List <CodeTableItemDto> GetCodeTable(CodeTableDto model) { var cacheKey = "CodeTable_" + model.TableName; var strSql = ""; List <SqlParameter> parameters = new List <SqlParameter>() { }; if (model.SqlParameters != null && model.SqlParameters.Count >= 0) { model.SqlParameters.ForEach(m => parameters.Add(m)); strSql = this.GetModel(m => m.TableName == model.TableName).SelectSql; if (!string.IsNullOrEmpty(model.Where)) { strSql = string.Format("SELECT * FROM ({0}) AS temp WHERE {1} {2}", strSql, model.Where, model.Order); } } else { strSql = "DECLARE @SQL NVARCHAR(2000) SELECT @SQL = Select_Sql FROM tbCOM_Code_Table WHERE Table_Name = @p1989; "; parameters.Add(new SqlParameter("@p1989", model.TableName)); if (!string.IsNullOrEmpty(model.Where)) { strSql += string.Format(" SELECT @SQL=N'SELECT * FROM ('+@SQL+N') AS temp WHERE {0}' " + model.Order, model.Where); } strSql += " EXEC(@SQL) "; } Func <List <CodeTableItemDto> > loadFun = () => { var data = DbHelperSql.Query(DbHelperSql.CouQuery, strSql, parameters.ToArray()); return(data != null && data.Tables.Count > 0 ? Conversion.ConvertToList <CodeTableItemDto>(data.Tables[0]) : null); }; if (model.UseCache && string.IsNullOrEmpty(model.Where)) { ICacheManager cacheManager = IocObjectManager.GetInstance().Resolve <IHttpContextCacheManager>(); return(cacheManager.Get(cacheKey, 60, loadFun, () => { return _versionControlService.GetVersionFlag(cacheKey); })); } else { return(loadFun()); } }