protected string GetImpressionList(int userID) { ImpressionTypeCollection impressions = m_ImpressionData[userID] as ImpressionTypeCollection; if (impressions != null) { return(StringUtil.Join(impressions, ", ")); } return(string.Empty); }
public override Hashtable GetImressionsTypesForUsers(int[] userIDs, int top) { using (SqlQuery db = new SqlQuery()) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < userIDs.Length; i++) { sb.Append("SELECT TOP (@Top) A.*, B.UserID FROM bx_ImpressionTypes A RIGHT JOIN bx_Impressions B ON A.TypeID = B.TypeID WHERE B.UserID = ").Append(userIDs[i]).AppendLine(""); if (i < userIDs.Length - 1) { sb.AppendLine("UNION"); } } sb.Append(" ORDER BY B.UserID"); db.CommandText = sb.ToString(); db.CreateTopParameter("@Top", top); using (XSqlDataReader reader = db.ExecuteReader()) { Hashtable result = new Hashtable(); ImpressionTypeCollection types = null; int lastUserId = -1; while (reader.Read()) { int userID = reader.Get <int>("UserID"); ImpressionType type = new ImpressionType(reader); if (userID != lastUserId) { lastUserId = userID; types = new ImpressionTypeCollection(); result.Add(userID, types); } types.Add(type); } return(result); } } }
public override ImpressionTypeCollection GetImpressionTypesForUse(int targetUserID, int usrCount, int sysCount) { using (SqlQuery db = new SqlQuery()) { db.CommandText = @" DECLARE @TempTable table(TypeID int); INSERT INTO @TempTable SELECT TOP (@UsrCount1) TypeID FROM bx_Impressions WHERE UserID = @TargetUserID ORDER BY UpdateDate DESC; SELECT * FROM bx_ImpressionTypes C RIGHT JOIN @TempTable A ON C.TypeID = A.TypeID; DECLARE @Count2 AS int; DECLARE @Count3 AS int; SET @Count2 = @UsrCount - (SELECT COUNT(*) FROM @TempTable) + @SysCount; IF @Count2 > 0 BEGIN EXEC( 'SELECT TOP ' + @Count2 + ' *, (SELECT TOP 1 C.UpdateDate FROM bx_Impressions C WHERE C.TypeID = A.TypeID ORDER BY C.UpdateDate DESC) AS UpdateDate FROM bx_ImpressionTypes A WHERE A.TypeID IN(SELECT B.TypeID FROM bx_Impressions B WHERE B.UserID != ' + @TargetUserID + ') ORDER BY UpdateDate' ); END"; db.CreateTopParameter("@UsrCount1", usrCount); db.CreateParameter <int>("@UsrCount", usrCount, SqlDbType.Int); db.CreateParameter <int>("@SysCount", sysCount, SqlDbType.Int); db.CreateParameter <int>("@TargetUserID", targetUserID, SqlDbType.Int); using (XSqlDataReader reader = db.ExecuteReader()) { ImpressionTypeCollection result = new ImpressionTypeCollection(reader); if (reader.NextResult()) { while (reader.Read()) { result.Add(new ImpressionType(reader)); } } return(result); } } }
public override ImpressionTypeCollection GetImpressionTypesForUse(int targetUserID, int usrCount, int sysCount) { using (SqlQuery db = new SqlQuery()) { db.CommandText = @" DECLARE @TempTable table(TypeID int); INSERT INTO @TempTable SELECT TOP (@UsrCount1) TypeID FROM bx_Impressions WHERE UserID = @TargetUserID ORDER BY UpdateDate DESC; SELECT * FROM bx_ImpressionTypes C RIGHT JOIN @TempTable A ON C.TypeID = A.TypeID; DECLARE @Count2 AS int; DECLARE @Count3 AS int; SET @Count2 = @UsrCount - (SELECT COUNT(*) FROM @TempTable) + @SysCount; IF @Count2 > 0 BEGIN EXEC( 'SELECT TOP ' + @Count2 + ' *, (SELECT TOP 1 C.UpdateDate FROM bx_Impressions C WHERE C.TypeID = A.TypeID ORDER BY C.UpdateDate DESC) AS UpdateDate FROM bx_ImpressionTypes A WHERE A.TypeID IN(SELECT B.TypeID FROM bx_Impressions B WHERE B.UserID != ' + @TargetUserID + ') ORDER BY UpdateDate' ); END"; db.CreateTopParameter("@UsrCount1", usrCount); db.CreateParameter<int>("@UsrCount", usrCount, SqlDbType.Int); db.CreateParameter<int>("@SysCount", sysCount, SqlDbType.Int); db.CreateParameter<int>("@TargetUserID", targetUserID, SqlDbType.Int); using (XSqlDataReader reader = db.ExecuteReader()) { ImpressionTypeCollection result = new ImpressionTypeCollection(reader); if (reader.NextResult()) { while (reader.Read()) { result.Add(new ImpressionType(reader)); } } return result; } } }
public override ImpressionTypeCollection GetImpressionTypesForAdmin(AdminImpressionTypeFilter filter, int pageNumber) { using (SqlQuery query = new SqlQuery()) { query.Pager.TableName = "[bx_ImpressionTypes]"; if (filter.Order == AdminImpressionTypeFilter.OrderBy.TypeID) { query.Pager.SortField = "TypeID"; } else { query.Pager.SortField = "RecordCount"; query.Pager.PrimaryKey = "TypeID"; } query.Pager.IsDesc = filter.IsDesc; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = filter.PageSize; query.Pager.SelectCount = true; query.Pager.Condition = BuildCondition(query, filter); using (XSqlDataReader reader = query.ExecuteReader()) { ImpressionTypeCollection types = new ImpressionTypeCollection(reader); if (reader.NextResult()) { if (reader.Read()) { types.TotalRecords = reader.Get <int>(0); } } return(types); } } }
public override bool BeforeExecute(int operatorUserID, string param, ref long offset, ref int totalCount, out string title) { StringList paramData = StringList.Parse(param); AdminImpressionTypeFilter filter = AdminImpressionTypeFilter.Parse(paramData[0]); AuthUser operatorUser = UserBO.Instance.GetAuthUser(operatorUserID); ImpressionTypeCollection types = ImpressionBO.Instance.GetImpressionTypesForAdmin(operatorUser, filter, 1); if (types == null || types.Count == 0) { title = "没有数据可以删除"; return(true); } totalCount = types.TotalRecords; title = "将删除 " + totalCount + " 条好友印象描述"; return(true); }
public override Hashtable GetImressionsTypesForUsers(int[] userIDs, int top) { using (SqlQuery db = new SqlQuery()) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < userIDs.Length; i++) { sb.Append("SELECT TOP (@Top) A.*, B.UserID FROM bx_ImpressionTypes A RIGHT JOIN bx_Impressions B ON A.TypeID = B.TypeID WHERE B.UserID = ").Append(userIDs[i]).AppendLine(""); if (i < userIDs.Length - 1) sb.AppendLine("UNION"); } sb.Append(" ORDER BY B.UserID"); db.CommandText = sb.ToString(); db.CreateTopParameter("@Top", top); using (XSqlDataReader reader = db.ExecuteReader()) { Hashtable result = new Hashtable(); ImpressionTypeCollection types = null; int lastUserId = -1; while (reader.Read()) { int userID = reader.Get<int>("UserID"); ImpressionType type = new ImpressionType(reader); if (userID != lastUserId) { lastUserId = userID; types = new ImpressionTypeCollection(); result.Add(userID, types); } types.Add(type); } return result; } } }
public override ImpressionTypeCollection GetImpressionTypesForAdmin(AdminImpressionTypeFilter filter, int pageNumber) { using (SqlQuery query = new SqlQuery()) { query.Pager.TableName = "[bx_ImpressionTypes]"; if (filter.Order == AdminImpressionTypeFilter.OrderBy.TypeID) query.Pager.SortField = "TypeID"; else { query.Pager.SortField = "RecordCount"; query.Pager.PrimaryKey = "TypeID"; } query.Pager.IsDesc = filter.IsDesc; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = filter.PageSize; query.Pager.SelectCount = true; query.Pager.Condition = BuildCondition(query, filter); using (XSqlDataReader reader = query.ExecuteReader()) { ImpressionTypeCollection types = new ImpressionTypeCollection(reader); if (reader.NextResult()) { if (reader.Read()) { types.TotalRecords = reader.Get<int>(0); } } return types; } } }