public void ProcessRequest(HttpContext context)
        {
            String   myID     = context.Request.Params["myID"];
            String   nowChat  = context.Request.Params["chatPersonID"];
            DateTime lastTime = Convert.ToDateTime(context.Request.Params["lastTime"].ToString());

            BLL.chattingBLL bl = new BLL.chattingBLL();
            if (bl.selectNewMessage(myID, nowChat, lastTime) == null)
            {
                context.Response.Write("没有新消息略略略");
            }
            else
            {
                context.Response.Write(bl.selectNewMessage(myID, nowChat, lastTime));
                BLL.chattingBLL ctb = new BLL.chattingBLL();
                ctb.updateRead(myID, nowChat);
            }
        }
Beispiel #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            /*该页面可以有两种进入方式
             * 一种是通过首页点击商品信息中的卖方id进入
             * 一种是通过用户中心下拉框进入
             * 为避免未注册用户进入聊天界面,首先检查Session*/
            if (Session["user_id"] == null)
            {
                Response.Write("<script>alert('需要登录才能和卖方联系!')</script>");
                Response.Redirect("home_unlogined.aspx");
            }
            else
            {
                myID = Session["user_id"].ToString();
                BLL.chattingBLL ctb = new BLL.chattingBLL();
                if (Request.QueryString["chat_id"] != null)
                {
                    String chatID = Request.QueryString["chat_id"].ToString();
                    //说明是从首页点击进入,需要判断点击的这个人在不在以前聊天的清单里
                    bool isExist = false;
                    userIDList = ctb.selectChatUsers(Session["user_id"].ToString());
                    for (int i = 0; i < userIDList.Count; i++)
                    {
                        if (userIDList[i].Equals(chatID))
                        {
                            isExist = true;
                        }
                    }
                    //如果不在,将chat_id的这个用户消息其他字段置空,加入到消息列表
                    if (!isExist)
                    {
                        //Model.Chat c = new Model.Chat();
                        //c.content = "";
                        //c.sendTime = DateTime.Now;
                        //chat.Add(c);
                        userIDList.Add(chatID);
                        //从用户表中的第一个开始
                        for (int j = 1; j < userIDList.Count; j++)
                        {
                            //对左侧的每个用户都需要获取到发送方为该用户,接收方为我,或者是发送方为我,接收方为该用户的最近的一条消息
                            chat.Add(ctb.selectRecentMessage(myID, userIDList[j]));
                        }
                    }
                    else
                    {
                        //如果在的话就不用把他加进去了
                        foreach (String id in userIDList)
                        {
                            //对左侧的每个用户都需要获取到发送方为该用户,接收方为我,或者是发送方为我,接收方为该用户的最近的一条消息
                            chat.Add(ctb.selectRecentMessage(myID, id));
                        }
                    }

                    //如果是首页点进来的,右侧加载和首页点进来的那个人的聊天记录
                    talkNow     = chatID;
                    messageList = ctb.selectMessage(myID, chatID);
                }
                else if (Request.QueryString["changePerson"] != null)
                {
                    //说明点击li更换聊天对象
                    userIDList = ctb.selectChatUsers(Session["user_id"].ToString());
                    foreach (String id in userIDList)
                    {
                        //对左侧的每个用户都需要获取到发送方为该用户,接收方为我,或者是发送方为我,接收方为该用户的最近的一条消息
                        /*这里有bug*/
                        chat.Add(ctb.selectRecentMessage(myID, id));
                    }
                    talkNow     = Request.QueryString["changePerson"].ToString();
                    messageList = ctb.selectMessage(myID, talkNow);
                    //把此人发给我的所有消息设置为已读
                    ctb.updateRead(myID, talkNow);
                }
                else
                {
                    //说明不是从首页点击进入,也不是刷新,只需从数据库中找和该用户有来往的用户id
                    userIDList = ctb.selectChatUsers(Session["user_id"].ToString());
                    foreach (String id in userIDList)
                    {
                        //对左侧的每个用户都需要获取到发送方为该用户,接收方为我,或者是发送方为我,接收方为该用户的最近的一条消息
                        /*这里有bug*/
                        chat.Add(ctb.selectRecentMessage(myID, id));
                    }
                    //如果不是首页点进来的,那么右侧聊天框需要加载与第一个人聊天历史记录
                    talkNow     = userIDList[0];
                    messageList = ctb.selectMessage(myID, userIDList[0]);
                    //把第一个人所有发送给我的消息设置为已读
                    ctb.updateRead(myID, userIDList[0]);
                }
            }
        }