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