using AllBase; using AllBase.Helper; using AllBase.Model.Param.FissionManage; using AllBase.Model.Result; using LittleRabbit.Extension; using LittleRabbit.LittleRabbitForms.BaseForms; using NaiBa.Util.Extension; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Work; using Work.Api; using Work.BLL.Upload; using Work.CollectClass; using Work.DouyinApiClass; namespace LittleRabbit.LittleRabbitForms.UploadForms { public partial class FissionDataBaseForm : Form { public int ClickType = 0; // 0删除 1从删除产品中恢复数据 public bool IsStop = false; public bool IsUserProxyIp = false; /// /// 校验时上家下架则删除 /// public bool IsDeleteUpDown = false; /// /// 上家sku变化时自动更新(功能隐藏) /// public bool IsUpdateUpChange = false; /// /// 商品校验结果需要更新或删除 1 校验通过 9 上家已下架 0 上家有变化需要更新 /// public int ProductUpdateCheckResult = 1; /// /// 是否自动翻页 /// public bool IsAutoTurnPage = false; /// /// 是否正在翻页 /// public bool IsTurnPage = false; public List LstFission = new List(); CheckBox chkAll = null; public static FissionDataBaseForm Instance = null; public FissionDataBaseForm() { InitializeComponent(); Instance = this; } private void FissionDataBaseForm_Load(object sender, EventArgs e) { chkAll = this.dgvFissionProduct.AddSelectorColumn("ColSelect"); this.cmbSource.SelectedIndex = 0; this.cmbCheckResult.SelectedIndex = 0; SetCateGroupOptions(); SetMainCateOptions(); SetPageOptions(); RefreshShop(); } private void btnSearchFission_Click(object sender, EventArgs e) { this.txtCurrentPage.Text = "1"; SearchFission(); } public void SearchFission() { // 选择时间框一个选择了,另一个没选则提示两个都要选(或者都不选) if ((dtBaginTime.Text.Trim() == "" ^ dtEndTime.Text.Trim() == "")) { BaseMsgForm.ShowInfo("请检查开始时间和结束时间是否都选择了!"); return; } // 时间判断结束时间不能比开始时间小 if (!string.IsNullOrEmpty(dtBaginTime.Text) && !string.IsNullOrEmpty(dtEndTime.Text)) { if (DateTime.Compare(DateTime.Parse(dtBaginTime.Text), DateTime.Parse(dtEndTime.Text)) > 0) { BaseMsgForm.ShowInfo("结束日期比开始日期大,请检查日期选择!"); return; } } IsStop = false; LstFission.Clear(); dgvFissionProduct.Rows.Clear(); string min_price = txtPriceMin.Text; string max_price = txtPriceMax.Text; string min_sales = txtSaleAmountMin.Text; string max_sales = txtSaleAmountMax.Text; string min_times = txtMinTimes.Text; string max_times = txtMaxTimes.Text; string teamGroup = cmbGroup.Text; string beginTime = string.IsNullOrEmpty(dtBaginTime.Text) ? "" : DateTime.Parse(dtBaginTime.Text).ToString("yyyy-MM-dd"); string endtime = string.IsNullOrEmpty(dtEndTime.Text) ? "" : DateTime.Parse(dtEndTime.Text).ToString("yyyy-MM-dd"); if (string.IsNullOrEmpty(teamGroup) || teamGroup == "不限") teamGroup = ""; string cat1 = cmbShopCat1.Text; if (string.IsNullOrEmpty(cat1) || cat1 == "不限") cat1 = cmbCat1.Text; if (string.IsNullOrEmpty(cat1) || cat1 == "不限") cat1 = ""; ProductUpdateCheckResult = 1; if (cmbCheckResult.Text == "需更新商品") ProductUpdateCheckResult = 0; if (cmbCheckResult.Text == "上家下架") ProductUpdateCheckResult = 9; string UseStatus = ""; string current_page = this.lblCurrentPage.Text = this.txtCurrentPage.Text; string pagesize = cboxDisplayCount.Text; string url = BaseClass.BuildFissionObjString("fession_api"); string paraStr = "&min_price=" + min_price + "&max_price=" + max_price + "&min_sales=" + min_sales + "&max_sales=" + max_sales + "&min_times=" + min_times + "&max_times=" + max_times + "&begin_time=" + beginTime + "&end_time=" + endtime + "¤t_page=" + current_page + "&pagesize=" + pagesize + "&fessiontitle=" + HttpUtility.UrlEncode(txtFisssionTitle.Text, Encoding.UTF8) // 关键字 /其实查的是title + (!string.IsNullOrEmpty(UseStatus) ? "×=" + UseStatus : "") // 使用次数 + (cmbSource.Text != "" && cmbSource.Text != "不限" ? "&source=" + cmbSource.Text : "") // 来源 + (cmbGroup.Text != "" && cmbGroup.Text != "不限" ? "&category=" + HttpUtility.UrlEncode(teamGroup, Encoding.UTF8) : "") // 店铺分组 + "&main_cate=" + cat1 // 一级类目 + (cmbShopCat2.Text != "" && cmbShopCat2.Text != "不限" ? "&cat2_name=" + cmbShopCat2.Text : "") // 二级类目 + (cmbShopCat3.Text != "" && cmbShopCat3.Text != "不限" ? "&cat3_name=" + cmbShopCat3.Text : "") // 三级类目 + (ProductUpdateCheckResult == 1 ? "" : ("&update_check_passed=" + ProductUpdateCheckResult)); string requestData = UserLogin.GetSignaturex() + "&act=get" + paraStr; try { string htmlData = GetHtml.PostUtf8(url, requestData); var FessionObj = JsonConvert.DeserializeObject(htmlData); // 反序列化 if (FessionObj != null) { LstFission.AddRange(FessionObj.list); SetFessionData(FessionObj); } } catch (Exception ex) { LogSave.Add(Name, "访问服务器返回裂变数据异常"); } IsTurnPage = false; } /// /// 设置分组信息列表 /// private void SetCateGroupOptions() { var groupList = new FissionDataBaseBLL().GetCategoryGroup(); cmbGroup.DataSource = groupList; } /// /// 设置类目信息列表 /// private void SetMainCateOptions() { var mainCateList = new FissionDataBaseBLL().GetMainCate(); cmbCat1.DataSource = mainCateList; } /// /// 设置分页选项列表 /// private void SetPageOptions() { Dictionary kvDictonary = new Dictionary(); kvDictonary.Add(1, 30); kvDictonary.Add(2, 50); kvDictonary.Add(3, 100); kvDictonary.Add(4, 500); BindingSource bs = new BindingSource(); bs.DataSource = kvDictonary; this.cboxDisplayCount.DataSource = bs; this.cboxDisplayCount.ValueMember = "Key"; this.cboxDisplayCount.DisplayMember = "Value"; } public void RefreshShop() { cmbShop.Items.Clear(); cmbShop.Items.Add("不限"); foreach (var shop in GlobalConfig.DouShopLoginList) { cmbShop.Items.Add(shop.ShopAccount); } if (cmbShop.Items.Count > 0) cmbShop.SelectedIndex = 0; } private void cboxShop_SelectedIndexChanged(object sender, EventArgs e) { cmbShopCat1.DataSource = null; cmbShopCat2.DataSource = null; cmbShopCat3.DataSource = null; cmbShopCat1.Items.Clear(); // 防止有的店铺没有一级、二级、三级类目,所以,更改店铺前要把一级类目清空 cmbShopCat2.Items.Clear(); // 防止有的店铺没有一级、二级、三级类目,所以,更改店铺前要把二级类目清空 cmbShopCat3.Items.Clear(); // 防止有的店铺没有一级、二级、三级类目,所以,更改店铺前要把三级类目清空 List catList1 = new List(); catList1.Insert(0, new GoodsCategoryModel() { name = "不限", parent_id = 0, level = 0, enable = true, is_leaf = false, id = -1, main_cat_id = 0 }); string shopname = cmbShop.Text; var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(x => x.ShopAccount == shopname); if (shop != null) { catList1.AddRange(GetCategoryList(0, shop)); } cmbShopCat1.DataSource = catList1; cmbShopCat1.DisplayMember = "name"; if (cmbShopCat1.Items.Count > 0) cmbShopCat1.SelectedIndex = 0; if (cmbShop.Text != "" && cmbShop.Text != "不限") { cmbCat1.SelectedIndex = 0; cmbCat1.Enabled = false; } else { cmbCat1.Enabled = true; } } private void cmbShopCat1_SelectedIndexChanged(object sender, EventArgs e) { cmbShopCat2.DataSource = null; cmbShopCat3.DataSource = null; cmbShopCat2.Items.Clear(); // 防止有的店铺没有一级、二级、三级类目,所以,更改店铺前要把二级类目清空 cmbShopCat3.Items.Clear(); // 防止有的店铺没有一级、二级、三级类目,所以,更改店铺前要把一级类目清空 List catList2 = new List(); string shopname = cmbShop.Text; var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(x => x.ShopAccount == shopname); if (shop != null) { if (cmbShopCat1.SelectedItem is GoodsCategoryModel) catList2 = GetCategoryList((cmbShopCat1.SelectedItem as GoodsCategoryModel).id, shop); } catList2.Insert(0, new GoodsCategoryModel() { name = "不限", parent_id = 0, level = 0, enable = true, is_leaf = false, id = -1, main_cat_id = 0 }); cmbShopCat2.DataSource = catList2; cmbShopCat2.DisplayMember = "name"; if (cmbShopCat2.Items.Count > 0) cmbShopCat2.SelectedIndex = 0; } private void cmbShopCat2_SelectedIndexChanged(object sender, EventArgs e) { cmbShopCat3.DataSource = null; cmbShopCat3.Items.Clear(); // 防止有的店铺没有一级、二级、三级类目,所以,更改店铺前要把三级类目清空 List catList3 = new List(); string shopname = cmbShop.Text; var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(x => x.ShopAccount == shopname); if (shop != null) { if (cmbShopCat2.SelectedItem is GoodsCategoryModel) catList3 = GetCategoryList((cmbShopCat2.SelectedItem as GoodsCategoryModel).id, shop); } catList3.Insert(0, new GoodsCategoryModel() { name = "不限", parent_id = 0, level = 0, enable = true, is_leaf = false, id = -1, main_cat_id = 0 }); cmbShopCat3.DataSource = catList3; cmbShopCat3.DisplayMember = "name"; if (cmbShopCat3.Items.Count > 0) cmbShopCat3.SelectedIndex = 0; } private void cmbShopCat3_SelectedIndexChanged(object sender, EventArgs e) { } public List GetCategoryList(int catId, DouShopLoginInfo shop) { List cateList = new List(); if (catId < 0) return cateList; DouyinApi api = new DouyinApi(shop); var result = api.GetShopCategory(catId); if (result.Contains("已过期")) { shop.ApiAuthStatus = "未授权"; StartUp.SaveDouShopLoginInfo(); GoodsCategoryModel cat = new GoodsCategoryModel() { enable = true, id = 0, is_leaf = false, level = 0, name = "店铺未授权", parent_id = 0 }; cateList.Add(cat); } else if (result.Contains("\"code\":10000")) { var mc = BaseRegex.GetMatchRegex(ref result, "{([\\s\\S]+?)}"); foreach (Match m in mc) { string r = m.Value; bool enable = BaseRegex.GetBoolJson(ref r, "enable"); bool is_leaf = BaseRegex.GetBoolJson(ref r, "is_leaf"); int level = BaseRegex.GetIntJson(ref r, "level"); int id = BaseRegex.GetIntJson(ref r, "id"); int parent_id = BaseRegex.GetIntJson(ref r, "parent_id"); string name = BaseRegex.GetStringJson(ref r, "name"); if (!string.IsNullOrEmpty(name)) { GoodsCategoryModel cat = new GoodsCategoryModel() { enable = enable, id = id, is_leaf = is_leaf, level = level, name = name, parent_id = parent_id }; cateList.Add(cat); } } } return cateList; } /// /// 绑定裂变数据 /// public void SetFessionData(FissionRoot fissionRoot) { int loadCount = int.Parse(this.cboxDisplayCount.Text == "" ? "30" : this.cboxDisplayCount.Text); int totalPage = fissionRoot.count % loadCount == 0 ? fissionRoot.count / loadCount : (fissionRoot.count / loadCount) + 1; if (int.Parse(this.lblTotalPage.Text) != totalPage) this.lblTotalPage.Text = totalPage.ToString(); List FessionTempList = fissionRoot.list; while (FessionTempList.Count > 0) { var o = FessionTempList[0]; FessionTempList.RemoveAt(0); if (o == null) return; string catStr = Fission.GetFullCatString(o.cate_id.ParseToInt()); if (string.IsNullOrEmpty(catStr)) catStr = o.full_category_name; if (string.IsNullOrEmpty(catStr)) catStr = o.main_cate; if (catStr == null) catStr = ""; if (IsStop) // 当清空列表数据,停止绑定数据 return; int iGrid = GetGridViewIndex(dgvFissionProduct, "ColId", o.id.ToString()); if (iGrid < 0) // 如果表内没有已存在的数据,新增一条数据 { iGrid = this.dgvFissionProduct.Rows.Add(); this.dgvFissionProduct.Rows[iGrid].Cells["ColSelect"].Value = false; //选择 this.dgvFissionProduct.Rows[iGrid].Cells["ColId"].Value = o.id; //ID } this.dgvFissionProduct.Rows[iGrid].Cells["ColOriginalTitle"].Value = o.title; // 原始标题 this.dgvFissionProduct.Rows[iGrid].Cells["OriginalId"].Value = o.fession_id; // 原始ID this.dgvFissionProduct.Rows[iGrid].Cells["Title"].Value = o.fession_title; // 新标题 this.dgvFissionProduct.Rows[iGrid].Cells["Price"].Value = o.price; // 价格 this.dgvFissionProduct.Rows[iGrid].Cells["SaleAmount"].Value = o.sales; // 销量 this.dgvFissionProduct.Rows[iGrid].Cells["ColCategory"].Value = o.category; // 组别 this.dgvFissionProduct.Rows[iGrid].Cells["ColFullCategory"].Value = catStr; // 完整类目 this.dgvFissionProduct.Rows[iGrid].Cells["ColCategory1"].Value = o.main_cate; // 类目1 this.dgvFissionProduct.Rows[iGrid].Cells["ColCategory2"].Value = o.cat2_name; // 类目2 this.dgvFissionProduct.Rows[iGrid].Cells["ColCategory3"].Value = o.cat3_name; // 类目3 this.dgvFissionProduct.Rows[iGrid].Cells["ColTitleNum"].Value = o.TitleNum; // 标题数量 this.dgvFissionProduct.Rows[iGrid].Cells["ColUseCount"].Value = o.times; // 使用次数 this.dgvFissionProduct.Rows[iGrid].Cells["ColDel"].Value = ClickType == 0 ? "删除" : "恢复"; // 操作 this.dgvFissionProduct.Rows[iGrid].Cells["ColReEdit"].Value = "编辑"; // 再次净化编辑数据 this.dgvFissionProduct.Rows[iGrid].Cells["colMessage"].Value = ""; // 消息 this.dgvFissionProduct.Rows[iGrid].Cells["ColSource"].Value = o.source; // 来源 this.dgvFissionProduct.Rows[iGrid].Cells["ColSourceFake"].Value = "货源网"; // 来源Fake this.dgvFissionProduct.Rows[iGrid].Cells["ColRkTime"].Value = o.addtime; // 入库时间 this.dgvFissionProduct.Rows[iGrid].Cells["ColUpdateTime"].Value = o.update_time; // 修改时间 this.dgvFissionProduct.Rows[iGrid].Cells["ColNeedUpdate"].Value = o.update_check_passed == 1 ? "" : (o.update_check_passed == 9 ? "上家下架" : "请更新商品"); // 校验更新 } } /// /// 获取 datagridview所在的行下标,找不到则返回-1 /// /// /// /// /// int GetGridViewIndex(UserComponent.DataGridViewEx dgv, string columnName, string columnValue) { for (int i = 0; i < dgv.Rows.Count; i++) { string value = dgv.Rows[i].Cells[columnName].Value.ToString(); if (value == columnValue) { return i; } } return -1; } private void btnGoTo_Click(object sender, EventArgs e) { int pageNum = 0; if (string.IsNullOrEmpty(this.txtCurrentPage.Text)) { return; } if (int.TryParse(txtCurrentPage.Text, out pageNum)) { if (pageNum > 0 && pageNum <= int.Parse(this.lblTotalPage.Text)) { this.lblCurrentPage.Text = txtCurrentPage.Text; SearchFission(); } else { BaseMsgForm.ShowInfo("输入的数字超出范围!"); this.txtCurrentPage.Text = string.Empty; } } else { BaseMsgForm.ShowInfo("请输入有效数字!"); this.txtCurrentPage.Text = string.Empty; } } private void dgvFissionProduct_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0 || e.ColumnIndex < 0) return; var columnName = dgvFissionProduct.Columns[e.ColumnIndex].Name; var headerText = dgvFissionProduct.Columns[e.ColumnIndex].HeaderText; if (headerText == "选" || columnName == "ColSelect") { dgvFissionProduct.Rows[e.RowIndex].Cells["ColSelect"].Value = !dgvFissionProduct.Rows[e.RowIndex].Cells["ColSelect"].Value.ParseToBool(); } else if (headerText == "操作") { string OperatingName = dgvFissionProduct.Rows[e.RowIndex].Cells["ColDel"].Value.ToString(); string Id = dgvFissionProduct.Rows[e.RowIndex].Cells["ColId"].Value.ToString(); string OrgId = dgvFissionProduct.Rows[e.RowIndex].Cells["OriginalId"].Value.ToString(); // 原商品ID if (OperatingName == "删除") { //if (BaseMsgForm.ShowConfirm("是否确认删除此数据?\r\n注:如果上货列表中有此数据将会一并删除。").DialogResult.Equals(DialogResult.Cancel)) return; if (BaseMsgForm.ShowConfirm("是否确认删除此数据?").DialogResult.Equals(DialogResult.Cancel)) return; // 根据上家标题,原始Id删除数据库数据 Task.Factory.StartNew(() => { new FissionDataBaseBLL().DelFessionData(Id); }); //// 删除listFissionPcb //UploadProductForm.lstFissionPcb.RemoveAll(x => x != null && x.from_id == OrgId.ParseToLong()); //// 删除上货列表备用商品 //UploadProductBLL.ProductStock.RemoveAll(x => x.FromId == OrgId.ParseToLong()); //// 删除本地数据库备用商品 //UploadProductBLL.Delete(OrgId); //// 刷新上传界面的上传队列数量 //UploadProductForm.instance?.remain(); } else { if (BaseMsgForm.ShowConfirm("是否确认恢复此数据?").DialogResult.Equals(DialogResult.Cancel)) return; // 根据上家标题,原始Id恢复 Task.Factory.StartNew(() => new FissionDataBaseBLL().RestoreFessionData(Id.ToString())); } // 删除行 dgvFissionProduct.Rows.RemoveAt(e.RowIndex); // 从集合中移除指定的行 } else if (headerText == "原始ID") { string source = dgvFissionProduct.Rows[e.RowIndex].Cells["ColSource"].Value.ToString(); // 来源 string OrgId = dgvFissionProduct.Rows[e.RowIndex].Cells["OriginalId"].Value.ToString(); // 原商品ID string url = GetFromUrl(source, OrgId); GetHtml.OpenUrl(url); } else if (headerText == "编辑") { string Id = dgvFissionProduct.Rows[e.RowIndex].Cells["ColId"].Value.ToString(); var Fiss = this.LstFission.FirstOrDefault(f => f.id.ToString() == Id); if (Fiss != null) { try { var fissionTemp = new FissionDataBaseBLL().GetFessionDetailById(Id.ParseToInt()); Fiss.fession_title = fissionTemp.fession_title; Fiss.container_info = fissionTemp?.container_info.Replace("'>", "'>"); Fiss.main_pic = fissionTemp.main_pic; Fiss.prop_pic = fissionTemp.prop_pic; Fiss.props = fissionTemp.props; Fiss.mainWord = fissionTemp.mainWord; Fiss.viceword = fissionTemp.viceword; Fiss.prop = fissionTemp.prop; Fiss.skus = fissionTemp.skus; Fiss.from_shop_name = fissionTemp.from_shop_name; Fiss.qualifications = fissionTemp.qualifications; } catch (Exception ex) { LogSave.Add("获取裂变明细信息发生异常" + ex.Message); } if (string.IsNullOrEmpty(Fiss.fession_title)) return; if (Fiss.source == "laiyuan") { if (Fiss.main_pic.Contains("pddpic") || Fiss.prop_pic.Contains("pddpic") || Fiss.container_info.Contains("pddpic")) { Fiss.source = "拼多多"; } } ProductCollectBase pcb = FissionData2Pcb(Fiss, Fiss.fession_title); // 校验总店商品是否发生变化 string msg = ""; var pcb_new = CheckProductStatus(pcb, out msg); if (msg == "商品已下架") { BaseMsgForm.ShowInfo("总店商品已下架 !"); return; } if (pcb_new != pcb && BaseMsgForm.ShowConfirm("原商品发生变化,点击 确定 打开变化后的商品,点击 取消 编辑原数据库商品").DialogResult == DialogResult.OK) { string createHtmlPath = Fission.creatFissionPage(pcb_new); Fission fs = new Fission(createHtmlPath, pcb.from_url, null, pcb, Fiss.category, Fiss.full_category_name, Fiss.fession_title); fs.Show(); } else { string createHtmlPath = Fission.creatFissionPage(pcb); Fission fs = new Fission(createHtmlPath, pcb.from_url, new List() { Fiss }, pcb, Fiss.category, Fiss.full_category_name, Fiss.fession_title); fs.Show(); } } } } private static string GetFromUrl(string source, string OrgId) { string url = ""; if (source == "1688" || source == "阿里巴巴") { url = "https://detail.1688.com/offer/" + OrgId + ".html"; } else if (source == "拼多多") { url = "https://yangkeduo.com/goods2.html?goods_id=" + OrgId; } else if (source == "京喜" || source == "京东") { url = "https://item.jd.com/" + OrgId + ".html"; } else if (source == "抖音") { url = "https://haohuo.jinritemai.com/views/product/detail?id=" + OrgId; } else { url = "https://item.taobao.com/item.htm?id=" + OrgId; } return url; } private void btnAddFissToUpload_Click(object sender, EventArgs e) { var fissionIdList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColSelect"].Value.ParseToBool()) .Select(r => r.Cells["ColId"].Value.ToString()).ToList(); if (fissionIdList.Count == 0) { BaseMsgForm.ShowInfo("请选择要上传的数据", "提示"); return; } btnAddFissToUpload.Enabled = false; progressBarX1.Visible = true; progressBarX1.Maximum = fissionIdList.Count; progressBarX1.Value = 0; pbLoading.Visible = true; Task.Run(() => { UploadFessionData(fissionIdList); }); } /// /// 添加到上货 isTryUpload 是否试水上货 /// /// public void UploadFessionData(List selectFissionIdList) { DateTime startTime = DateTime.Now; // 重置操作信息状态 for (int i = 0; i < selectFissionIdList.Count; i++) { foreach (DataGridViewRow row in this.dgvFissionProduct.Rows) { if (row.Cells["ColId"].Value.ToString() == selectFissionIdList[i].ToString()) row.Cells["colMessage"].Value = ""; } } string fissionDataBaseIds = ""; List pcbList = new List(); for (int i = 0; i < selectFissionIdList.Count; i++) { var FissId = selectFissionIdList[i].ParseToInt(); var Fiss = LstFission.Find(f => f != null && f.id == FissId); if (Fiss != null) { fissionDataBaseIds += FissId + ";"; string dataSource = Fiss.source == null ? "" : Fiss.source; string OriginalId = Fiss.fession_id; if (string.IsNullOrEmpty(Fiss.main_pic)) { try { //var fissionTemp = new FissionDataBaseBLL().GetFessionDetailById(FissId); //Fiss.fession_title = fissionTemp.fession_title; //Fiss.container_info = fissionTemp.container_info?.Replace("'>", "'>"); //Fiss.main_pic = fissionTemp.main_pic; //Fiss.prop_pic = fissionTemp.prop_pic; //Fiss.props = fissionTemp.props; //Fiss.mainWord = fissionTemp.mainWord; //Fiss.viceword = fissionTemp.viceword; //Fiss.prop = fissionTemp.prop; //Fiss.skus = fissionTemp.skus; //Fiss.from_shop_name = fissionTemp.from_shop_name; //Fiss.qualifications = fissionTemp.qualifications; } catch (Exception ex) { LogSave.Add("获取裂变明细信息发生异常" + ex.Message); } } var result = ""; var fission_title = Fiss?.fession_title?.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)?[0]; ProductCollectBase pcb = FissionData2Pcb(Fiss, fission_title); if (pcb != null) { pcbList.Add(pcb); } else { result = "添加失败"; } // 更新DataGridView // isTitleNumLimited 是否限定每个裂变商品的上传个数 UpdateUseCount(FissId); foreach (DataGridViewRow row in this.dgvFissionProduct.Rows) { if (row.Cells["ColId"].Value.ToString() == FissId.ToString()) { row.Cells["colMessage"].Value = result; break; } } if (pcbList.Count >= 50) { // 添加到上传数据库 UploadProductForm.ImportFromFission(pcbList); pcbList.Clear(); // 记录使用次数 SetUseCount(fissionDataBaseIds); fissionDataBaseIds = ""; } } Invoke(new Action(() => { progressBarX1.Value = i; })); } // 添加到上传数据库 UploadProductForm.ImportFromFission(pcbList); pcbList.Clear(); // 记录使用次数 SetUseCount(fissionDataBaseIds); fissionDataBaseIds = ""; Invoke(new Action(() => { progressBarX1.Value = progressBarX1.Maximum; this.btnAddFissToUpload.Enabled = true; var ts = DateTime.Now - startTime; var min = (int)Math.Floor(ts.TotalMinutes); var sec = (int)Math.Floor(ts.TotalSeconds) % 60; BaseMsgForm.ShowInfo("添加完成,累计耗时:" + min + "分" + sec + "秒", "提示"); pbLoading.Visible = false; progressBarX1.Visible = false; })); } /// /// 设置使用次数信息更新 /// public void SetUseCount(string fessDbIds) { try { string getRequestData = UserLogin.GetSignaturex() + "&act=set&id=" + fessDbIds; string getUrl = BaseClass.BuildFissionObjString("fession_api"); string Result = GetHtml.PostUtf8(getUrl, getRequestData); } catch (Exception ex) { LogSave.Add("SetUseCount发生异常:" + ex.Message); } } /// /// 更新使用次数 /// /// public void UpdateUseCount(int FessId, int useCount = 1) { for (int i = 0; i < dgvFissionProduct.Rows.Count; i++) { var id = dgvFissionProduct.Rows[i].Cells["ColId"].Value.ToString(); if (id != FessId.ToString()) continue; int sUserCount = Convert.ToInt32(dgvFissionProduct.Rows[i].Cells["ColUseCount"].Value.ToString()); dgvFissionProduct.Rows[i].Cells["ColUseCount"].Value = sUserCount + useCount; var Fess = LstFission.Find(f => f != null && f.id == FessId); Fess.times += useCount; break; } } FissionDataModel Fiss2FissionDataModel(FissionData fissData) { if (fissData == null) return null; FissionDataModel fdm = new FissionDataModel() { addPricePercent = fissData.add_pricepercent.ParseToDecimal(), adjustPrice = fissData.is_changeprice.ParseToInt(), baseAddPrice = fissData.base_addprice.ParseToInt(), cat2_name = fissData.cat2_name, cat3_name = fissData.cat3_name, cate_id = fissData.cate_id.ParseToInt(), //content_pic = fissData.container_info.Split(';').ToList(), discount = fissData.discount, fessionCount = fissData.fession_count, fessionTitle = fissData.fession_title.Split(new string[] { ";", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(), fession_id = fissData.fession_id, from_shop_name = fissData.from_shop_name, fullCategoryName = fissData.full_category_name, id = fissData.fession_id, mainCategory = fissData.main_cate, mainWord = fissData.mainWord, main_cate_id = fissData.main_cateid.ParseToInt(), main_pic = fissData.main_pic.Split(';').ToList(), postFree = fissData.postFree, price = fissData.price, prop = fissData.prop, props = fissData.props, prop_pic = fissData.prop_pic.Split(';').ToList(), qualifications = fissData.qualifications, sales = fissData.sales, secondCategory = fissData.second_cate, skus = fissData.skus, source = fissData.source, teamGroup = fissData.category, title = fissData.title, viceWord = fissData.viceword, }; fdm.content_pic = new List(); var container_infos = fissData.container_info?.Replace("'>", "'>"); var containerGroupList = container_infos.Split(new string[] { "
" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < containerGroupList.Length; i++) { var container_info = containerGroupList[i]; var content_imgs = BaseRegex.GetMatchRegex(ref container_info, ""); if (content_imgs != null) { List content = new List(); foreach (Match m in content_imgs) { var src = m.Groups[1]?.ToString(); if (src != null) content.Add(src); } // 添加分组间隔 if (content.Count > 0 && i > 0) fdm.content_pic.Add("new_group"); fdm.content_pic.AddRange(content); } } return fdm; } public FissionData FissDataModel2Fission(FissionDataModel fissionDataModel) { if (fissionDataModel == null) return null; if (fissionDataModel.prop_pic == null) fissionDataModel.prop_pic = new List(); fissionDataModel.prop_pic?.Clear(); var props = JsonHelper.DeserializeJsonToObject>(fissionDataModel.props); foreach (var prop in props) { foreach (var value in prop.Values) { if (!string.IsNullOrEmpty(value.image)) { var strImg = value.image; if (!strImg.StartsWith("http")) strImg = "http:" + strImg; fissionDataModel.prop_pic.Add(strImg); } } } FissionData fd = new FissionData() { add_pricepercent = fissionDataModel.addPricePercent.ParseToInt(), is_changeprice = fissionDataModel.adjustPrice.ToString(), base_addprice = fissionDataModel.baseAddPrice.ParseToInt(), cat2_name = fissionDataModel.cat2_name, cat3_name = fissionDataModel.cat3_name, cate_id = fissionDataModel.cate_id.ParseToString(), //content_pic = fissData.container_info.Split(';').ToList(), discount = fissionDataModel.discount, fession_count = fissionDataModel.fessionCount, fession_title = string.Join(";", fissionDataModel.fessionTitle), fession_id = fissionDataModel.fession_id, from_shop_name = fissionDataModel.from_shop_name, full_category_name = fissionDataModel.fullCategoryName, id = fissionDataModel.id.ParseToInt(), main_cate = fissionDataModel.mainCategory, mainWord = fissionDataModel.mainWord, main_cateid = fissionDataModel.main_cate_id.ToString(), main_pic = string.Join(";", fissionDataModel.main_pic), postFree = fissionDataModel.postFree, price = fissionDataModel.price, prop = fissionDataModel.prop, props = fissionDataModel.props, prop_pic = string.Join(";", fissionDataModel.prop_pic), qualifications = fissionDataModel.qualifications, sales = fissionDataModel.sales, second_cate = fissionDataModel.secondCategory, skus = fissionDataModel.skus, source = fissionDataModel.source, category = fissionDataModel.teamGroup, title = fissionDataModel.title, viceword = fissionDataModel.viceWord, }; fd.container_info = ""; foreach (var picUrl in fissionDataModel.content_pic) { if (picUrl == "new_group") fd.container_info += "
"; else fd.container_info += ""; } return fd; } public static ProductCollectBase FissionData2Pcb(FissionData fissData, string title) { // 是否调节价格 对应字段:ProductCollectBase.is_changeprice // 加价倍数 对应字段:ProductCollectBase.addPricePe rcent // 基础加价 对应字段:ProductCollectBase.baseAddPrice // 拼团折扣 对应字段:ProductCollectBase.discount if (fissData == null) return null; ProductCollectBase pcb = new ProductCollectBase(); pcb.fissionDataBaseId = fissData.id; // 是否是进化数据商品 pcb.isFission = true; // 商品id pcb.from_id = fissData.fession_id.ParseToLong(); // 销量 pcb.saleCount = fissData.sales.ParseToInt(); // 价格 pcb.price = fissData.price.ParseToDecimal(); // 原标题:不用修改 pcb.from_title = pcb.from_name = fissData.title; // 裂变标题 pcb.fission_names = fissData.fession_title?.Split(new string[] { "\r", "\n", ";" }, StringSplitOptions.RemoveEmptyEntries).ToList(); // 修改后的标题 pcb.name = pcb.fission_names != null && pcb.fission_names.Count > 0 ? pcb.fission_names[0] : fissData.title; // 来源 pcb.from = fissData.source; // 来源地址 pcb.from_url = GetFromUrl(fissData.source, fissData.fession_id); // 邮费金额 pcb.express_price = fissData.postFree == null ? 0 : fissData.postFree.ParseToDecimal(); // 主图 pcb.Images = string.IsNullOrEmpty(fissData.main_pic) ? new List() : fissData.main_pic.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList(); // 详情图 pcb.content = fissData.container_info?.Replace("'>", "'>"); // 子分类id pcb.cat_id = fissData.cate_id.ParseToInt(); // 主分类id pcb.main_cid = fissData.main_cateid.ParseToInt(); // 主分类名称 pcb.main_cat_name = fissData.main_cate; // 是否调节价格 pcb.is_changeprice = fissData.is_changeprice == "1" ? "True" : "False"; // 加价比例 pcb.addPricePercent = fissData.add_pricepercent.ParseToDecimal(); // 基础加价 pcb.baseAddPrice = fissData.base_addprice.ParseToDecimal(); // 折扣比例 pcb.discount = fissData.discount; // 商品属性 try { pcb.Prop = JsonHelper.DeserializeJsonToList(fissData.prop); } catch { } // sku属性列表 try { pcb.Props = JsonHelper.DeserializeJsonToList(fissData.props); } catch { } // 来源店铺名称 pcb.from_shop_name = fissData.from_shop_name; // sku列表 try { pcb.SkuMaps = JsonHelper.DeserializeJsonToList(fissData.skus); } catch { } // 资质文件列表 try { pcb.qualifications = JsonHelper.DeserializeJsonToList(fissData.qualifications); } catch { } if (pcb.from == "淘宝") pcb.from_site_id = 1; else if (pcb.from == "拼多多") pcb.from_site_id = 2; else if (pcb.from == "阿里巴巴" || pcb.from == "1688") pcb.from_site_id = 3; else if (pcb.from == "京喜") pcb.from_site_id = 4; else if (pcb.from == "微店") pcb.from_site_id = 6; else if (pcb.from == "抖音") pcb.from_site_id = 7; return pcb; } private void btnClearParams_Click(object sender, EventArgs e) { this.txtPriceMin.Text = "0"; this.txtPriceMax.Text = "99999"; this.txtSaleAmountMin.Text = "0"; this.txtSaleAmountMax.Text = "99999"; this.txtMinTimes.Text = "0"; this.txtMaxTimes.Text = "99999"; this.txtFisssionTitle.Text = ""; this.dtBaginTime.Text = ""; this.dtEndTime.Text = ""; this.cmbSource.SelectedIndex = 0; if (cmbCat1.Items.Count > 0) cmbCat1.SelectedIndex = 0; if (cmbShopCat1.Items.Count > 0) cmbShopCat1.SelectedIndex = 0; if (cmbGroup.Items.Count > 0) this.cmbGroup.SelectedIndex = 0; if (cmbCheckResult.Items.Count > 0) cmbCheckResult.SelectedIndex = 0; } private void btnClearList_Click(object sender, EventArgs e) { DialogResult result = BaseMsgForm.ShowConfirm("确认清空当前搜索结果吗?", "提示").DialogResult; if (result == DialogResult.OK) { IsStop = true; this.dgvFissionProduct.Rows.Clear(); LstFission.Clear(); } } private void btnDeleteSelect_Click(object sender, EventArgs e) { if (ClickType == 1) { BaseMsgForm.ShowInfo("产品回收站的数据无法删除!"); return; } var fissionRowList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColSelect"].Value.ParseToBool()).ToList(); var fissionIdList = fissionRowList.Select(r => r.Cells["ColId"].Value.ToString()).ToList(); if (fissionIdList.Count == 0) { BaseMsgForm.ShowInfo("请选择要删除的数据", "提示"); return; } //if (BaseMsgForm.ShowConfirm("是否确认删除勾选数据?\r\n注:如果上货列表中有此数据将会一并删除。").DialogResult.Equals(DialogResult.Cancel)) return; if (BaseMsgForm.ShowConfirm("是否确认删除勾选数据?").DialogResult.Equals(DialogResult.Cancel)) return; // 根据上家标题,原始Id删除数据库数据 string strTemp = ""; foreach (var id in fissionIdList) { strTemp += id + ","; } new FissionDataBaseBLL().DelFessionData(strTemp); foreach (var row in fissionRowList) { string OrgId = row.Cells["OriginalId"].Value.ToString(); // 原商品ID //// 删除listFissionPcb //UploadProductForm.lstFissionPcb.RemoveAll(x => x != null && x.from_id == OrgId.ParseToLong()); //// 删除上货列表备用商品 //UploadProductBLL.ProductStock.RemoveAll(x => x.FromId == OrgId.ParseToLong()); //// 删除本地数据库备用商品 //UploadProductBLL.Delete(OrgId); //// 刷新上传界面的上传队列数量 //UploadProductForm.instance?.remain(); } // 删除行 foreach (var row in fissionRowList) { dgvFissionProduct.Rows.Remove(row); } } private void btnToUpload_Click(object sender, EventArgs e) { if (UploadForm.instance != null) UploadForm.instance.SetTvSelect("商品发布"); } private void pnlDelCate_Click(object sender, EventArgs e) { string groupName = cmbGroup.SelectedItem.ToString(); if (groupName == "不限") { BaseMsgForm.ShowInfo("不能删除不限!"); return; } if (BaseMsgForm.ShowConfirm("确定要删除选中的裂变分组和数据吗?", "提示").DialogResult == DialogResult.OK) { // 删除分组 string requestData = UserLogin.GetSignaturex() + "&act=delete_category&category=" + GetHtml.UrlEncodeUtf8(groupName); string url = BaseClass.BuildFissionObjString("fession_api"); string result = GetHtml.PostUtf8(url, requestData); if (result != "ok") { LogSave.Add("删除组失败", "group name: " + groupName + " result: " + result); } else { BaseMsgForm.ShowInfo("删除组成功"); var groupList = new FissionDataBaseBLL().GetCategoryGroup(); cmbGroup.DataSource = groupList; cmbGroup.SelectedIndex = 0; var fissionRowList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColCategory"].Value.ParseToString() == groupName); // 删除行 foreach (var row in fissionRowList) { dgvFissionProduct.Rows.Remove(row); } } } } private void lblPrev_Click(object sender, EventArgs e) { if (txtCurrentPage.Text.ParseToInt() > 1) txtCurrentPage.Text = (txtCurrentPage.Text.ParseToInt() - 1).ToString(); SearchFission(); } private void lblNext_Click(object sender, EventArgs e) { if (txtCurrentPage.Text.ParseToInt() < lblTotalPage.Text.ParseToInt()) txtCurrentPage.Text = (txtCurrentPage.Text.ParseToInt() + 1).ToString(); SearchFission(); } private void cmbCat1_SelectedIndexChanged(object sender, EventArgs e) { } public bool isCheckRun = false; private void btnCheckUpProduct_Click(object sender, EventArgs e) { this.btnCheckUpProduct.Enabled = false; Task.Run(() => { Thread.Sleep(3000); Invoke(new Action(() => { this.btnCheckUpProduct.Enabled = true; })); }); if (this.btnCheckUpProduct.Text == "停止校验") { isCheckRun = false; return; } var fissionRowList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColSelect"].Value.ParseToBool()).ToList(); var fissionIdList = fissionRowList.Select(r => r.Cells["ColId"].Value.ToString()).ToList(); if (fissionIdList.Count == 0) { this.btnCheckUpProduct.Enabled = true; BaseMsgForm.ShowInfo("请选择要校验的数据", "提示"); return; } this.isCheckRun = true; this.btnCheckUpProduct.Text = "停止校验"; IsAutoTurnPage = chkAutoTurnPage.Checked && fissionIdList.Count == this.dgvFissionProduct.RowCount; Task.Run(() => { autoTurnPage: foreach (var Id in fissionIdList) { if (!isCheckRun) break; Thread.Sleep(50); var Fiss = this.LstFission.FirstOrDefault(f => f.id.ToString() == Id); if (Fiss == null) continue; try { var fissionTemp = new FissionDataBaseBLL().GetFessionDetailById(Id.ParseToInt()); Fiss.fession_title = fissionTemp.fession_title; while (fissionTemp.container_info != null && fissionTemp.container_info.Contains("'>", "'>"); } Fiss.container_info = fissionTemp.container_info; Fiss.main_pic = fissionTemp.main_pic; Fiss.prop_pic = fissionTemp.prop_pic; Fiss.props = fissionTemp.props; Fiss.mainWord = fissionTemp.mainWord; Fiss.viceword = fissionTemp.viceword; Fiss.prop = fissionTemp.prop; Fiss.skus = fissionTemp.skus; Fiss.from_shop_name = fissionTemp.from_shop_name; Fiss.qualifications = fissionTemp.qualifications; } catch (Exception ex) { LogSave.Add("获取裂变明细信息发生异常" + ex.Message); } if (string.IsNullOrEmpty(Fiss.fession_title)) continue; if (Fiss.update_time.ParseToDateTime() > DateTime.Now.Date.AddDays(-7)) { foreach (DataGridViewRow row in this.dgvFissionProduct.Rows) { if (row.Cells["ColId"].Value.ToString() == Fiss.id.ToString()) { Invoke(new Action(() => { row.Cells["colMessage"].Value = "近期已校验"; })); break; } } continue; } ProductCollectBase pcb = FissionData2Pcb(Fiss, Fiss.fession_title); // 校验总店商品是否发生变化或下架 string msg = ""; var pcb_new = CheckProductStatus(pcb, out msg); if (msg == "商品已下架") { FissionDataModel fdm = Fiss2FissionDataModel(Fiss); fdm.update_check_passed = 9; if (!IsDeleteUpDown) { string result = new FissionBrowserObject().updateFessionDate(JsonHelper.SerializeObject(fdm)); } var FissId = Fiss.id.ToString(); DataGridViewRow dgvRow = null; foreach (DataGridViewRow row in this.dgvFissionProduct.Rows) { if (row.Cells["ColId"].Value.ToString() == FissId) { dgvRow = row; Invoke(new Action(() => { dgvRow.Cells["colMessage"].Value = "总店商品已下架,请删除"; row.Cells["ColNeedUpdate"].Value = fdm.update_check_passed == 9 ? "上家下架" : ""; // 校验更新 })); break; } } if (IsDeleteUpDown) { new FissionDataBaseBLL().DelFessionData(Id); if (dgvRow != null) this.dgvFissionProduct.Rows.Remove(dgvRow); this.LstFission.Remove(Fiss); } } else if (pcb_new != pcb || msg == "商品价格发生变化") { if ((pcb_new != pcb && IsUpdateUpChange) || msg == "商品价格发生变化") { Fiss.price = pcb_new.price.ToString(); Fiss.skus = JsonHelper.SerializeObject(pcb_new.SkuMaps); Fiss.prop = JsonHelper.SerializeObject(pcb_new.Prop); Fiss.props = JsonHelper.SerializeObject(pcb_new.Props); Fiss.main_pic = string.Join(";", pcb_new.Images); Fiss.prop_pic = ""; foreach (var p in pcb_new.Props) { foreach (var pv in p.Values) { if (!string.IsNullOrEmpty(pv.image)) Fiss.prop_pic += pv.image + ";"; } } Fiss.prop_pic = Fiss.prop_pic.TrimEnd(';'); FissionDataModel fdm = Fiss2FissionDataModel(Fiss); fdm.update_check_passed = 1; string result = new FissionBrowserObject().updateFessionDate(JsonHelper.SerializeObject(fdm)); if (result == null) result = ""; result = JsonHelper.SerializeObject(JObject.Parse(result)); string updateMsg = BaseRegex.GetStringJson(ref result, "msg"); if (result.Contains("\"code\":0")) { updateMsg = "总店商品规格变化更新成功"; if (msg == "商品价格发生变化") updateMsg = "总店商品价格变化更新成功"; } else { updateMsg = "总店商品规格变化更新失败"; if (msg == "商品价格发生变化") updateMsg = "总店商品价格变化更新失败"; } var FissId = Fiss.id.ToString(); foreach (DataGridViewRow row in this.dgvFissionProduct.Rows) { if (row.Cells["ColId"].Value.ToString() == FissId) { Invoke(new Action(() => { row.Cells["colMessage"].Value = updateMsg; row.Cells["ColNeedUpdate"].Value = fdm.update_check_passed == 1 ? "" : "请更新商品"; // 校验更新 })); break; } } } else { FissionDataModel fdm = Fiss2FissionDataModel(Fiss); fdm.update_check_passed = 0; string result = new FissionBrowserObject().updateFessionDate(JsonHelper.SerializeObject(fdm)); var FissId = Fiss.id.ToString(); foreach (DataGridViewRow row in this.dgvFissionProduct.Rows) { if (row.Cells["ColId"].Value.ToString() == FissId) { Invoke(new Action(() => { row.Cells["colMessage"].Value = "总店商品规格变化,请更新"; row.Cells["ColNeedUpdate"].Value = fdm.update_check_passed == 1 ? "" : "请更新商品"; // 校验更新 })); break; } } } } else { FissionDataModel fdm = Fiss2FissionDataModel(Fiss); string result = new FissionBrowserObject().updateFessionDate(JsonHelper.SerializeObject(fdm)); var FissId = Fiss.id.ToString(); foreach (DataGridViewRow row in this.dgvFissionProduct.Rows) { if (row.Cells["ColId"].Value.ToString() == FissId) { Invoke(new Action(() => { row.Cells["colMessage"].Value = msg == "商品采集失败" ? msg : "商品无需更新"; row.Cells["ColNeedUpdate"].Value = ""; // 校验更新 })); break; } } } } if (IsAutoTurnPage && isCheckRun && lblCurrentPage.Text.ParseToInt() < lblTotalPage.Text.ParseToInt()) { IsTurnPage = true; Invoke(new Action(() => { lblNext_Click(null, null); chkAll.Checked = true; fissionRowList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColSelect"].Value.ParseToBool()).ToList(); fissionIdList = fissionRowList.Select(r => r.Cells["ColId"].Value.ToString()).ToList(); })); Thread.Sleep(1000); goto autoTurnPage; } Invoke(new Action(() => { this.btnCheckUpProduct.Text = "校验勾选"; })); }); } /// /// 获取上家商品最新详情与当前数据库商品(pcb_old)校验是否有更新 /// /// /// /// private ProductCollectBase CheckProductStatus(ProductCollectBase pcb_old, out string msg) { msg = ""; bool isPriceChange = false; bool isProductChange = false; ProductCollectBase pcb_new = GetNewPcb(pcb_old, out msg); if (msg == "商品已下架") return pcb_old; if (string.IsNullOrEmpty(pcb_new.image) && (pcb_new.Images == null || pcb_new.Images.Count == 0 || string.IsNullOrEmpty(pcb_new.Images[0]))) { msg = "商品采集失败"; return pcb_old; } if (string.IsNullOrEmpty(pcb_old.image) && (pcb_old.Images == null || pcb_old.Images.Count == 0 || string.IsNullOrEmpty(pcb_old.Images[0]))) { isProductChange = true; return pcb_new; } if (pcb_old.price != pcb_new.price) { msg = "商品价格发生变化"; isPriceChange = true; pcb_old.price = pcb_new.price; } foreach (var sku in pcb_old.SkuMaps) { var sku_new = pcb_new.SkuMaps.FirstOrDefault(s => s.name == sku.name); if (sku_new != null) { if (sku_new.price != sku.price) { msg = "商品价格发生变化"; isPriceChange = true; sku.price = sku_new.price; } continue; } else { isProductChange = true; return pcb_new; } } return pcb_old; } public ProductCollectBase GetNewPcb(ProductCollectBase pcb_old, out string msg) { msg = ""; ProductCollectBase pcb_new = new ProductCollectBase(); pcb_new.from_id = pcb_old.from_id; pcb_new.from_url = GetFromUrl(pcb_old.from, pcb_new.from_id.ToString()); if (pcb_old.from == "抖音") { CollectDoyin cd = new CollectDoyin(pcb_new); cd.GetProduct(); cd.Product.from = "抖音"; cd.Product.from_url = GetFromUrl("抖音", pcb_new.from_id.ToString()); pcb_new = cd.Product; if (!cd.Product.IsOnSale) msg = "商品已下架"; } else if (pcb_old.from == "拼多多") { TaobaoProductBase tp = new TaobaoProductBase(); tp.FromId = pcb_old.from_id; tp.FromType = "拼多多"; tp.GoodsId = tp.FromId; PinduoduoProductCollect pdd = new PinduoduoProductCollect(Name, tp); pdd.Get(); pdd.pb.from = "拼多多"; pdd.pb.from_url = "http://mobile.yangkeduo.com/goods.html?goods_id=" + tp.GoodsId; pcb_new = pdd.pb; if (!pdd.OnSale) msg = "商品已下架"; } else if (pcb_old.from == "阿里巴巴" || pcb_old.from == "1688") { AlibabaProductGet alibbProInfo = new AlibabaProductGet(pcb_new); alibbProInfo.Get(); alibbProInfo.Product.from = "阿里巴巴"; alibbProInfo.Product.from_url = pcb_new.from_url; pcb_new = alibbProInfo.Product; if (!alibbProInfo.OnSale) msg = "商品已下架"; } else if (pcb_old.from == "京喜" || pcb_old.from == "京东") { JingXiCollect tm = new JingXiCollect(pcb_new); tm.Get(); tm.Product.from = "京喜"; tm.Product.from_url = pcb_new.from_url; pcb_new = tm.Product; if (!tm.IsOnSale) msg = "商品已下架"; } else { TaobaoMobileCollect goodsInfo = new TaobaoMobileCollect(pcb_new); goodsInfo.Get(); goodsInfo.Product.from = pcb_old.from; goodsInfo.Product.from_url = pcb_new.from_url; pcb_new = goodsInfo.Product; if (goodsInfo.IsDown) msg = "商品已下架"; } pcb_new.message_alert = msg; return pcb_new; } private void chkDeleteUpDown_CheckedChanged(object sender, EventArgs e) { IsDeleteUpDown = chkDeleteUpDown.Checked; } private void chkUpdateUpChange_CheckedChanged(object sender, EventArgs e) { IsUpdateUpChange = chkUpdateUpChange.Checked; } private void btnEditCheckUpdate_Click(object sender, EventArgs e) { var fissionRowList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColNeedUpdate"].Value.ToString() == "请更新商品").ToList(); var fissionIdList = fissionRowList.Select(r => r.Cells["ColId"].Value.ToString()).ToList(); if (fissionIdList.Count == 0) { BaseMsgForm.ShowInfo("没有需要更新的商品", "提示"); return; } //var fissionRowList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColSelect"].Value.ParseToBool()).ToList(); //var fissionIdList = fissionRowList.Select(r => r.Cells["ColId"].Value.ToString()).ToList(); //if (fissionIdList.Count == 0) //{ // BaseMsgForm.ShowInfo("请选择要编辑的数据", "提示"); // return; //} var Fissions = LstFission.Where(f => fissionIdList.Contains(f.id.ToString())).ToList(); if (Fissions.Count > 0) { var Fiss = Fissions[0]; try { var fissionTemp = new FissionDataBaseBLL().GetFessionDetailById(Fiss.id.ParseToInt()); Fiss.fession_title = fissionTemp.fession_title; Fiss.container_info = fissionTemp.container_info?.Replace("'>", "'>"); Fiss.main_pic = fissionTemp.main_pic; Fiss.prop_pic = fissionTemp.prop_pic; Fiss.props = fissionTemp.props; Fiss.mainWord = fissionTemp.mainWord; Fiss.viceword = fissionTemp.viceword; Fiss.prop = fissionTemp.prop; Fiss.skus = fissionTemp.skus; Fiss.from_shop_name = fissionTemp.from_shop_name; Fiss.qualifications = fissionTemp.qualifications; } catch (Exception ex) { LogSave.Add("获取裂变明细信息发生异常" + ex.Message); } if (string.IsNullOrEmpty(Fiss.fession_title)) return; if (Fiss.source == "laiyuan") { if (Fiss.main_pic.Contains("pddpic") || Fiss.prop_pic.Contains("pddpic") || Fiss.container_info.Contains("pddpic")) { Fiss.source = "拼多多"; } } ProductCollectBase pcb = FissionData2Pcb(Fiss, Fiss.fession_title); // 校验总店商品是否发生变化 string msg = ""; var pcb_new = CheckProductStatus(pcb, out msg); if (msg == "商品已下架") { BaseMsgForm.ShowInfo("总店商品已下架 !"); //return; } string createHtmlPath = Fission.creatFissionPage(pcb_new); var sFromUrl = ""; foreach (var fi in Fissions) { sFromUrl += GetFromUrl(fi.source, fi.fession_id) + "\r\n"; } sFromUrl = sFromUrl.TrimEnd('\r', '\n'); Fission fs = new Fission(createHtmlPath, sFromUrl, null, pcb, Fiss.category, Fiss.full_category_name, Fiss.fession_title); fs.Show(); } } private void chkNeedUpdate_CheckedChanged(object sender, EventArgs e) { //ProductUpdateCheckResult = chkNeedUpdate.Checked; } private void btnMulitEdit_Click(object sender, EventArgs e) { var fissionRowList = this.dgvFissionProduct.Rows.Cast().Where(r => r.Cells["ColSelect"].Value.ParseToBool()).ToList(); var fissionIdList = fissionRowList.Select(r => r.Cells["ColId"].Value.ToString()).ToList(); if (fissionIdList.Count == 0) { BaseMsgForm.ShowInfo("没有勾选商品", "提示"); return; } var Fissions = LstFission.Where(f => fissionIdList.Contains(f.id.ToString())).ToList(); if (Fissions.Count > 0) { var Fiss = Fissions[0]; try { var fissionTemp = new FissionDataBaseBLL().GetFessionDetailById(Fiss.id.ParseToInt()); Fiss.fession_title = fissionTemp.fession_title; Fiss.container_info = fissionTemp.container_info?.Replace("'>", "'>"); Fiss.main_pic = fissionTemp.main_pic; Fiss.prop_pic = fissionTemp.prop_pic; Fiss.props = fissionTemp.props; Fiss.mainWord = fissionTemp.mainWord; Fiss.viceword = fissionTemp.viceword; Fiss.prop = fissionTemp.prop; Fiss.skus = fissionTemp.skus; Fiss.from_shop_name = fissionTemp.from_shop_name; Fiss.qualifications = fissionTemp.qualifications; } catch (Exception ex) { LogSave.Add("获取裂变明细信息发生异常" + ex.Message); } if (string.IsNullOrEmpty(Fiss.fession_title)) return; ProductCollectBase pcb = FissionData2Pcb(Fiss, Fiss.fession_title); // 校验总店商品是否发生变化 string msg = ""; var pcb_new = GetNewPcb(pcb, out msg); string createHtmlPath = Fission.creatFissionPage(pcb); var sFromUrl = ""; foreach (var fi in Fissions) { sFromUrl += GetFromUrl(fi.source, fi.fession_id) + "\r\n"; } sFromUrl = sFromUrl.TrimEnd('\r', '\n'); Fission fs = new Fission(createHtmlPath, sFromUrl, Fissions, pcb, Fiss.category, Fiss.full_category_name, Fiss.fession_title); fs.Show(); } } public void UpdateFissionData(FissionDataModel fissionDataModel) { var fissionExist = FissionDataBaseForm.Instance.LstFission.Find(f => f.fession_id == fissionDataModel.fession_id); if (fissionExist != null) { var fissionNew = FissionDataBaseForm.Instance.FissDataModel2Fission(fissionDataModel); fissionExist.add_pricepercent = fissionNew.add_pricepercent; fissionExist.base_addprice = fissionNew.base_addprice; fissionExist.cat2_name = fissionNew.cat2_name; fissionExist.cat3_name = fissionNew.cat3_name; fissionExist.category = fissionNew.category; fissionExist.cate_id = fissionNew.cate_id; fissionExist.container_info = fissionNew.container_info; fissionExist.discount = fissionNew.discount; fissionExist.fession_count = fissionNew.fession_count; fissionExist.fession_title = fissionNew.fession_title; fissionExist.full_category_name = fissionNew.full_category_name; fissionExist.is_changeprice = fissionNew.is_changeprice; fissionExist.mainWord = fissionNew.mainWord; fissionExist.main_cate = fissionNew.main_cate; fissionExist.main_cateid = fissionNew.main_cateid; fissionExist.main_pic = fissionNew.main_pic; fissionExist.postFree = fissionNew.postFree; fissionExist.price = fissionNew.price; fissionExist.prop = fissionNew.prop; fissionExist.props = fissionNew.props; fissionExist.prop_pic = fissionNew.prop_pic; fissionExist.qualifications = fissionNew.qualifications; fissionExist.second_cate = fissionNew.second_cate; fissionExist.skus = fissionNew.skus; fissionExist.title = fissionNew.title; fissionExist.viceword = fissionNew.viceword; var row = this.dgvFissionProduct.Rows.Cast().FirstOrDefault(r => r.Cells["ColId"].Value?.ToString() == fissionExist.id.ToString()); if (row != null) { string catStr = Fission.GetFullCatString(fissionExist.cate_id.ParseToInt()); if (string.IsNullOrEmpty(catStr)) catStr = fissionExist.full_category_name; if (string.IsNullOrEmpty(catStr)) catStr = fissionExist.main_cate; if (catStr == null) catStr = ""; row.Cells["Title"].Value = fissionExist.fession_title; // 新标题 row.Cells["ColCategory"].Value = fissionExist.category; // 组别 row.Cells["ColFullCategory"].Value = catStr; // 完整类目 row.Cells["ColCategory1"].Value = fissionExist.main_cate; // 类目1 row.Cells["ColCategory2"].Value = fissionExist.cat2_name; // 类目2 row.Cells["ColCategory3"].Value = fissionExist.cat3_name; // 类目3 row.Cells["ColTitleNum"].Value = fissionExist.TitleNum; // 标题数量 } } } } }