using Api.Framework; using Api.Framework.Enums; using Api.Framework.Tools; using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using UI.Framework.Forms; using Weixin.TBCirclePromotion.Entitys; namespace Weixin.TBCirclePromotion { public partial class ImportDataForm : BaseForm { public ImportDataForm() { InitializeComponent(); } private CancellationTokenSource tokenSource = new CancellationTokenSource(); private async void simpleButton1_Click(object sender, EventArgs e) { simpleButton1.Enabled = false; try { if (string.IsNullOrWhiteSpace(richTextBox1.Text)) throw new Exception("请填写要导入的内容!"); var cps = CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.阿里妈妈); if (cps == null) throw new Exception("没有可用的阿里妈妈推广位!"); await Task.Run(() => { try { var api = CpsClient.CreateAlimamaRequest(cps); if (api == null) throw new Exception("创建阿里妈妈API请求失败"); var tbAnalysis = new TBHelper.TbAnalysis(); AddJindu("正在分析数据..."); var goodsinfos = new List(); var content = string.Empty; UpdateUI(() => { content = richTextBox1.Text; }); var urls = CsharpHttpHelper.HttpExtend.RegexMatchesUrl(content); if (urls != null && urls.Count != 0) { var session = ApiClient.GetSession(); AddJindu("准备导入数据", urls.Count); AnalyzeGoods analyzeGoods = new AnalyzeGoods(); foreach (var item in urls) { var item_id = string.Empty; try { item_id = tbAnalysis.FindItemIdByUrlAndTklAndMkl(item, api, null); } catch (Exception) { } //标题搜索和商品id搜索 if (!string.IsNullOrEmpty(item_id)) { var goods = analyzeGoods.FindGoodsInfoToGoodsId(item_id); if (goods != null) { goods.state = Enums.StateType.未推广; goods.goods_source = Enums.GoodsSourceType.文件导入; goodsinfos.Add(goods); } } AddJindu(); } session.Saveable(goodsinfos).ExecuteCommand(); } else { AddJindu($"导入数据无效,请检测是否为商品链接!"); return; } AddJindu($"成功导入{goodsinfos.Count}条 - 失败{(urls.Count - goodsinfos.Count)}条"); } catch (Exception ex) { if (!this.IsDisposed) ShowError(ex); } }, tokenSource.Token); } catch (Exception) { } simpleButton1.Enabled = true; } private object lock_obj = new object(); private void AddJindu(string text = "", int max = 0) { base.UpdateUI(() => { try { lock (lock_obj) { if (!string.IsNullOrEmpty(text) && max == 0) { label31.Text = text; } else if (!string.IsNullOrEmpty(text) && max != 0) { label31.Text = text; this.progressBar1.Value = 0; this.progressBar1.Maximum = max; } else { if (this.progressBar1.Value < this.progressBar1.Maximum) this.progressBar1.Value++; label31.Text = $"{this.progressBar1.Value}/{this.progressBar1.Maximum}"; } } Application.DoEvents(); } catch (Exception) { } }); } private void ImportDataForm_FormClosing(object sender, FormClosingEventArgs e) { tokenSource.Cancel(); } } }