public static List <MessageData> PreProcess(MessageCollectionData messageCollection) { List <MessageData> msgList = new List <MessageData>(); if (messageCollection.MessageList != null && messageCollection.MessageList.Count > 0) { msgList = messageCollection.MessageList; if (msgList != null) { msgList.ForEach(t => t.UserFrom = messageCollection.UserFrom); } if (msgList != null) { msgList.ForEach(t => { if (t != null) { LogUtils.Info("收到的消息:" + t.Content); } }); } } return(msgList); }
public virtual MessageCollectionData HandleMessage(MessageData message, int sequence) { /** * 1、保存消息 * 2、后续处理 * 3、获得返回值 */ DoHandleMessage(message, sequence); MessageCollectionData result = GetMessage(sequence, message.UserFrom); return(result); }
public StructedResultData <MessageCollectionData> SyncMessage(string req_timestamp, string req_client_platform, string req_client_version, MessageCollectionData messageCollection) { try { MessageCollectionData result = MessageModule.Instance.Process(messageCollection); return(new StructedResultData <MessageCollectionData>() { Body = result }); } catch (Exception ex) { LogUtils.Error("发生异常", ex); } return(new StructedResultData <MessageCollectionData>("-1", "发生异常")); }
public virtual MessageCollectionData Process(MessageCollectionData messageCollection) { if (messageCollection == null) { return(null); } //heartbeat User u = UserModule.Instance.GetUserByName(messageCollection.UserFrom); if (u != null) { u.HeartBeat(); } if (messageCollection.MessageList == null || messageCollection.MessageList.Count == 0) { return(BaseMessageHandler.GetMessage(messageCollection.Sequence, messageCollection.UserFrom)); } MessageCollectionData collectionData = new MessageCollectionData() { MessageList = new List <MessageData>() }; List <MessageData> dataList = BaseMessageHandler.PreProcess(messageCollection); dataList.ForEach(t => { var handler = BaseMessageHandler.CreateHandler(t.MessageType); MessageCollectionData tmpCollection = handler.HandleMessage(t, messageCollection.Sequence); collectionData.Sequence = tmpCollection.Sequence; collectionData.UserFrom = tmpCollection.UserFrom; collectionData.MessageList.AddRange(tmpCollection.MessageList); }); return(collectionData); }
public virtual MessageCollectionData GetMessage(int sequence, string userName) { MessageCollectionData data = new MessageCollectionData() { Sequence = sequence, UserFrom = userName, MessageList = new List <MessageData>() }; var helper = DataHelper.CreateHelper(); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.Append(" select * from T_MESSAGE"); sqlBuilder.Append(" where recid>@sequence and T_MESSAGE.to=@user"); //sqlBuilder.Append(" where recid>@sequence and (T_MESSAGE.from = @user or T_MESSAGE.to=@user)"); sqlBuilder.Append(" order by recid"); List <MySqlParameter> parameterList = new List <MySqlParameter>(); parameterList.Add(new MySqlParameter("@sequence", MySqlDbType.Int32) { Value = sequence }); parameterList.Add(new MySqlParameter("@user", MySqlDbType.String) { Value = userName }); DataSet ds = helper.Query(sqlBuilder.ToString(), parameterList); if (ds != null && ds.Tables != null && ds.Tables.Count > 0 && ds.Tables[0] != null && ds.Tables[0].Rows != null) { if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow row in ds.Tables[0].Rows) { MessageData msg = null; if (Convert.ToInt32(row["type"]) == MessageType.ConversationStart) { msg = new ConversationControlData() { sequence = Convert.ToInt32(row["recid"]), UserTo = Convert.ToString(row["to"]), UserFrom = Convert.ToString(row["from"]), Content = Convert.ToString(row["content"]), MessageType = Convert.ToInt32(row["type"]), Time = Convert.ToDateTime(row["forwardtime"]).ToString("yyyy-MM-dd HH:mm:ss +0800"), MaxPeriodSec = ConversationModule.ConstantPeriodMaxSec, MinPeriodSec = ConversationModule.ConstantPeriodMinSec, }; } else { msg = new MessageData() { sequence = Convert.ToInt32(row["recid"]), UserTo = Convert.ToString(row["to"]), UserFrom = Convert.ToString(row["from"]), Content = Convert.ToString(row["content"]), MessageType = Convert.ToInt32(row["type"]), Time = Convert.ToDateTime(row["forwardtime"]).ToString("yyyy-MM-dd HH:mm:ss +0800") }; } data.MessageList.Add(msg); data.Sequence = msg.sequence; } } } return(data); }