/// <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 } }
/// <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; } }