Пример #1
0
        /// <summary>
        /// 设置微信监控消息
        /// </summary>
        /// <param name="user"></param>
        /// <param name="msgSendUser"></param>
        /// <param name="nickName"></param>
        /// <param name="content"></param>
        public void SetWxMessageData(WXUser user, string msgSendUser, string nickName, string content, byte[] msgImageData)
        {
            WxMessageBodyModel msg = new WxMessageBodyModel();

            if (!wxMessageData.Exists(item => { return(item.MsgSendUser == msgSendUser && item.MsgUserName == user.UserName); }))
            {
                msg = new WxMessageBodyModel()
                {
                    MsgSendUser          = msgSendUser,
                    MsgShowName          = user.ShowName,
                    MsgText              = content,
                    MsgTime              = DateTime.Now,
                    NotReadCount         = 1,
                    MsgUserName          = user.UserName,
                    MsgNickName          = nickName,
                    MsgStatus            = "未回复",
                    MsgImageBase64String = msgImageData != null?Convert.ToBase64String(msgImageData) : null
                };
                wxMessageData.Add(msg);
            }
            else
            {
                wxMessageData.ForEach(data =>
                {
                    if (data.MsgSendUser == msgSendUser && data.MsgUserName == user.UserName)
                    {
                        data.MsgTime              = DateTime.Now;
                        data.MsgText              = content;
                        data.NotReadCount        += 1;
                        data.MsgStatus            = "未回复";
                        data.MsgImageBase64String = msgImageData != null ? Convert.ToBase64String(msgImageData) : null;
                    }
                });

                msg = wxMessageData.Find(m =>
                {
                    return(m.MsgSendUser == msgSendUser && m.MsgUserName == user.UserName);
                });
            }
            if (msg != null)
            {
                SetDataContentView(msg);
            }
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        private void SetDataContentView(WxMessageBodyModel data)
        {
            if (dataContent.InvokeRequired)
            {
                this.dataContent.Invoke(new Action <WxMessageBodyModel>(SetDataContentView), new object[] { data });
            }
            else
            {
                if (mainForm.useredit == null || mainForm.useredit.isHide || (mainForm.useredit.toUserName != data.MsgUserName && mainForm.useredit.toNickName != data.MsgNickName))
                {
                    foreach (DataGridViewRow row in dgvWeChatList.Rows)
                    {
                        if (row.Cells["UserName"].Value.ToString().Equals(data.MsgUserName))
                        {
                            string _MessageReadStatus = row.Cells["MessageReadStatus"].Value.ToString();
                            if (!string.IsNullOrEmpty(_MessageReadStatus))
                            {
                                row.Cells["MessageReadStatus"].Value = Convert.ToInt32(_MessageReadStatus) + 1;
                                break;
                            }
                            else
                            {
                                row.Cells["MessageReadStatus"].Value = 1;
                                break;
                            }
                        }
                    }
                }

                UserEditControl ed     = new UserEditControl(mainForm, this);
                string          base64 = mainForm.wxlogin.GetIcon(data.MsgSendUser);
                if (!string.IsNullOrEmpty(base64))
                {
                    base64 = "data:image/jpg;base64," + base64;
                }
                string html = string.Empty;
                if (string.IsNullOrEmpty(data.MsgImageBase64String))
                {
                    html = ed.GetReceiveMsgHtml(data.MsgShowName, data.MsgNickName, data.MsgText, data.MsgTime.ToString("yyyy-MM-dd HH:mm"), base64);
                }
                else
                {
                    html = ed.GetReceiveMsgHtml(data.MsgShowName, data.MsgNickName, data.MsgText, data.MsgTime.ToString("yyyy-MM-dd HH:mm"), base64, "data:image/jpg;base64," + data.MsgImageBase64String);
                }

                ed.writeCacheData(data.MsgShowName, data.MsgNickName, html);

                if (string.IsNullOrEmpty(CurrentSelectedWeChat) || data.MsgUserName.Equals(CurrentSelectedWeChat))
                {
                    bool result = false;
                    //合并相同用户消息
                    foreach (DataGridViewRow item in dataContent.Rows)
                    {
                        if (item.Cells["MsgSendUser"].Value.ToString().Equals(data.MsgSendUser) && item.Cells["MsgUserName"].Value.ToString().Equals(data.MsgUserName))
                        {
                            result = true;
                            item.Cells["MsgContent"].Value = data.MsgText.Replace("<br/>", "\r\n");
                            item.Cells["MsgText"].Value    = data.MsgText;
                            item.Cells["MsgTime"].Value    = data.MsgTime.ToString("dd日 HH:mm");
                            if (mainForm.useredit != null && mainForm.useredit.toUserName == data.MsgUserName && mainForm.useredit.toNickName == data.MsgNickName && !mainForm.useredit.isHide)
                            {
                                item.Cells["NotReadCount"].Value = "0";
                                wxMessageData.ForEach(d =>
                                {
                                    if (d.MsgSendUser == data.MsgSendUser && d.MsgUserName == data.MsgUserName)
                                    {
                                        data.NotReadCount = 0;
                                    }
                                });
                            }
                            else
                            {
                                item.Cells["NotReadCount"].Value = data.NotReadCount;
                                if (data.NotReadCount > 0)
                                {
                                    item.Cells["NotReadCount"].Style.ForeColor = Color.Red;
                                }
                            }
                            item.Cells["MsgStatus"].Value = data.MsgStatus;
                            break;
                        }
                    }
                    if (!result)
                    {
                        int i = dataContent.Rows.Count;
                        dataContent.Rows.Add();
                        ++i;
                        dataContent.Rows[i - 1].Cells["MsgContent"].Value   = data.MsgText.Replace("<br/>", "\r\n");
                        dataContent.Rows[i - 1].Cells["MsgUserName"].Value  = data.MsgUserName;
                        dataContent.Rows[i - 1].Cells["MsgNickName"].Value  = data.MsgNickName;
                        dataContent.Rows[i - 1].Cells["MsgText"].Value      = data.MsgText;
                        dataContent.Rows[i - 1].Cells["MsgSendUser"].Value  = data.MsgSendUser;
                        dataContent.Rows[i - 1].Cells["MsgShowName"].Value  = data.MsgShowName;
                        dataContent.Rows[i - 1].Cells["NotReadCount"].Value = data.NotReadCount;
                        dataContent.Rows[i - 1].Cells["MsgStatus"].Value    = data.MsgStatus;
                        dataContent.Rows[i - 1].Cells["MsgTime"].Value      = data.MsgTime.ToString("dd日 HH:mm");
                        if (data.NotReadCount > 0)
                        {
                            dataContent.Rows[i - 1].Cells["NotReadCount"].Style.ForeColor = Color.Red;
                        }
                        else
                        {
                            dataContent.Rows[i - 1].Cells["NotReadCount"].Style.ForeColor = ConstConfig.DataGridViewRowForeColor;
                        }

                        if (i % 2 == 0)
                        {
                            dataContent.Rows[i - 1].DefaultCellStyle.BackColor          = ConstConfig.DataGridViewEvenRowBackColor;
                            dataContent.Rows[i - 1].DefaultCellStyle.SelectionBackColor = ConstConfig.DataGridViewEvenRowBackColor;
                        }
                        else
                        {
                            dataContent.Rows[i - 1].DefaultCellStyle.BackColor          = ConstConfig.DataGridViewOddRowBackColor;
                            dataContent.Rows[i - 1].DefaultCellStyle.SelectionBackColor = ConstConfig.DataGridViewOddRowBackColor;
                        }
                        dataContent.Rows[i - 1].Height = ConstConfig.DataGridViewRowHeight;
                        dataContent.Rows[i - 1].DefaultCellStyle.ForeColor = ConstConfig.DataGridViewRowForeColor;
                    }
                }
                if (mainForm.useredit != null && mainForm.useredit.toUserName == data.MsgUserName && mainForm.useredit.toNickName == data.MsgNickName)
                {
                    if (string.IsNullOrEmpty(data.MsgImageBase64String))
                    {
                        mainForm.useredit.ShowReceiveMsg(data.MsgNickName, data.MsgText, data.MsgTime.ToString("yyyy-MM-dd HH:mm"), base64);
                    }
                    else
                    {
                        mainForm.useredit.ShowReceiveMsg(data.MsgNickName, data.MsgText, data.MsgTime.ToString("yyyy-MM-dd HH:mm"), base64, "data:image/jpg;base64," + data.MsgImageBase64String);
                    }
                }
            }
        }