using Api.Framework; using Api.Framework.Cps; using Api.Framework.Enums; using Api.Framework.Model; using Api.Framework.SDK; using Api.Framework.Tools; using Chat.Framework.WXSdk; using Chat.Framework.WXSdk.Implement; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using UI.Framework.Controls; using UI.Framework.Forms; using Weixin.CircleTools; using Weixin.CircleTools.Entitys; using Weixin.CircleTools.Properties; using static Api.Framework.ApiClient; using static CircleFriendsTools.Enums; using ChooseType = CircleFriendsTools.Enums.ChooseType; namespace CircleFriendsTools { public partial class MainForm : BaseForm { public MainForm() { InitializeComponent(); this.Text = Resources.MainFormTitle; } public void CloseForm() { try { if (!this.IsDisposed) { this.Invoke(new Action(delegate { this.Close(); this.Dispose(); })); } } catch (Exception ex) { ShowError(ex); } } private void MainForm_Load(object sender, EventArgs e) { try { #region 任务列表展示 pageControl1.Bind((page, size) => { var session = ApiClient.GetSession(); var parm = session.NewParamMap(); parm.setPageParamters(page, size); var result = session.FindPage("select * from fl_plugin_circletools_taskinfos", parm); return new PageControl.SerchResult() { Result = result.DataList, Total = result.Total }; }, gridControl1, 40, true, true); label1.Visible = gridView1.RowCount == 0; #endregion #region 控件赋值 foreach (TransmitStyleType item in Enum.GetValues(typeof(TransmitStyleType))) { this.comboBoxEdit1.Properties.Items.Add(item.ToString()); } this.comboBoxEdit1.SelectedIndex = (int)Class1.Config.TransmitStyle; this.textEdit4.Text = Class1.Config.LocationContent; this.textEdit5.Text = Class1.Config.GatherPoiCrowd; this.textEdit1.Text = Class1.Config.MonitorCrowd; this.numericUpDown1.Value = Class1.Config.MonitorIntervalTime; this.textEdit2.Text = Class1.Config.CustomWebApi; this.buttonCheck2.Checked = Class1.Config.AutoPraise; this.numericUpDown2.Value = Class1.Config.AutoPraiseInterval; this.numericUpDown3.Value = Class1.Config.CustomWebApiIntervalTime; this.buttonCheck1.Checked = linkLabel3.Enabled = Class1.Config.AutoTurn; this.checkBox1.Checked = Class1.Config.Turn_Obstinate; this.memoEdit6.Text = Class1.Config.AppendComment; var adzone = ApiClient.GetSession().FindAdzoneInfos().FirstOrDefault(f => f.custom_type == Resources.NonautomaticSoftwareType && f.alliance_id == (int)CpsType.阿里妈妈); if (adzone != null) textBox1.Text = adzone.adzone_name; #endregion #region 将enum的值加载到列表中 修改的将勾选 var clients = Chat.Framework.ChatClient.WXClient; foreach (var client in clients.Values) { if ((client.WeixinType == WeixinType.Grpc微信 || client.WeixinType == WeixinType.Hook微信) && client.Status == WxStatus.在线) { if (Class1.Config.send_usernames.Select(f => f.Trim()).Contains(client.WeixinHao.Trim())) checkedComboBoxEdit_UsernameType.Properties.Items.Add(client.WeixinHao, client.User.Nick.ToString(), CheckState.Checked, true); else checkedComboBoxEdit_UsernameType.Properties.Items.Add(client.WeixinHao, client.User.Nick.ToString(), CheckState.Unchecked, true); if (Class1.Config.manually_send_usernames.Contains(client.WeixinHao.Trim())) checkedComboBoxEdit1.Properties.Items.Add(client.WeixinHao, client.User.Nick.ToString(), CheckState.Checked, true); else checkedComboBoxEdit1.Properties.Items.Add(client.WeixinHao, client.User.Nick.ToString(), CheckState.Unchecked, true); if (Class1.Config.transpond_send_usernames.Contains(client.WeixinHao.Trim())) checkedComboBoxEdit2.Properties.Items.Add(client.WeixinHao, client.User.Nick.ToString(), CheckState.Checked, true); else checkedComboBoxEdit2.Properties.Items.Add(client.WeixinHao, client.User.Nick.ToString(), CheckState.Unchecked, true); } } #endregion comboBox1.SelectedIndex = (int)Class1.Config.qrImage; ShowContentModel(); } catch (Exception ex) { ShowError(ex); } } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { try { if (!string.IsNullOrWhiteSpace(textEdit2.Text) && !Regex.IsMatch(textEdit2.Text.Replace("&", "&"), CsharpHttpHelper.HttpExtend.REGEX_GETURL, RegexOptions.IgnoreCase)) { if (MessageBox.Show("系统监听的链接不合法,是否继续保存?", "系统提示", MessageBoxButtons.YesNo) == DialogResult.No) e.Cancel = true; else textEdit2.Text = string.Empty; } Class1.Config.send_usernames = checkedComboBoxEdit_UsernameType.Properties.GetCheckedItems().ToString().Replace(", ", ",").Replace(" ,", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList(); Class1.Config.manually_send_usernames = checkedComboBoxEdit1.Properties.GetCheckedItems().ToString().Replace(", ", ",").Replace(" ,", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList(); Class1.Config.transpond_send_usernames = checkedComboBoxEdit2.Properties.GetCheckedItems().ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList(); if (!e.Cancel) { tokenSource.Cancel(); Class1.Config.TransmitStyle = (TransmitStyleType)Enum.ToObject(typeof(TransmitStyleType), comboBoxEdit1.SelectedIndex); Class1.Config.LocationContent = textEdit4.Text; Class1.Config.GatherPoiCrowd = textEdit5.Text; Class1.Config.MonitorCrowd = textEdit1.Text.Trim(); Class1.Config.MonitorIntervalTime = (int)numericUpDown1.Value; Class1.Config.CustomWebApi = textEdit2.Text.Trim(); Class1.Config.AutoPraise = buttonCheck2.Checked; Class1.Config.AutoPraiseInterval = (int)numericUpDown2.Value; Class1.Config.CustomWebApiIntervalTime = (int)numericUpDown3.Value; Class1.Config.AutoTurn = buttonCheck1.Checked; Class1.Config.Turn_Obstinate = checkBox1.Checked; Class1.Config.qrImage = (QrImageType)comboBox1.SelectedIndex; Class1.Config.AppendComment = memoEdit6.Text; Api.Framework.Tools.Util.Save(Class1.Config); //保存配置文件 } } catch (Exception ex) { ShowError(ex); e.Cancel = true; } } /// /// 检测新账号 /// /// /// private void simpleButton1_Click(object sender, EventArgs e) { try { if (!string.IsNullOrWhiteSpace(textEdit1.Text)) { var form = new XtraForm1(textEdit1.Text.Trim()); form.ShowDialog(); } else ShowError("用户账号为空,不支持检测"); } catch (Exception ex) { ShowError(ex); } } private CancellationTokenSource tokenSource = new CancellationTokenSource(); private void simpleButton2_Click(object sender, EventArgs e) { this.simpleButton2.Enabled = false; try { if (string.IsNullOrWhiteSpace(checkedComboBoxEdit1.Text)) throw new Exception("选择要发送的微信"); if (!string.IsNullOrWhiteSpace(memoEdit1.Text)) { if (!Regex.IsMatch(memoEdit1.Text, @"\[图片=([^]]*)\]")) { ShowError($"推送内容中至少添加一张图片."); return; } var clients = Chat.Framework.ChatClient.WXClient; var usernames = checkedComboBoxEdit1.Properties.GetCheckedItems().ToString().Replace(", ", ",").Replace(" ,", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList(); var t1 = Task.Run(() => { Parallel.ForEach(clients.Values, item => { try { if ((item.WeixinType == WeixinType.Grpc微信 || item.WeixinType == WeixinType.Hook微信) && item.Status == WxStatus.在线 && usernames.Contains(item.WeixinHao.Trim())) { var json = item.SendCircle(memoEdit1.Text); if (!string.IsNullOrWhiteSpace(memoEdit2.Text)) { var reg = Regex.Match(json, @"(?\d{15,})");//获取返回的朋友圈id if (reg.Success) item.SendCircleComment(item.User.Username, reg.Groups["id"].Value, memoEdit2.Text.Trim()); } } } catch (Exception ex) { EventClient.OnEvent(this, $"{ex.Message}"); } }); }, tokenSource.Token); t1.ContinueWith(f => { this.Invoke(new Action(() => { this.simpleButton2.Enabled = true; if (!this.IsDisposed) ShowSuccess("推送发送成功"); })); }, tokenSource.Token); } else if (!this.IsDisposed) ShowError($"推送内容不能为空."); } catch (Exception ex) { this.simpleButton2.Enabled = true; if (!this.IsDisposed) ShowError(ex); } } private void 增加任务ToolStripMenuItem_Click(object sender, EventArgs e) { try { var sendTask = new SendTaskForm(); if (sendTask.ShowDialog() == DialogResult.OK) { pageControl1.GotoPage(1); label1.Visible = gridView1.RowCount == 0; ApiClient.GetSession().FindTaskInfosTempGroups(true); } } catch (Exception ex) { ShowError(ex); } } private void 修改选中ToolStripMenuItem_Click(object sender, EventArgs e) { try { var selectRows = gridView1.GetSelectedRows(); if (selectRows.Length > 0) { var id = int.Parse(gridView1.GetRowCellValue(selectRows[0], "id").ToString()); var task_name = gridView1.GetRowCellValue(selectRows[0], "task_name").ToString(); var task_working_day = gridView1.GetRowCellValue(selectRows[0], "task_working_day").ToString(); var task_time = gridView1.GetRowCellValue(selectRows[0], "task_time").ToString(); var task_sendtext = gridView1.GetRowCellValue(selectRows[0], "task_sendtext").ToString(); var task_comment = string.Empty; if (gridView1.GetRowCellValue(selectRows[0], "task_comment") != null) task_comment = (gridView1.GetRowCellValue(selectRows[0], "task_comment").ToString()); var is_circulate = (gridView1.GetRowCellValue(selectRows[0], "is_circulate").ToString()); var robotnames = (gridView1.GetRowCellValue(selectRows[0], "robotnames").ToString()); var sendTask = new SendTaskForm(new fl_plugin_circletools_taskinfos() { id = id, task_name = task_name, task_working_day = task_working_day, task_time = task_time, task_sendtext = task_sendtext, is_circulate = is_circulate == "是" ? ChooseType.是 : ChooseType.否, task_comment = task_comment, robotnames = robotnames }); if (sendTask.ShowDialog() == DialogResult.OK) { pageControl1.GotoPage(1); label1.Visible = gridView1.RowCount == 0; ApiClient.GetSession().FindTaskInfosTempGroups(true); } } } catch (Exception ex) { ShowError(ex); } } private void 删除选中ToolStripMenuItem_Click(object sender, EventArgs e) { try { var selectRows = gridView1.GetSelectedRows(); if (selectRows.Length > 0) { var id = long.Parse(gridView1.GetRowCellValue(selectRows[0], "id").ToString()); var session = ApiClient.GetSession(); session.ExcuteSQL("delete from fl_plugin_circletools_taskinfos where id = @id", new { id = id }); pageControl1.GotoPage(1); label1.Visible = gridView1.RowCount == 0; ApiClient.GetSession().FindTaskInfosTempGroups(true); } } catch (Exception ex) { ShowError(ex); } } private void simpleButton3_Click(object sender, EventArgs e) { try { var tgwForm = new SetTGWForm(); tgwForm.ShowDialog(); } catch (Exception ex) { ShowError(ex); } } private void buttonCheck1_Click(object sender, EventArgs e) { this.linkLabel3.Enabled = buttonCheck1.Checked; } private void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxEdit1.SelectedIndex == 1) labelControl15.Enabled = buttonCheck1.Checked = linkLabel3.Enabled = buttonCheck1.Enabled = true; else labelControl15.Enabled = buttonCheck1.Checked = linkLabel3.Enabled = buttonCheck1.Enabled = false; } private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { try { var tgwForm = new SetTGWForm(); tgwForm.ShowDialog(); var session = ApiClient.GetSession(); session.FindAdzoneInfos(true); } catch (Exception ex) { ShowError(ex); } } private void linkLabel4_MouseHover(object sender, EventArgs e) { toolTip_Text.AutoPopDelay = 10000; toolTip_Text.InitialDelay = 500; toolTip_Text.ReshowDelay = 500; toolTip_Text.ShowAlways = true; toolTip_Text.SetToolTip(this.linkLabel4, @"您可以从""发单群""、""选品网站"" 直接复制推广文案到此处即可"); } private void linkLabel6_MouseHover(object sender, EventArgs e) { toolTip_Pic.AutoPopDelay = 10000; toolTip_Pic.InitialDelay = 500; toolTip_Pic.ReshowDelay = 500; toolTip_Pic.ShowAlways = true; toolTip_Pic.SetToolTip(this.linkLabel6, @"不填写图片, 程序会自动检测默认图片。 填写图片后,程序会以提供的图片为准。"); } private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { try { var tgwObj = CpsClient.SelectTuiguangwei(CpsType.阿里妈妈); if (tgwObj != null) { var tgw = tgwObj as Tuiguangwei; var session = ApiClient.GetSession(); var adzone = session.FindAdzoneInfos().FirstOrDefault(f => f.alliance_id == (int)CpsType.阿里妈妈 && f.custom_type == Resources.NonautomaticSoftwareType); if (adzone != null)//数据库中存在的情况 { adzone.adzone_pid_cps_name = tgw.Member.username; adzone.adzone_pid = tgw.Pid; adzone.adzone_name = tgw.Name; session.SaveOrUpdate(adzone); } else { //session.BeginTransaction(); try { adzone = new fl_adzone_info() { custom_type = Resources.NonautomaticSoftwareType, //自定义类型 adzone_name = tgw.Name, //推广位名称 adzone_pid = tgw.Pid, //推广位pid adzone_pid_cps_name = tgw.Member.username, //推广位cps名称 alliance_id = (int)CpsType.阿里妈妈, //联盟id robot_id = 0, //机器人id group_id = string.Empty, //群id member_id = 0, //私人id is_download = false, //不下载 onoff = false //不禁用 }; session.SaveOrUpdate(adzone); if (0 == adzone.id) throw new Exception("对不起,推广位设置异常,请稍后重试!"); //else session.Commit(); } catch (Exception ex) { //session.Rollback(); ShowError(ex); } } textBox1.Text = adzone.adzone_name; session.FindAdzoneInfos(true); } } catch (Exception ex) { ShowError(ex); } } /// /// 保存一键发送的产品数据 /// Dictionary goodsDic = new Dictionary(); /// /// 加入产品待发送区 /// /// /// private void button1_Click(object sender, EventArgs e) { try { if (gridView2.RowCount >= 9) throw new Exception("最多添加9个产品"); if (string.IsNullOrWhiteSpace(memoEdit3.Text.Trim())) throw new Exception("请添加文案"); var adzone = ApiClient.GetSession().FindAdzoneInfos().FirstOrDefault(f => f.custom_type == Resources.NonautomaticSoftwareType && f.alliance_id == (int)CpsType.阿里妈妈); if (adzone == null) throw new Exception("请先设置推广位"); var tbAnalysis = new TBHelper.TbAnalysis(); var itemId = tbAnalysis.FindTbItemIdByStr(memoEdit3.Text); if (string.IsNullOrWhiteSpace(itemId)) throw new Exception("您发送的链接中未带宝贝信息!"); var date = DateTime.Now.ToString("yyyyMMdd"); if (Class1.Config.recordSendGoods.ContainsKey(date)) { if (Class1.Config.recordSendGoods[date].Contains(itemId)) throw new Exception("今天已经发送过该商品,以防重复系统予以提示!"); } var tb_cps = CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.阿里妈妈 && f.username == adzone.adzone_pid_cps_name); var api = CpsClient.CreateAlimamaRequest(tb_cps); if (api == null) throw new Exception("创建阿里妈妈API请求失败"); var activityId = string.Empty; var urls = CsharpHttpHelper.HttpExtend.RegexMatchesUrl(memoEdit3.Text); if (urls != null && urls.Count != 0) { foreach (var item in urls) { if (item.ToLower().Contains("uland.taobao")) { var reg = Regex.Match(item, @"activityId=(?<活动ID>[A-Za-z0-9]+)", RegexOptions.IgnoreCase); if (reg.Success) activityId = reg.Groups["活动ID"].Value; break; } } } AnalyzeGoods analyze = new AnalyzeGoods(); //goodsinfo.goods_id = itemId; var goodsinfo = analyze.FindGoodsInfoToItemId(itemId, adzone.adzone_pid_cps_name, adzone.adzone_pid); analyze.AnalysisText(memoEdit3.Text, goodsinfo); if (goodsinfo != null) { var coupon_url = goodsinfo.shopping_url + "&activityId=" + activityId; //检测优惠券的有效性 var coupon = api.CheckCoupon(coupon_url); //查到宝贝返利存在异常,直接提示没有返利 if (coupon == null || coupon.retStatus != 0) throw new Exception("该产品优惠券已经过期,请重新获取。"); var lastIndex = memoEdit3.Text.Trim().LastIndexOf(@" "); var describe = memoEdit3.Text.Substring(lastIndex + 4).Trim(); decimal final_price = 0; if (double.Parse(coupon.startFee) > goodsinfo.normal_price) final_price = (decimal)goodsinfo.normal_price; else final_price = ((decimal)goodsinfo.normal_price - decimal.Parse(coupon.amount)); var good = new { goods_name = goodsinfo.goods_name, price = goodsinfo.normal_price, final_price = final_price, rebate = final_price * ((decimal)goodsinfo.promotion_rate / 100m), rate = goodsinfo.promotion_rate + "%", pic = string.IsNullOrEmpty(textBox3.Text.Trim()) ? goodsinfo.goods_thumbnail_url : textBox3.Text.Trim(), coupon_discount = decimal.Parse(coupon.amount), itemid = goodsinfo.goods_id, describe = goodsinfo.goods_desc, coupon_url = coupon_url }; if (goodsDic.ContainsKey(goodsinfo.goods_name)) throw new Exception("对不起,该商品已存在"); goodsDic.Add(goodsinfo.goods_name, good); gridControl2.DataSource = goodsDic.Values.ToList(); label_num.Text = (int.Parse(label_num.Text) + 1).ToString(); memoEdit3.Text = textBox3.Text = string.Empty; } else throw new Exception("该商品无返利"); } catch (Exception ex) { ShowError(ex); } } /// /// 一键发单删除选中项 /// /// /// private void 删除选中ToolStripMenuItem1_Click(object sender, EventArgs e) { try { var selectRows = gridView2.GetSelectedRows(); if (selectRows.Length > 0) { var title = gridView2.GetRowCellValue(selectRows[0], "goods_name").ToString(); goodsDic.Remove(title); gridControl2.DataSource = goodsDic.Values.ToList(); } } catch (Exception ex) { ShowError(ex); } } private StringBuilder strb = new StringBuilder(); private void gridView3_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { try { var selectRow = gridView3.GetSelectedRows()[0]; var modelName = this.gridView3.GetRowCellValue(selectRow, "ModelName").ToString();//获取列的数据 var sendModel = Class1.Config.send_templates.FirstOrDefault(f => f.ModelName == modelName); if (sendModel != null) memoEdit4.Text = sendModel.Content; } catch (Exception ex) { ShowError(ex); } } /// /// 显示一键发送模板(刷新) /// private void ShowContentModel() { try { //var modelName = Class1.Config.send_templates.Select(f => f.ModelName).ToList(); //gridControl3.DataSource = modelName; List obj = new List(); foreach (var item in Class1.Config.send_templates) { obj.Add(new { ModelName = item.ModelName }); } gridControl3.DataSource = obj; } catch (Exception ex) { ShowError(ex); } } private void button4_Click(object sender, EventArgs e) { try { var form = new SetSendModelForm(); form.ShowDialog(); ShowContentModel(); } catch (Exception ex) { ShowError(ex); } } private async void simpleButton3_Click_1(object sender, EventArgs e) { simpleButton3.Enabled = false; Class1.Config.TransmitStyle = (TransmitStyleType)Enum.ToObject(typeof(TransmitStyleType), comboBoxEdit1.SelectedIndex); Class1.Config.LocationContent = textEdit4.Text; Class1.Config.GatherPoiCrowd = textEdit5.Text; Class1.Config.MonitorCrowd = textEdit1.Text.Trim(); Class1.Config.MonitorIntervalTime = (int)numericUpDown1.Value; Class1.Config.CustomWebApi = textEdit2.Text.Trim(); Class1.Config.AutoPraise = buttonCheck2.Checked; Class1.Config.AutoPraiseInterval = (int)numericUpDown2.Value; Class1.Config.CustomWebApiIntervalTime = (int)numericUpDown3.Value; Class1.Config.AutoTurn = buttonCheck1.Checked; Class1.Config.Turn_Obstinate = checkBox1.Checked; Class1.Config.transpond_send_usernames = checkedComboBoxEdit2.Properties.GetCheckedItems().ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList(); Util.Save(Class1.Config); //保存配置文件 var t1 = Task.Run(delegate { var timer = TimerTask.GetTimer() as MonitorThread; timer.Run("立即检测", false); }, tokenSource.Token); try { await t1; if (!this.IsDisposed) ShowSuccess("立即执行定时检测完成!"); } catch (Exception ex) { if (!this.IsDisposed) ShowError(ex); } simpleButton3.Enabled = true; } private async void simpleButton4_Click(object sender, EventArgs e) { try { await Task.Run(delegate { var clients = Chat.Framework.ChatClient.WXClient.Values.ToList(); //获取机器人集合 var monitorCrowd = string.Empty; //用户的集合中的id List> news = null; //获取朋友圈的动态 foreach (var item in clients) { try { if ((item.WeixinType == WeixinType.Grpc微信 || item.WeixinType == WeixinType.Hook微信) && item.Status == WxStatus.在线) { monitorCrowd = textEdit5.Text.Trim();//undone 获取用户真正的微信id news = item.FindCircle(monitorCrowd); //EventClient.OnEvent(this, $"采集账号:{item.WeixinHao} 采集量 = {news.Count}"); if (news != null && news.Count != 0) { if (news[0].ContainsKey("ObjectDesc")) { var objectDesc = news[0]["ObjectDesc"].ToString(); //新动态的内容部分 var reg = Regex.Match(objectDesc, @"(?<地址信息>\)"); if (reg.Success) { var location = reg.Groups["地址信息"].Value; reg = Regex.Match(location, @"poiClassifyId=""(?[^""]+?)"""); if (reg.Success) { textEdit4.Text = reg.Groups["poi"].ToString(); if (!this.IsDisposed) ShowSuccess("获取poi信息成功"); return; } else if (!this.IsDisposed) ShowError("获取poi信息失败"); } else if (!this.IsDisposed) ShowError("该用户第一条朋友圈不存在poi信息"); } } else if (!this.IsDisposed) ShowError("该用户朋友圈无动态"); } } catch (Exception ex) { EventClient.OnEvent(this, $"朋友圈工具 - 朋友圈获取poi异常:{ex.Message}"); } } }, tokenSource.Token); } catch (Exception ex) { if (!this.IsDisposed) ShowError(ex); } } private void checkedComboBoxEdit_UsernameType_EditValueChanged(object sender, EventArgs e) { if (checkedComboBoxEdit_UsernameType.EditValue != null) Class1.Config.send_usernames = checkedComboBoxEdit_UsernameType.EditValue.ToString().Split(',').Select(f => f.Trim()).ToList(); else Class1.Config.send_usernames = new List(); } private void hyperlinkLabelControl2_Click(object sender, EventArgs e) { try { var image = new ImageForm(); image.ShowDialog(); if (!string.IsNullOrWhiteSpace(Class1.Config.NetworkUrl)) { var strb = new StringBuilder(); var images = Class1.Config.NetworkUrl.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < images.Length; i++) { strb.AppendLine($"[图片={images[i]}]"); } memoEdit1.Text += strb.ToString(); } } catch (Exception ex) { ShowError(ex); } } private void hyperlinkLabelControl1_Click(object sender, EventArgs e) { try { Stream mystream; OpenFileDialog openfiledialog1 = new OpenFileDialog(); openfiledialog1.Multiselect = true;//允许同时选择多个文件 openfiledialog1.InitialDirectory = "c:\\"; openfiledialog1.Filter = "All Image Files|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png;*.tif;*.tiff|(*.bmp)|*.bmp|(*.ico)|*.ico|(*.gif)|(*.gif)|(*.jpg)|*.jpg;*.jpeg|(*.png)|*.png"; openfiledialog1.FilterIndex = 1; openfiledialog1.RestoreDirectory = true; var dialog = openfiledialog1.ShowDialog(); if (dialog == DialogResult.OK) { if ((mystream = openfiledialog1.OpenFile()) != null) { for (int fi = 0; fi < openfiledialog1.FileNames.Length; fi++) { memoEdit1.Text += $"[图片={openfiledialog1.FileNames[fi].ToString()}]\r\n"; //保存图片路径 } mystream.Close(); } } } catch (Exception ex) { ShowError(ex); } } private async void button3_Click(object sender, EventArgs e) { try { button3.Enabled = false; fl_plugin_circletools_taskinfos t1 = await Task.Run(() => { try { if (goodsDic.Count == 0) throw new Exception("请添加要发布的产品文案"); if (string.IsNullOrWhiteSpace(memoEdit4.Text)) throw new Exception("请选择模板"); var adzone = ApiClient.GetSession().FindAdzoneInfos().FirstOrDefault(f => f.alliance_id == (int)CpsType.阿里妈妈 && f.custom_type == Resources.NonautomaticSoftwareType); if (adzone == null) throw new Exception("请先设置推广位"); if (string.IsNullOrWhiteSpace(checkedComboBoxEdit_UsernameType.Text)) throw new Exception("请选择要发送的机器人"); QrImageType qrImage = QrImageType.模板A; this.Invoke(new Action(() => { qrImage = (comboBox1.Text == "模板A" ? ApiClient.QrImageType.模板A : ApiClient.QrImageType.模板B); })); strb.Length = 0; var tb_cps = CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.阿里妈妈 && f.username == adzone.adzone_pid_cps_name); var api = CpsClient.CreateAlimamaRequest(tb_cps); var pid_split = adzone.adzone_pid.Split('_'); var tbAnalysis = new TBHelper.TbAnalysis(); strb.Append(memoEdit4.Text); foreach (var item in goodsDic.Values) { var pic = item.GetType().GetProperty("pic").GetValue(item).ToString(); var item_id = item.GetType().GetProperty("itemid").GetValue(item).ToString(); var title = item.GetType().GetProperty("goods_name").GetValue(item).ToString(); var coupon_click_url = item.GetType().GetProperty("coupon_url").GetValue(item).ToString();//优惠券地址 var describe = item.GetType().GetProperty("describe").GetValue(item).ToString();//商品介绍 //获取淘口令 var tklInfo = tbAnalysis.FindTKL(coupon_click_url, api); if (tklInfo == null) continue; var shortUrl = tbAnalysis.FindShortUrlBySrcUrl(coupon_click_url, api); var temp_url = api.ComposeTbClick(item_id, pic, tklInfo.tkl, tklInfo.isoUrl, true, adzone.adzone_pid, Setting.SystemConfig.ZjyComposeType == ComposeType.有推荐商品, (int)DwzType.快站短网址, isCircleZjy: true); //var temp_url = ApiClient.ShortURL(api.ComposeTbClick(item_id, pic, tkl, coupon_click_url)).Result;//中间页地址 strb.Append("[图片=" + ApiClient.GetQRImage(title, item.GetType().GetProperty("price").GetValue(item).ToString(), item.GetType().GetProperty("coupon_discount").GetValue(item).ToString(), item.GetType().GetProperty("final_price").GetValue(item).ToString(), pic, temp_url, qrImage, CpsType.阿里妈妈, describe) + "]"); } var taskinfo = new fl_plugin_circletools_taskinfos(); taskinfo.task_sendtext = strb.ToString(); taskinfo.task_comment = memoEdit5.Text; taskinfo.robotnames = checkedComboBoxEdit_UsernameType.EditValue.ToString(); return Task.FromResult(taskinfo); } catch (Exception) { } return null; }, tokenSource.Token); button3.Enabled = true; AddAutoSendForm sendForm = new AddAutoSendForm(t1); sendForm.ShowDialog(); } catch (Exception ex) { ShowError(ex); } } /// /// 一键发单 发布按钮 /// /// /// private async void button2_Click(object sender, EventArgs e) { try { button2.Enabled = false; if (goodsDic.Count == 0) throw new Exception("请添加要发布的产品文案"); if (string.IsNullOrWhiteSpace(memoEdit4.Text)) throw new Exception("请选择模板"); var adzone = ApiClient.GetSession().FindAdzoneInfos().FirstOrDefault(f => f.alliance_id == (int)CpsType.阿里妈妈 && f.custom_type == Resources.NonautomaticSoftwareType); if (adzone == null) throw new Exception("请先设置推广位"); if (string.IsNullOrWhiteSpace(checkedComboBoxEdit_UsernameType.Text)) throw new Exception("请选择要发送的机器人"); var qrImage = (comboBox1.Text == "模板A" ? ApiClient.QrImageType.模板A : ApiClient.QrImageType.模板B); strb.Length = 0; var t3 = Task.Factory.StartNew(() => { var tb_cps = CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.阿里妈妈 && f.username == adzone.adzone_pid_cps_name); var api = CpsClient.CreateAlimamaRequest(tb_cps); //var pid_split = adzone.adzone_pid.Split('_'); var tbAnalysis = new TBHelper.TbAnalysis(); strb.Append(memoEdit4.Text); foreach (var item in goodsDic.Values) { var pic = item.GetType().GetProperty("pic").GetValue(item).ToString(); var item_id = item.GetType().GetProperty("itemid").GetValue(item).ToString(); var title = item.GetType().GetProperty("goods_name").GetValue(item).ToString(); var coupon_click_url = item.GetType().GetProperty("coupon_url").GetValue(item).ToString();//优惠券地址 var describe = item.GetType().GetProperty("describe").GetValue(item).ToString();//商品介绍 var date = DateTime.Now.ToString("yyyyMMdd"); if (!Class1.Config.recordSendGoods.ContainsKey(date)) { Class1.Config.recordSendGoods.Clear(); Class1.Config.recordSendGoods.Add(date, new List() { item_id }); } else Class1.Config.recordSendGoods[date].Add(item_id); //获取淘口令 var tklInfo = tbAnalysis.FindTKL(coupon_click_url, api); if (tklInfo == null) continue; var shortUrl = tbAnalysis.FindShortUrlBySrcUrl(coupon_click_url, api); var temp_url = api.ComposeTbClick(item_id, pic, tklInfo.tkl, tklInfo.isoUrl, true, adzone.adzone_pid, ApiClient.Setting.SystemConfig.ZjyComposeType == ComposeType.有推荐商品, (int)DwzType.快站短网址, isCircleZjy: true); //var temp_url = ApiClient.ShortURL(api.ComposeTbClick(item_id, pic, tkl, coupon_click_url)).Result;//中间页地址 strb.Append("[图片=" + GetQRImage(title, item.GetType().GetProperty("price").GetValue(item).ToString(), item.GetType().GetProperty("coupon_discount").GetValue(item).ToString(), item.GetType().GetProperty("final_price").GetValue(item).ToString(), pic, temp_url, qrImage, CpsType.阿里妈妈, describe) + "]"); } var usernames = checkedComboBoxEdit_UsernameType.EditValue.ToString().Split(',').Select(f => f.Trim()).ToList(); var clients = Chat.Framework.ChatClient.WXClient; foreach (var item in clients.Values) { try { if ((item.WeixinType == WeixinType.Grpc微信 || item.WeixinType == WeixinType.Hook微信) && usernames.Contains(item.WeixinHao.Trim()) && item.Status == WxStatus.在线) { var json = item.SendCircle(strb.ToString()); if (!string.IsNullOrWhiteSpace(memoEdit5.Text)) { var reg = Regex.Match(json, @"(?\d{15,})");//获取返回的朋友圈id if (reg.Success) item.SendCircleComment(item.User.Username, reg.Groups["id"].Value, memoEdit5.Text.Trim()); } } } catch (Exception ex) { EventClient.OnEvent(this, $"一键发送异常:{item.User.Nick} - {ex.Message}"); } } }, tokenSource.Token); try { await t3; if (!this.IsDisposed) { button2.Enabled = true; label_num.Text = "0"; gridControl2.DataSource = null; ShowSuccess("发送成功"); goodsDic.Clear(); } } catch (Exception ex) { } } catch (Exception ex) { button2.Enabled = true; ShowError(ex); } } private void memoEdit3_Click(object sender, EventArgs e) { memoEdit3.SelectAll(); } private void labelControl29_Click(object sender, EventArgs e) { memoEdit6.Text += labelControl29.Text; } } }