public string LastMessageID(string conversationName) { int limit = 1000; int i = 0; if (conversationName.Equals("#monkeys.paywall.bot/$*T;905")) { i = 0; } ChatMessageCollection messages = this._skype.Messages; foreach (ChatMessage cm in messages) { if (cm.ChatName.Equals(conversationName)) { return(cm.Id.ToString()); } if (i > limit) { return(string.Empty); } i++; } return(string.Empty); }
public override ChatMessageCollection SendMessage(int userID, int targetUserID, string content, string ip, bool getNewMessages, int lastMessageID) { ChatMessageCollection messages = new ChatMessageCollection(); using (SqlQuery query = new SqlQuery()) { query.CommandText = "bx_Chat_SendMessage"; query.CommandType = CommandType.StoredProcedure; query.CreateParameter <int>("@UserID", userID, SqlDbType.Int); query.CreateParameter <int>("@TargetUserID", targetUserID, SqlDbType.Int); query.CreateParameter <string>("@Content", content, SqlDbType.NVarChar, 3000); query.CreateParameter <string>("@CreateIP", ip, SqlDbType.VarChar, 50); query.CreateParameter <bool>("@GetNewMessages", getNewMessages, SqlDbType.Bit); query.CreateParameter <int>("@LastMessageID", lastMessageID, SqlDbType.Int); if (getNewMessages) { using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { messages.Insert(0, new ChatMessage(reader)); } } } else { query.ExecuteNonQuery(); } } return(messages); }
public override ChatMessageCollection GetLastChatMessages(int userID, int targetUserID, int lastMessageID, int MessageCount) { ChatMessageCollection result; using (SqlQuery query = new SqlQuery()) { query.CommandText = "bx_Chat_GetLastMessages"; query.CommandType = CommandType.StoredProcedure; query.CreateParameter <int>("@UserID", userID, SqlDbType.Int); query.CreateParameter <int>("@TargetUserID", targetUserID, SqlDbType.Int); query.CreateParameter <int>("@LastMessageID", lastMessageID, SqlDbType.Int); using (XSqlDataReader reader = query.ExecuteReader()) { result = new ChatMessageCollection(); while (reader.Read()) { result.Insert(0, new ChatMessage(reader)); } } return(result); } }
public List <SkypeMessage> GetLastMessages(int count) { int limit = count; int i = 0; List <SkypeMessage> result = new List <SkypeMessage>(); ChatMessageCollection messages = this._skype.Messages; foreach (ChatMessage cm in messages) { if (i > limit) { return(result); } result.Add(new SkypeMessage() { ChatMessage = cm, Message = cm.Body, Sender = cm.Sender.FullName, Date = cm.Timestamp }); i++; } return(result); }
protected void Page_Load(object sender, EventArgs e) { if (!EnableChatFunction) { ShowError("管理员已关闭对话功能!"); return; } //验证码频率计数(页面调用次数计数) ValidateCodeManager.CreateValidateCodeActionRecode(validateActionName); m_ToUserID = _Request.Get <int>("to", Method.Get, 0); if (m_ToUserID <= 0) { ShowError(new UserNotExistsError("to", m_ToUserID)); } m_ChatUser = UserBO.Instance.GetSimpleUser(m_ToUserID, true); if (m_ChatUser == null) { ShowError(new UserNotExistsError("to", m_ToUserID)); } m_ChatMessageList = ChatBO.Instance.GetLastChatMessages(MyUserID, m_ToUserID, 0, 20); }
public override ChatMessageCollection GetLastChatMessages(int userID, int targetUserID, int lastMessageID, int MessageCount) { ChatMessageCollection result; using (SqlQuery query = new SqlQuery()) { query.CommandText = "bx_Chat_GetLastMessages"; query.CommandType = CommandType.StoredProcedure; query.CreateParameter<int>("@UserID", userID, SqlDbType.Int); query.CreateParameter<int>("@TargetUserID", targetUserID, SqlDbType.Int); query.CreateParameter<int>("@LastMessageID", lastMessageID, SqlDbType.Int); using (XSqlDataReader reader = query.ExecuteReader()) { result = new ChatMessageCollection(); while (reader.Read()) { result.Insert(0, new ChatMessage(reader)); } } return result; } }
protected void Page_Load(object sender, System.EventArgs e) { AddNavigationItem("对话"); if (!EnableChatFunction) { ShowError("管理员已关闭对话功能!"); return; } m_PageNumber = _Request.Get<int>("page", Method.All, 0); m_MessagePageNumber = _Request.Get<int>("msgpage", Method.All, 0); m_TargetUserID = _Request.Get<int>("to", Method.All, 0); if (m_TargetUserID > 0) { m_SelectedChatSession = ChatBO.Instance.GetChatSession(MyUserID, m_TargetUserID); if (m_SelectedChatSession == null) m_TargetUserID = 0; else WaitForFillSimpleUser<ChatSession>(m_SelectedChatSession, 0); bool updateIsReade = false; if (m_MessagePageNumber == 1) updateIsReade = true; m_ChatMessageList = ChatBO.Instance.GetChatMessages(MyUserID, m_TargetUserID, m_MessagePageNumber, c_MessagePageSize, updateIsReade); m_ChatMessageList.Reverse(); int totalPageNumber = (int)Math.Ceiling((double)m_ChatMessageList.TotalRecords / (double)c_MessagePageSize); if (m_MessagePageNumber == 0) { m_MessagePageNumber = totalPageNumber; } else { m_MessagePageNumber = (totalPageNumber + 1) - m_MessagePageNumber; } WaitForFillSimpleUsers<ChatMessage>(m_ChatMessageList, 0); SetPager("messagelist", BbsRouter.GetUrl("my/chat", "page=" + m_PageNumber + "&to=" + TargetUserID + "&msgpage={0}"), m_MessagePageNumber, c_MessagePageSize, m_ChatMessageList.TotalRecords); } if (_Request.IsClick("beginChat")) { ProcessBeginChat(); } m_ChatSessionList = ChatBO.Instance.GetChatSessions(MyUserID, m_PageNumber, c_SessionPageSize); WaitForFillSimpleUsers<ChatSession>(m_ChatSessionList, 0); SetPager("chatlist", BbsRouter.GetUrl("my/chat", "page={0}"), m_PageNumber, c_SessionPageSize, m_ChatSessionList.TotalRecords); }
public string LastMessageID() { ChatMessageCollection messages = this._skype.Messages; foreach (ChatMessage cm in messages) { return(cm.Id.ToString()); } return(string.Empty); }
public override ChatMessageCollection GetChatMessages(int userID, int targetUserID, int pageNumber, int pageSize, bool updateIsReaded) { ChatMessageCollection result; using (SqlQuery query = new SqlQuery()) { if (pageNumber != 0) { query.Pager.BeforeExecuteDealcre.Add("@TotalMessages", SqlDbType.Int); query.Pager.BeforeExecute = @"SELECT @TotalMessages = TotalMessages FROM bx_ChatSessions WHERE UserID = @UserID AND TargetUserID = @TargetUserID;"; query.Pager.TableName = "bx_ChatMessages"; query.Pager.SortField = "MessageID"; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = pageSize; query.Pager.IsDesc = true; query.Pager.SelectCount = true; query.Pager.TotalRecordsVariable = "@TotalMessages"; query.Pager.Condition = "UserID = @UserID AND TargetUserID = @TargetUserID"; query.CreateParameter <int>("@UserID", userID, SqlDbType.Int); query.CreateParameter <int>("@TargetUserID", targetUserID, SqlDbType.Int); if (updateIsReaded) { query.Pager.AfterExecute = @" UPDATE bx_ChatMessages SET IsRead = 1 WHERE UserID = @UserID AND TargetUserID = @TargetUserID AND IsRead = 0; "; } } else { query.CommandText = "SELECT Top " + pageSize + " * FROM bx_ChatMessages WHERE UserID = @UserID AND TargetUserID = @TargetUserID ORDER BY MessageID Desc;"; query.CommandText += "SELECT COUNT(*) FROM bx_ChatMessages WHERE UserID = @UserID AND TargetUserID = @TargetUserID;"; query.CreateParameter <int>("@UserID", userID, SqlDbType.Int); query.CreateParameter <int>("@TargetUserID", targetUserID, SqlDbType.Int); } using (XSqlDataReader reader = query.ExecuteReader()) { result = new ChatMessageCollection(reader); if (reader.NextResult()) { if (reader.Read()) { result.TotalRecords = reader.Get <int>(0); } } } return(result); } }
public void ProcessKeyword(ChatMessage chatMessage, ProcessKeywordMode mode) { if (chatMessage == null) { return; } ChatMessageCollection messages = new ChatMessageCollection(); messages.Add(chatMessage); ProcessKeyword(messages, mode); }
public ChatMessageCollection GetLastChatMessages(int userID, int targetUserID, int lastMessageID, int messageCount) { if (!AllSettings.Current.ChatSettings.EnableChatFunction) { return(new ChatMessageCollection()); } messageCount = messageCount <= 0 ? 200 : messageCount; #if !Passport PassportClientConfig settings = Globals.PassportClient; if (settings.EnablePassport) { ChatMessageProxy[] messages = settings.PassportService.Chat_GetLastChatMessages(userID, targetUserID, lastMessageID, messageCount); ChatMessageCollection result = new ChatMessageCollection(); foreach (ChatMessageProxy m in messages) { result.Add(GetChatMessage(m)); } return(result); } else #endif { ChatMessageCollection messages = ChatDao.Instance.GetLastChatMessages(userID, targetUserID, lastMessageID, messageCount); ProcessKeyword(messages, ProcessKeywordMode.TryUpdateKeyword); if (messages.Count > 0) { if (OnUsersMessageCountChanged != null) { AuthUser user = UserBO.Instance.GetAuthUser(userID); if (user != null) { Dictionary <int, int> counts = new Dictionary <int, int>(); counts.Add(userID, user.UnreadMessages); OnUsersMessageCountChanged(counts); } } } return(messages); } //if (OnChatUserMessageCountChanged != null) OnChatUserMessageCountChanged(userID); }
public WebSocketHandler(HttpContext context, WebSocket webSocket) { Context = context; WebSocket = webSocket; Id = Guid.NewGuid(); Sockets.TryAdd(Id, this); Database.SortedSetRangeByRankAsync("Messages", -10, -1).ContinueWith <Task>(task => { var messages = new ChatMessageCollection(task.Result.Select(value => JsonConvert.DeserializeObject <ChatMessage>(value)).ToDictionary(m => m.Timestamp.Ticks)); var wrapper = new WebWrapper { Payload = messages }; return(Send(wrapper)); }); }
public List <ChatMessageProxy> Chat_GetLastChatMessages(int userID, int targetUserID, int lastMessageID, int messageCount) { if (!CheckClient()) { return(null); } ChatMessageCollection messages = ChatBO.Instance.GetLastChatMessages(userID, targetUserID, lastMessageID, messageCount); List <ChatMessageProxy> result = new List <ChatMessageProxy>(); foreach (ChatMessage m in messages) { result.Add(ProxyConverter.GetChatMessageProxy(m)); } return(result); }
public List <ChatMessageProxy> Chat_AdminGetChatMessages(int userID, int targetUserID, int pageNumber, int pageSize) { if (!CheckClient()) { return(null); } ChatMessageCollection messages = ChatBO.Instance.AdminGetChatMessages(userID, targetUserID, pageNumber, pageSize); List <ChatMessageProxy> result = new List <ChatMessageProxy>(); foreach (ChatMessage m in messages) { result.Add(ProxyConverter.GetChatMessageProxy(m)); } return(result); }
public APIResult Chat_SendMessage(int senderUserID, int recoverUserID, string contentWithoutEncode, string ip, bool getNewMessages, int lastMessageID, out List <ChatMessageProxy> chatMessages) { chatMessages = null; if (CheckClient()) { APIResult result = new APIResult(); using (ErrorScope es = new ErrorScope()) { try { ChatMessageCollection messages = ChatBO.Instance.Server_SendMessage(senderUserID, recoverUserID, contentWithoutEncode, ip, getNewMessages, lastMessageID); chatMessages = new List <ChatMessageProxy>(); foreach (ChatMessage message in messages) { chatMessages.Add(ProxyConverter.GetChatMessageProxy(message)); } bool hasError = false; es.CatchError <ErrorInfo>(delegate(ErrorInfo error) { hasError = true; result.AddError(error.TatgetName, error.Message); }); result.IsSuccess = hasError == false; } catch (Exception ex) { result.ErrorCode = Consts.ExceptionCode; result.AddError(ex.Message); result.IsSuccess = false; } } return(result); } else { return(null); } }
public List <ChatMessageProxy> Chat_GetChatMessages(int userID, int targetUserID, int pageNumber, int pageSize, bool processKeyword, bool updateIsReaded, out int totalCount) { totalCount = 0; if (!CheckClient()) { return(null); } ChatMessageCollection messages = ChatBO.Instance.GetChatMessages(userID, targetUserID, pageNumber, pageSize, updateIsReaded); totalCount = messages.TotalRecords; List <ChatMessageProxy> result = new List <ChatMessageProxy>(); foreach (ChatMessage m in messages) { result.Add(ProxyConverter.GetChatMessageProxy(m)); } return(result); }
public List <SkypeMessage> GetMessages(string messageID, string conversationName) { int limit = 150; int i = 0; List <SkypeMessage> result = new List <SkypeMessage>(); ChatMessageCollection messages = this._skype.Messages; foreach (ChatMessage cm in messages) { //if (!cm.FromDisplayName.Equals(conversationName)) // continue; if (!cm.ChatName.Equals(conversationName)) { continue; } if (cm.Id <= Int32.Parse(messageID)) { return(result); } if (i > limit) { return(result); } if (!cm.Sender.Handle.Equals(this._currentUser)) { result.Add(new SkypeMessage() { ChatMessage = cm, Message = cm.Body, Sender = cm.Sender.FullName, Date = cm.Timestamp }); } i++; } return(result); }
private static IEnumerable <ChatMessage> GetUnreadMessages(ISkype skype) { ChatMessageCollection messages = null; foreach (var name in Names) { messages = skype.Messages[name]; } foreach (string chatName in ChatNames) { var chatMessages = skype.Chat[chatName].Messages; if (messages == null) { break; } foreach (ChatMessage chatMessage in chatMessages) { messages.Add(chatMessage); } } var unreaded = messages?.OfType <ChatMessage>().Where(o => (int)o.Status == 2); return(unreaded); // foreach (Chat chat in skype.Chats) // { // if (chat.ActiveMembers.Count > 2) // { // Console.WriteLine(chat.Name); // foreach (User activeMember in chat.ActiveMembers) // { // Console.WriteLine(activeMember.FullName); // } // Console.WriteLine(chat.ActiveMembers.Count); // } // } }
public void ProcessKeyword(ChatMessageCollection messages, ProcessKeywordMode mode) { if (messages.Count == 0) { return; } KeywordReplaceRegulation keyword = AllSettings.Current.ContentKeywordSettings.ReplaceKeywords; bool needProcess = false; //更新关键字模式,只在必要的情况下才取恢复信息并处理 if (mode == ProcessKeywordMode.TryUpdateKeyword) { needProcess = keyword.NeedUpdate <ChatMessage>(messages); } //填充原始内容模式,始终都要取恢复信息,但不处理 else { needProcess = true; } if (needProcess) { RevertableCollection <ChatMessage> messagesWithReverter = ChatDao.Instance.GetChatMessageWithReverters(messages.GetKeys()); if (messagesWithReverter != null) { if (keyword.Update(messagesWithReverter)) { ChatDao.Instance.UpdateChatMessageKeywords(messagesWithReverter); } //将新数据填充到旧的列表 messagesWithReverter.FillTo(messages); } } }
protected void Page_Load(object sender, EventArgs e) { if (!EnableChatFunction) { ShowError("管理员已关闭对话功能!"); return; } //验证码频率计数(页面调用次数计数) ValidateCodeManager.CreateValidateCodeActionRecode(validateActionName); m_ToUserID = _Request.Get<int>("to", Method.Get, 0); if (m_ToUserID <= 0) ShowError(new UserNotExistsError("to", m_ToUserID)); m_ChatUser = UserBO.Instance.GetSimpleUser(m_ToUserID,true); if (m_ChatUser == null) ShowError(new UserNotExistsError("to", m_ToUserID)); m_ChatMessageList = ChatBO.Instance.GetLastChatMessages(MyUserID, m_ToUserID, 0, 20); }
/// <summary> /// 获取和某人的聊天记录,如果pageNumber为0则取最后一页 /// </summary> /// <param name="operatorID"></param> /// <param name="targetUserID"></param> /// <param name="pageNumber">0表示取最后一页</param> /// <param name="pageSize"></param> /// <returns></returns> private ChatMessageCollection GetChatMessages(int operatorID, int targetUserID, int pageNumber, int pageSize, bool processKeyword, bool updateIsReaded) { if (!AllSettings.Current.ChatSettings.EnableChatFunction) { return(new ChatMessageCollection()); } if (operatorID <= 0) { ThrowError(new NotLoginError()); return(new ChatMessageCollection()); } if (targetUserID <= 0) { return(new ChatMessageCollection()); } #if !Passport PassportClientConfig settings = Globals.PassportClient; if (settings.EnablePassport) { int totalCount; ChatMessageProxy[] messages = settings.PassportService.Chat_GetChatMessages(operatorID, targetUserID, pageNumber, pageSize, processKeyword, updateIsReaded, out totalCount); ChatMessageCollection result = new ChatMessageCollection(); foreach (ChatMessageProxy m in messages) { result.Add(GetChatMessage(m)); } result.TotalRecords = totalCount; return(result); } else #endif { ChatMessageCollection Messages = ChatDao.Instance.GetChatMessages(operatorID, targetUserID, pageNumber, pageSize, updateIsReaded); if (updateIsReaded) { if (OnUsersMessageCountChanged != null) { AuthUser user = UserBO.Instance.GetAuthUser(operatorID); if (user != null) { Dictionary <int, int> counts = new Dictionary <int, int>(); counts.Add(operatorID, user.UnreadMessages); OnUsersMessageCountChanged(counts); } } } if (processKeyword) { ProcessKeyword(Messages, ProcessKeywordMode.TryUpdateKeyword); } else { ProcessKeyword(Messages, ProcessKeywordMode.FillOriginalText); } return(Messages); } }
/// <summary> /// 发送一个对话消息,并且根据指定参数决定是否需要同时返回最新消息 /// </summary> /// <param name="operatorID">发送者</param> /// <param name="targetUserID">接受者</param> /// <param name="contentWithoutEncode">未经html编码的内容</param> /// <param name="ip">发送者IP</param> /// <param name="processContent">是否处理内容</param> /// <param name="getNewMessages">是否需要同时返回最新消息</param> /// <param name="lastMessageID">如果需要返回最新消息,则传入客户端</param> /// <returns></returns> public ChatMessageCollection SendMessage(int operatorID, int targetUserID, string contentWithoutEncode, string ip, bool processContent, bool getNewMessages, int lastMessageID) { #if !Passport PassportClientConfig settings = Globals.PassportClient; if (settings.EnablePassport) { ChatMessageProxy[] chatMessages; APIResult result = null; string content = ProcessChatContent(operatorID, contentWithoutEncode); content = content.Replace("{$root}", Globals.FullAppRoot); try { result = settings.PassportService.Chat_SendMessage(operatorID, targetUserID, content, ip, getNewMessages, lastMessageID, out chatMessages); } catch (Exception ex) { ThrowError(new APIError(ex.Message)); return(new ChatMessageCollection()); } if (result.ErrorCode == Consts.ExceptionCode) { if (result.Messages.Length > 0) { ThrowError(new CustomError("远程服务器错误, 请稍后重试." + (result.Messages.Length > 0 ? result.Messages[0] : string.Empty))); } return(new ChatMessageCollection()); } else if (result.IsSuccess == false) { ThrowError <CustomError>(new CustomError("", result.Messages[0])); return(new ChatMessageCollection()); } ChatMessageCollection messages = new ChatMessageCollection(); foreach (ChatMessageProxy m in chatMessages) { messages.Add(GetChatMessage(m)); } return(messages); } else #endif { if (!AllSettings.Current.ChatSettings.EnableChatFunction) { return(new ChatMessageCollection()); } if (operatorID <= 0) { ThrowError(new NotLoginError()); return(new ChatMessageCollection()); } if (targetUserID <= 0) { ThrowError(new UserNotExistsError("targetUserID", targetUserID)); return(new ChatMessageCollection()); } if (operatorID == targetUserID) { ThrowError(new CustomError("targetUserID", "您不能和自己交谈")); //临时的 return(new ChatMessageCollection()); } if (string.IsNullOrEmpty(contentWithoutEncode) || (contentWithoutEncode = contentWithoutEncode.Trim()) == string.Empty) { ThrowError(new EmptyMessageContentError("contentWithoutEncode")); return(new ChatMessageCollection()); } if (contentWithoutEncode.Length > MaxContentLength) { ThrowError(new MessageContentLengthError("contentWithoutEncode", contentWithoutEncode, MaxContentLength)); return(new ChatMessageCollection()); } if (FriendBO.Instance.InMyBlacklist(targetUserID, operatorID)) { ThrowError(new InBlackListError()); return(new ChatMessageCollection()); } //if (AllSettings.Current.UserPermissionSet.Can(operatorID, UserPermissionSet.Action.UseMessage) == false) //{ // ThrowError(new NoPermissionUseMessageError()); // return false; //} string content = contentWithoutEncode; if (processContent) { content = ProcessChatContent(operatorID, content); } ContentKeywordSettings keywords = AllSettings.Current.ContentKeywordSettings; string keyword = null; if (keywords.BannedKeywords.IsMatch(content, out keyword)) { ThrowError(new ChatMessageBannedKeywordsError("content", keyword)); return(null); } ChatMessageCollection newMessages = ChatDao.Instance.SendMessage(operatorID, targetUserID, content, ip, getNewMessages, lastMessageID); AuthUser user = UserBO.Instance.GetUserFromCache <AuthUser>(targetUserID); if (user != null) { user.UnreadMessages++; } if (OnUsersMessageCountChanged != null) { if (user == null) { user = UserBO.Instance.GetAuthUser(targetUserID); } if (user != null) { Dictionary <int, int> counts = new Dictionary <int, int>(); counts.Add(user.UserID, user.UnreadMessages); OnUsersMessageCountChanged(counts); } } ProcessKeyword(newMessages, ProcessKeywordMode.TryUpdateKeyword); return(newMessages); } }
public override ChatMessageCollection SendMessage(int userID, int targetUserID, string content, string ip, bool getNewMessages, int lastMessageID) { ChatMessageCollection messages = new ChatMessageCollection(); using (SqlQuery query = new SqlQuery()) { query.CommandText = "bx_Chat_SendMessage"; query.CommandType = CommandType.StoredProcedure; query.CreateParameter<int>("@UserID", userID, SqlDbType.Int); query.CreateParameter<int>("@TargetUserID", targetUserID, SqlDbType.Int); query.CreateParameter<string>("@Content", content, SqlDbType.NVarChar, 3000); query.CreateParameter<string>("@CreateIP", ip, SqlDbType.VarChar, 50); query.CreateParameter<bool>("@GetNewMessages", getNewMessages, SqlDbType.Bit); query.CreateParameter<int>("@LastMessageID", lastMessageID, SqlDbType.Int); if (getNewMessages) { using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) messages.Insert(0, new ChatMessage(reader)); } } else query.ExecuteNonQuery(); } return messages; }
public override ChatMessageCollection GetChatMessages(int userID, int targetUserID, int pageNumber, int pageSize, bool updateIsReaded) { ChatMessageCollection result; using (SqlQuery query = new SqlQuery()) { if (pageNumber != 0) { query.Pager.BeforeExecuteDealcre.Add("@TotalMessages", SqlDbType.Int); query.Pager.BeforeExecute = @"SELECT @TotalMessages = TotalMessages FROM bx_ChatSessions WHERE UserID = @UserID AND TargetUserID = @TargetUserID;"; query.Pager.TableName = "bx_ChatMessages"; query.Pager.SortField = "MessageID"; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = pageSize; query.Pager.IsDesc = true; query.Pager.SelectCount = true; query.Pager.TotalRecordsVariable = "@TotalMessages"; query.Pager.Condition = "UserID = @UserID AND TargetUserID = @TargetUserID"; query.CreateParameter<int>("@UserID", userID, SqlDbType.Int); query.CreateParameter<int>("@TargetUserID", targetUserID, SqlDbType.Int); if (updateIsReaded) { query.Pager.AfterExecute = @" UPDATE bx_ChatMessages SET IsRead = 1 WHERE UserID = @UserID AND TargetUserID = @TargetUserID AND IsRead = 0; "; } } else { query.CommandText = "SELECT Top " + pageSize + " * FROM bx_ChatMessages WHERE UserID = @UserID AND TargetUserID = @TargetUserID ORDER BY MessageID Desc;"; query.CommandText += "SELECT COUNT(*) FROM bx_ChatMessages WHERE UserID = @UserID AND TargetUserID = @TargetUserID;"; query.CreateParameter<int>("@UserID", userID, SqlDbType.Int); query.CreateParameter<int>("@TargetUserID", targetUserID, SqlDbType.Int); } using (XSqlDataReader reader = query.ExecuteReader()) { result = new ChatMessageCollection(reader); if (reader.NextResult()) { if (reader.Read()) result.TotalRecords = reader.Get<int>(0); } } return result; } }
protected void Page_Load(object sender, System.EventArgs e) { AddNavigationItem("对话"); if (!EnableChatFunction) { ShowError("管理员已关闭对话功能!"); return; } m_PageNumber = _Request.Get <int>("page", Method.All, 0); m_MessagePageNumber = _Request.Get <int>("msgpage", Method.All, 0); m_TargetUserID = _Request.Get <int>("to", Method.All, 0); if (m_TargetUserID > 0) { m_SelectedChatSession = ChatBO.Instance.GetChatSession(MyUserID, m_TargetUserID); if (m_SelectedChatSession == null) { m_TargetUserID = 0; } else { WaitForFillSimpleUser <ChatSession>(m_SelectedChatSession, 0); } bool updateIsReade = false; if (m_MessagePageNumber == 1) { updateIsReade = true; } m_ChatMessageList = ChatBO.Instance.GetChatMessages(MyUserID, m_TargetUserID, m_MessagePageNumber, c_MessagePageSize, updateIsReade); m_ChatMessageList.Reverse(); int totalPageNumber = (int)Math.Ceiling((double)m_ChatMessageList.TotalRecords / (double)c_MessagePageSize); if (m_MessagePageNumber == 0) { m_MessagePageNumber = totalPageNumber; } else { m_MessagePageNumber = (totalPageNumber + 1) - m_MessagePageNumber; } WaitForFillSimpleUsers <ChatMessage>(m_ChatMessageList, 0); SetPager("messagelist", BbsRouter.GetUrl("my/chat", "page=" + m_PageNumber + "&to=" + TargetUserID + "&msgpage={0}"), m_MessagePageNumber, c_MessagePageSize, m_ChatMessageList.TotalRecords); } if (_Request.IsClick("beginChat")) { ProcessBeginChat(); } m_ChatSessionList = ChatBO.Instance.GetChatSessions(MyUserID, m_PageNumber, c_SessionPageSize); WaitForFillSimpleUsers <ChatSession>(m_ChatSessionList, 0); SetPager("chatlist", BbsRouter.GetUrl("my/chat", "page={0}"), m_PageNumber, c_SessionPageSize, m_ChatSessionList.TotalRecords); }