Пример #1
0
        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);
        }
Пример #2
0
        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", "发生异常"));
 }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }