Ejemplo n.º 1
0
        /// <summary>
        /// 接收消息时,记录消息信息
        /// </summary>
        /// <param name="doc"></param>
        public void MsgReceiving(XmlDocument doc)
        {
            if (doc != null)
            {
                ReceiveMsgDAL dal  = new ReceiveMsgDAL();
                ReceiveMsg    info = new ReceiveMsg()
                {
                    WXConfigID   = wxConfig.ID,
                    CreateTime   = doc.DocumentElement.SelectSingleNode("CreateTime").InnerText,
                    FromUserName = doc.DocumentElement.SelectSingleNode("FromUserName").InnerText,
                    ToUserName   = doc.DocumentElement.SelectSingleNode("ToUserName").InnerText,
                    MsgType      = doc.DocumentElement.SelectSingleNode("MsgType").InnerText,
                    MsgBody      = doc.InnerXml
                };
                dal.InsertInfo(info);

                string msgType = doc.DocumentElement.SelectSingleNode("MsgType").InnerText;
                if (msgType.ToLower() == "text")
                {
                    ReceiveTextMsgDAL receiveTextMsgDAL = new ReceiveTextMsgDAL();
                    ReceiveTextMsg    receiveTextMsg    = new ReceiveTextMsg()
                    {
                        WXConfigID   = wxConfig.ID,
                        CreateTime   = doc.DocumentElement.SelectSingleNode("CreateTime").InnerText,
                        FromUserName = doc.DocumentElement.SelectSingleNode("FromUserName").InnerText,
                        ToUserName   = doc.DocumentElement.SelectSingleNode("ToUserName").InnerText,
                        MsgType      = doc.DocumentElement.SelectSingleNode("MsgType").InnerText,
                        Content      = doc.DocumentElement.SelectSingleNode("Content").InnerText,
                    };
                    receiveTextMsgDAL.Insert(receiveTextMsg);
                }

                string                msgcontent = string.Empty;
                string                openid     = string.Empty;
                DAL.CR.ChatRoomDAL    roomdal    = new DAL.CR.ChatRoomDAL();
                DAL.CR.ChatUsersDAL   userdal    = new DAL.CR.ChatUsersDAL();
                Model.CR.ChatUsers    usermodel  = new Model.CR.ChatUsers();
                DAL.CR.ChatMessageDAL msgdal     = new DAL.CR.ChatMessageDAL();
                Model.CR.ChatMessage  msgmodel   = new Model.CR.ChatMessage();
                UserDAL               wx_userdal = new UserDAL();
                User wx_usermodel = new User();
                openid = doc.DocumentElement.SelectSingleNode("FromUserName").InnerText;
                string ChatUserName = string.Empty;
                if (openid != null && openid != "")
                {
                    if (!wx_userdal.ExistUserByOpenID(openid))
                    {
                        UserInfo userinfo = weixin.GetUserInfo(openid);//获取用户信息
                        wx_usermodel.ID            = Guid.NewGuid().ToString("N").ToUpper();
                        wx_usermodel.City          = userinfo.City;
                        wx_usermodel.Country       = userinfo.Country;
                        wx_usermodel.HeadImgUrl    = userinfo.Headimgurl;
                        wx_usermodel.Language      = userinfo.Language;
                        wx_usermodel.NickName      = userinfo.NickName;
                        wx_usermodel.OpenID        = userinfo.OpenId;
                        wx_usermodel.Province      = userinfo.Province;
                        wx_usermodel.Sex           = userinfo.Sex;
                        wx_usermodel.Subscribe     = userinfo.Subscribe;
                        wx_usermodel.SubscribeTime = userinfo.Subscribe_Time;
                        ChatUserName = userinfo.NickName;
                        if (null != wx_usermodel.ID)
                        {
                            wx_userdal.Insert(wx_usermodel);
                        }
                    }
                    else
                    {
                        ChatUserName = wx_userdal.GetUserValueByOpenID("NickName", openid).ToString();
                    }
                }
                else////OpenID为空
                {
                }
                int strRoomID = 1;
                #region  墙信息
                if (msgType.ToLower() == "text")
                {
                    msgcontent = doc.DocumentElement.SelectSingleNode("Content").InnerText;
                    if (msgcontent.Contains("#"))
                    {
                        if (openid != null && openid != "")
                        {
                            #region  务号取用户加入信息
                            if (msgcontent.Length <= 1)                                         //判断是否单独发送 #
                            {
                                if (userdal.ExistChatUser(Convert.ToInt32(msgcontent), openid)) //如果存在该用户
                                {
                                    string uid = userdal.GetChatUserValueByOpenID("ID", openid, Convert.ToInt32(msgcontent)).ToString();
                                    if (uid.Trim() != null && uid.Trim() != "")
                                    {
                                        userdal.UpdateChatUserIsDel(uid);//更新用户状态  提示表示用户离开房间
                                    }
                                }
                            }
                            else
                            {
                                msgcontent = msgcontent.Substring(1);
                                if (Regex.IsMatch(msgcontent, @"^\d+$"))//判断是否为数字
                                {
                                    string roomsitecode = roomdal.GetChatRoomValueByID("SiteCode", Convert.ToInt32(msgcontent)).ToString();
                                    if (roomsitecode.Trim() != null && roomsitecode.Trim() != "")
                                    {
                                        if (roomdal.ExistChatRoomNum(roomsitecode, Convert.ToInt32(msgcontent)))
                                        {
                                            //提示房间存在
                                            if (userdal.ExistChatUser(Convert.ToInt32(msgcontent), openid))
                                            {
                                                //提示该用户已进入该房间
                                            }
                                            else
                                            {
                                                usermodel.ID     = Guid.NewGuid().ToString("N").ToUpper();
                                                usermodel.OpenID = openid;
                                                usermodel.RoomID = Convert.ToInt32(msgcontent);
                                                usermodel.IsDel  = 0;
                                                usermodel.IsWin  = 0;
                                                userdal.AddChatUsers(usermodel);
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                        else
                        {
                            #region 订阅号获取上墙信息
                            string[] sArray   = msgcontent.Split('#');
                            string   username = string.Empty;
                            string   msginfo  = string.Empty;
                            try
                            {
                                username = sArray[0].ToString();
                            }
                            catch (Exception)
                            {
                            }
                            try
                            {
                                msginfo = sArray[1].ToString();
                            }
                            catch (Exception)
                            {
                            }
                            if (username.Trim() != null && username.Trim() != "")
                            {
                                if (userdal.ExistChatUser(username))//判断用户名是否已存在
                                {
                                    //已存在用户
                                    if (msginfo.Trim() == null || msginfo.Trim() == "")
                                    {
                                        userdal.UpdateChatUserIsDel(username);//删除用户
                                    }
                                }
                                else
                                {
                                    usermodel.ID     = Guid.NewGuid().ToString("N").ToUpper();
                                    usermodel.OpenID = username;
                                    usermodel.RoomID = strRoomID;
                                    usermodel.IsDel  = 0;
                                    usermodel.IsWin  = 0;
                                    userdal.AddChatUsers(usermodel);
                                }
                                if (msginfo.Trim() != null && msginfo.Trim() != "")
                                {
                                    msgmodel.ID       = Guid.NewGuid().ToString("N").ToUpper();
                                    msgmodel.UserID   = username;
                                    msgmodel.RoomID   = strRoomID;
                                    msgmodel.MsgType  = "text";
                                    msgmodel.MsgText  = msginfo;
                                    msgmodel.MsgState = 0;//1表示通过 0表示不通过
                                    msgmodel.IsDel    = 0;
                                    msgdal.AddChatMessage(msgmodel);
                                }
                            }
                            #endregion
                        }
                    }
                    else
                    {
                        #region  务号取上墙信息
                        if (userdal.ExistChatUser(strRoomID, openid))
                        {
                            //提示已经存在该用户
                            string userid = userdal.GetChatUserValueByOpenID("ID", openid, strRoomID).ToString();
                            msgmodel.ID       = Guid.NewGuid().ToString("N").ToUpper();
                            msgmodel.UserID   = userid;
                            msgmodel.RoomID   = strRoomID;
                            msgmodel.MsgType  = "text";
                            msgmodel.MsgText  = msgcontent;
                            msgmodel.MsgState = 0;//1表示通过 0表示不通过
                            msgmodel.IsDel    = 0;
                            msgdal.AddChatMessage(msgmodel);
                        }
                        #endregion
                    }
                }
                else if (msgType.ToLower() == "image")
                {
                    #region  务号取上墙信息
                    if (userdal.ExistChatUser(strRoomID, openid))
                    {
                        //提示已经存在该用户
                        string userid = userdal.GetChatUserValueByOpenID("ID", openid, strRoomID).ToString();
                        msgmodel.ID       = Guid.NewGuid().ToString("N").ToUpper();
                        msgmodel.UserID   = userid;
                        msgmodel.RoomID   = strRoomID;
                        msgmodel.MsgType  = "image";
                        msgmodel.MsgText  = msgcontent;
                        msgmodel.MsgState = 0;//1表示通过 0表示不通过
                        msgmodel.IsDel    = 0;
                        msgdal.AddChatMessage(msgmodel);
                    }
                    #endregion
                }
                #endregion
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取用户OpenID
        /// </summary>
        void GetUserOpenID()
        {
            if (null == Request.QueryString["state"])
            {
                //return;
            }
            else
            {
                strSiteCode            = Common.Common.NoHtml(Request.QueryString["state"].ToString());
                Session["strSiteCode"] = strSiteCode;
            }
            string code = Request.QueryString["code"] as string;

            if (!string.IsNullOrEmpty(code))
            {
                WXConfigDAL           dal      = new WXConfigDAL();
                Model.WeiXin.WXConfig wxConfig = dal.GetWXConfigBySiteCode(strSiteCode);
                if (wxConfig != null)
                {
                    WeiXinCore.Models.WeiXinConfig weixinConfig = new WeiXinCore.Models.WeiXinConfig()
                    {
                        ID        = wxConfig.WXID,
                        Name      = wxConfig.WXName,
                        Token     = wxConfig.WXToken,
                        AppId     = wxConfig.WXAppID,
                        AppSecret = wxConfig.WXAppSecret
                    };
                    WeiXinCore.WeiXin weixin            = new WeiXinCore.WeiXin(weixinConfig);
                    Oauth2AccessToken oauth2AccessToken = weixin.GetOauth2AccessToken(code);
                    if (oauth2AccessToken != null)
                    {
                        strOpenID = oauth2AccessToken.OpenID;
                    }
                    UserInfo userinfo = weixin.GetUserInfo(strOpenID);
                    if (userinfo != null)
                    {
                        regNickName = userinfo.NickName;
                        regSex      = userinfo.Sex;
                        regHeadImg  = userinfo.Headimgurl;
                    }
                }
                else
                {
                    strOpenID = code;
                }
            }
            if (strOpenID == null || strOpenID == "")
            {
                if (Session["customerID"] != null && Session["customerID"].ToString() != "")
                {
                    MSCustomersDAL CustomerDal = new MSCustomersDAL();
                    try
                    {
                        strOpenID = CustomerDal.GetCustomerValueByID("OpenID", Session["customerID"].ToString()).ToString();
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            if (strOpenID != null && strOpenID != "")
            {
                Session["OpenID"] = strOpenID;
            }
        }