public void Receive()
        {
            //获取消息列表,并原样输出
            string sync_flag = frmMainForm.wxs.WxSyncCheck();//同步检查

            if (sync_flag == null)
            {
                return;
            }

            JObject sync_result = frmMainForm.wxs.WxSync();//进行同步

            if (sync_result == null)
            {
                return;
            }

            string     conn = ConfigurationManager.AppSettings["conn"].ToString();
            DataHelper data = new DataHelper(conn);
            //保存微信群联系人
            //1,获取群信息
            //只有人员有变动,才会有值,才能获取到uin
            JToken contactList    = sync_result["ModContactList"];
            string qUserName      = "";
            string qNickName      = "";
            string qChatRoomOwner = "";

            if (contactList != null)
            {
                foreach (JObject qun in contactList)
                {
                    if (qun["UserName"].ToString() != frmMainForm.CurrentQun)
                    {
                        continue;
                    }
                    qUserName      = qun["UserName"].ToString();
                    qNickName      = qun["NickName"].ToString();
                    qChatRoomOwner = qun["ChatRoomOwner"].ToString();

                    JToken memberList = qun["MemberList"];
                    foreach (JObject member in memberList)
                    {
                        string uin       = member["Uin"].ToString();
                        string userName  = member["UserName"].ToString();
                        string nickName  = member["NickName"].ToString();
                        string pyQuanPin = member["PYQuanPin"].ToString();
                        string remark    = member["RemarkPYQuanPin"].ToString();

                        List <KeyValuePair <string, object> > pkList = new List <KeyValuePair <string, object> >();
                        pkList.Add(new KeyValuePair <string, object>("Uin", uin));
                        Contact modelOrgin = data.First <Contact>(pkList, "");
                        if (modelOrgin == null)
                        {
                            Contact model = new Contact();
                            model.Uuid      = Guid.NewGuid().ToString();
                            model.NickName  = nickName;
                            model.Uin       = uin;
                            model.UserName  = userName;
                            model.QuanPin   = pyQuanPin;
                            model.QuserName = qUserName;
                            model.QnickName = qNickName;
                            model.Remark    = remark;
                            data.Insert <Contact>(model, "");
                        }
                        else
                        {
                            modelOrgin.NickName  = nickName;
                            modelOrgin.UserName  = userName;
                            modelOrgin.QuanPin   = pyQuanPin;
                            modelOrgin.QuserName = qUserName;
                            modelOrgin.QnickName = qNickName;
                            modelOrgin.Remark    = remark;
                            data.Update <Contact>(modelOrgin, pkList, "");
                        }
                    }
                }
            }

            //获取群里所有联系人,无uuin,根据昵称来更新userName和uin
            string  qun1   = frmMainForm.wxs.GetQun(frmMainForm.CurrentQun);
            JObject qunObj = JsonConvert.DeserializeObject(qun1) as JObject;

            if (qunObj["MemberCount"] != null && qunObj["MemberCount"].ToString() != "0")
            {
                foreach (JObject member in qunObj["MemberList"])
                {
                    List <KeyValuePair <string, object> > pkList2 = new List <KeyValuePair <string, object> >();
                    pkList2.Add(new KeyValuePair <string, object>("NickName", member["NickName"].ToString()));
                    Contact modelOne = data.First <Contact>(pkList2, "");
                    if (modelOne != null)
                    {
                        modelOne.UserName = member["UserName"].ToString();
                        List <KeyValuePair <string, object> > pkList3 = new List <KeyValuePair <string, object> >();
                        pkList3.Add(new KeyValuePair <string, object>("Uin", modelOne.Uin));
                        data.Update <Contact>(modelOne, pkList3, "");
                    }
                }
            }


            //获取到消息
            if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0")
            {
                foreach (JObject m in sync_result["AddMsgList"])
                {
                    if (m["FromUserName"].ToString() != frmMainForm.CurrentQun)
                    {
                        continue;
                    }

                    string[] content = m["Content"].ToString().Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                    if (content != null && content.Length == 2)
                    {
                        OriginMsg msg = new OriginMsg();
                        msg.MsgId = m["MsgId"].ToString();
                        string userName = content[0].Replace(":", "");
                        msg.FromUserName = userName;
                        msg.ToUserName   = m["ToUserName"].ToString();
                        msg.MsgType      = m["MsgType"].ToString();
                        msg.Content      = content[1];
                        msg.Status       = m["Status"].ToString();
                        msg.ImgStatus    = m["ImgStatus"].ToString();
                        msg.CreateTime   = m["CreateTime"].ToString();
                        msg.NewMsgId     = m["NewMsgId"].ToString();
                        msg.IsSucc       = "0";
                        List <KeyValuePair <string, object> > pkList3 = new List <KeyValuePair <string, object> >();
                        pkList3.Add(new KeyValuePair <string, object>("UserName", userName));
                        Contact model3 = data.First <Contact>(pkList3, "");
                        if (model3 != null)
                        {
                            msg.FromNickName = model3.NickName;
                            msg.FromUin      = model3.Uin;
                            msg.QnickName    = qNickName;
                            data.Insert <OriginMsg>(msg, "");
                        }
                        else
                        {
                            Log.WriteLogByDate("无法获取到uin,读取到的消息不保存");
                        }
                    }
                }
            }
        }
Exemple #2
0
        public void NewMethod()
        {
            JObject sync_result = frmMainForm.wxs.WxSync();//进行同步

            if (sync_result == null)
            {
                return;
            }
            string     conn = ConfigurationManager.AppSettings["conn"].ToString();
            DataHelper data = new DataHelper(conn);
            //保存微信群联系人
            //1,获取群信息
            //只有人员有变动,才会有值,才能获取到uin
            JToken contactList    = sync_result["ModContactList"];
            string qUserName      = "";
            string qNickName      = "";
            string qChatRoomOwner = "";

            if (contactList != null)
            {
                foreach (JObject qun in contactList)
                {
                    if (qun["UserName"].ToString() != frmMainForm.CurrentQun)
                    {
                        continue;
                    }
                    qUserName      = qun["UserName"].ToString();
                    qNickName      = qun["NickName"].ToString().ClearHtml();
                    qChatRoomOwner = qun["ChatRoomOwner"].ToString();

                    JToken memberList = qun["MemberList"];
                    foreach (JObject member in memberList)
                    {
                        string uin       = member["Uin"].ToString();
                        string userName  = member["UserName"].ToString();
                        string nickName  = member["NickName"].ToString().ClearHtml();
                        string pyQuanPin = member["PYQuanPin"].ToString();
                        string remark    = member["RemarkPYQuanPin"].ToString();

                        List <KeyValuePair <string, object> > pkList = new List <KeyValuePair <string, object> >();
                        pkList.Add(new KeyValuePair <string, object>("Uin", uin));
                        Contact modelOrgin = data.First <Contact>(pkList, "");
                        if (modelOrgin == null)
                        {
                            Contact model = new Contact();
                            model.Uuid      = Guid.NewGuid().ToString();
                            model.NickName  = nickName;
                            model.Uin       = uin;
                            model.UserName  = userName;
                            model.QuanPin   = pyQuanPin;
                            model.QuserName = qUserName;
                            model.QnickName = qNickName;
                            model.Remark    = remark;
                            data.Insert <Contact>(model, "");
                        }
                        else
                        {
                            modelOrgin.NickName  = nickName;
                            modelOrgin.UserName  = userName;
                            modelOrgin.QuanPin   = pyQuanPin;
                            modelOrgin.QuserName = qUserName;
                            modelOrgin.QnickName = qNickName;
                            modelOrgin.Remark    = remark;
                            data.Update <Contact>(modelOrgin, pkList, "");
                        }

                        //根据userName更新nickName
                        List <KeyValuePair <string, object> > pkList2 = new List <KeyValuePair <string, object> >();
                        pkList2.Add(new KeyValuePair <string, object>("UserName", userName));
                        Contact modelOrgin2 = data.First <Contact>(pkList2, "");
                        if (modelOrgin2 != null)
                        {
                            modelOrgin2.NickName = nickName;
                            data.Update <Contact>(modelOrgin2, pkList2, "");
                        }
                    }
                }
            }

            //获取群里所有联系人,无uuin,根据昵称来更新userName和uin
            string qun1 = frmMainForm.wxs.GetQun(frmMainForm.CurrentQun);

            //Log.WriteLogByDate("群成员列表json:"+qun1);

            if (!string.IsNullOrEmpty(qun1))
            {
                JObject qunObj = JsonConvert.DeserializeObject(qun1) as JObject;

                if (qunObj["MemberList"] != null)
                {
                    foreach (JObject member in qunObj["MemberList"])
                    {
                        List <KeyValuePair <string, object> > pkList2 = new List <KeyValuePair <string, object> >();
                        pkList2.Add(new KeyValuePair <string, object>("NickName", member["NickName"].ToString().ClearHtml()));
                        Contact modelOne = data.First <Contact>(pkList2, "");
                        if (modelOne != null)
                        {
                            modelOne.UserName = member["UserName"].ToString();
                            List <KeyValuePair <string, object> > pkList3 = new List <KeyValuePair <string, object> >();
                            pkList3.Add(new KeyValuePair <string, object>("Uin", modelOne.Uin));
                            data.Update <Contact>(modelOne, pkList3, "");
                        }
                    }
                }
            }

            Log.WriteLogByDate("开始更新本地昵称:qunObj[\"ContactList\"][0][\"MemberList\"]");
            if (!string.IsNullOrEmpty(qun1))//更新本地昵称
            {
                JObject qunObj = JsonConvert.DeserializeObject(qun1) as JObject;

                //if (qunObj["MemberList"] != null)
                //{
                //    foreach (JObject member in qunObj["MemberList"])
                //    {
                //        List<KeyValuePair<string, object>> pkList2 = new List<KeyValuePair<string, object>>();
                //        pkList2.Add(new KeyValuePair<string, object>("UserName", member["UserName"].ToString()));
                //        Contact modelOne = data.First<Contact>(pkList2, "");
                //        if (modelOne != null)
                //        {
                //            modelOne.NickName = member["NickName"].ToString().ClearHtml();
                //            List<KeyValuePair<string, object>> pkList3 = new List<KeyValuePair<string, object>>();
                //            pkList3.Add(new KeyValuePair<string, object>("UserName", modelOne.UserName));
                //            data.Update<Contact>(modelOne, pkList3, "");
                //        }
                //    }
                //}
                if (qunObj["ContactList"][0]["MemberList"] != null)
                {
                    foreach (JObject member in qunObj["ContactList"][0]["MemberList"])
                    {
                        List <KeyValuePair <string, object> > pkList2 = new List <KeyValuePair <string, object> >();
                        pkList2.Add(new KeyValuePair <string, object>("UserName", member["UserName"].ToString()));
                        Contact modelOne = data.First <Contact>(pkList2, "");
                        if (modelOne != null)
                        {
                            modelOne.NickName = member["NickName"].ToString().ClearHtml();
                            List <KeyValuePair <string, object> > pkList3 = new List <KeyValuePair <string, object> >();
                            pkList3.Add(new KeyValuePair <string, object>("UUID", modelOne.Uuid));
                            data.Update <Contact>(modelOne, pkList3, "");

                            //更新contactScore的昵称
                            List <KeyValuePair <string, object> > pkList4 = new List <KeyValuePair <string, object> >();
                            pkList4.Add(new KeyValuePair <string, object>("UIN", modelOne.Uin));
                            ContactScore score = data.First <ContactScore>(pkList4, "");
                            //score.NickName = modelOne.NickName;
                            //List<KeyValuePair<string, object>> pkList5 = new List<KeyValuePair<string, object>>();
                            //pkList5.Add(new KeyValuePair<string, object>("UUID", score.Uuid));
                            //data.Update<ContactScore>(score, pkList5, "");
                            if (score != null)
                            {
                                data.ExecuteSql(string.Format("update contactScore set nickname='{0}' where uuid='{1}'", modelOne.NickName, score.Uuid));
                            }
                        }
                    }
                }
            }

            Log.WriteLogByDate("开始保存消息");
            //获取到消息
            if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0")
            {
                // Log.WriteLogByDate("获取消息:");

                foreach (JObject m in sync_result["AddMsgList"])
                {
                    if (m["FromUserName"].ToString() != frmMainForm.CurrentQun)
                    {
                        continue;
                    }

                    string[] content = m["Content"].ToString().Split(new string[] { "<br/>" }, StringSplitOptions.RemoveEmptyEntries);
                    if (content != null && content.Length == 2)
                    {
                        //Log.WriteLogByDate("获取消息:"+ content[1]);

                        OriginMsg msg = new OriginMsg();
                        msg.MsgId = m["MsgId"].ToString() + m["CreateTime"].ToString();//用msgId和createTime
                        string userName = content[0].Replace(":", "");
                        msg.FromUserName = userName;
                        msg.ToUserName   = m["ToUserName"].ToString();
                        msg.MsgType      = m["MsgType"].ToString();
                        msg.Content      = content[1];
                        msg.Status       = m["Status"].ToString();
                        msg.ImgStatus    = m["ImgStatus"].ToString();
                        msg.CreateTime   = m["CreateTime"].ToString();
                        msg.NewMsgId     = m["NewMsgId"].ToString();
                        msg.IsSucc       = "0";
                        List <KeyValuePair <string, object> > pkList3 = new List <KeyValuePair <string, object> >();
                        pkList3.Add(new KeyValuePair <string, object>("UserName", userName));
                        Contact model3 = data.First <Contact>(pkList3, "");
                        if (model3 != null)
                        {
                            msg.FromNickName = model3.NickName;
                            msg.FromUin      = model3.Uin;
                            msg.QnickName    = qNickName;
                            //插入消息前检查
                            List <KeyValuePair <string, object> > pkList4 = new List <KeyValuePair <string, object> >();
                            pkList4.Add(new KeyValuePair <string, object>("MsgId", msg.MsgId));

                            OriginMsg orginMsg2 = data.First <OriginMsg>(pkList4, "");
                            if (orginMsg2 == null)
                            {
                                if (msg.FromUin != "0")
                                {
                                    //简单检查指令
                                    if (OrderFirstCheck.Instance.CheckOne(msg.Content))
                                    {
                                        data.Insert <OriginMsg>(msg, "");
                                    }
                                    else
                                    {
                                        //检查是否封盘
                                        //获取开奖信息,并将开奖信息保存到数据库

                                        if (frmMainForm.IsComplete && frmMainForm.IsJieDan)
                                        {
                                            //简单检查指令是否存在关键字,
                                            foreach (string item in OrderKey)
                                            {
                                                if (msg.Content.Contains(item))
                                                {
                                                    data.Insert <OriginMsg>(msg, "");
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            //封盘阶段
                                            WXMsg model = new WXMsg()
                                            {
                                                To = frmMainForm.CurrentQun, From = frmMainForm.CurrentWX.UserName, Msg = "正在封盘"
                                            };
                                            frmMainForm.CurrentWX.SendMsg(model, false);
                                            continue;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                Log.WriteLogByDate("OriginMsg消息重复:msgID=" + msg.MsgId);
                            }
                        }
                        else
                        {
                            Log.WriteLogByDate("无法获取到uin,读取到的消息不保存");
                        }
                    }
                }
            }
        }