using AllBase; using AllBase.Helper; using AllBase.Model.Result; using AllBase.Model.Result.WXResult; using NaiBa.Util.Extension; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using TemuKJD.BaseForms; using TemuKJD.BLL; using TemuKJD.PDDForms.ProductSelectForms; using TemuKJD.ToolForms; using Work; namespace TemuKJD.WXForms.ProductForms { public partial class WXUserCollectAuthProdEditNotesForm : BaseGeneralForm { KJDDBProduct dbProd = null; KJDDBProduct dbProdDetail = null; List selectCate1 = new List(); List selectCate2 = new List(); List selectCate3 = new List(); List selectCate4 = new List(); public WXUserCollectAuthProdEditNotesForm(KJDDBProduct prod) { InitializeComponent(); dbProd = prod; } private void ProductSelectListForm_Load(object sender, EventArgs e) { lstSelectCateList.Height = 180; if (dbProd != null) { txtProductName.Text = dbProd.product_name; txtSpuId.Text = dbProd.spu_id; this.pictureBox1.Tag = dbProd.main_img.Replace("https", "http"); if (dbProd.main_img.Contains("wxapp")) { string getImgError = ""; this.pictureBox1.Image = ImageBuild.LoadBitmapLoadBitmipImageFromUrl(dbProd.main_img, out getImgError); } else this.pictureBox1.ImageLocation = dbProd.main_img.Replace("https", "http"); this.txtNotes.Text = dbProd.notes; this.txtFissionWords.Text = dbProd.fission_words.Replace("fission_goods_names:", ""); if (string.IsNullOrWhiteSpace(dbProd?.product_json)) { dbProdDetail = GetPddProductDetail(dbProd.id.ToString()); //if (prodTmp != null) //{ // dbProd = prodTmp; //} } fillWxCate(); string catName = (dbProd.cat_name ?? dbProd.cat_id) + "(未识别)"; if (dbProd.wx_cat_1 != null) { var catN = GlobalConfig.WxCatList.FirstOrDefault(c => c.cat_id == dbProd.wx_cat_1.ParseToString())?.name; cmbCateFilter1.Text = catN.ParseToString(); if (!string.IsNullOrEmpty(catN)) { catName = catN; } } if (dbProd.wx_cat_2 != null) { var catN = GlobalConfig.WxCatList.FirstOrDefault(c => c.cat_id == dbProd.wx_cat_2.ParseToString())?.name; cmbCateFilter2.Text = catN.ParseToString(); if (!string.IsNullOrEmpty(catN)) { catName = catName + " >> " + catN; } } if (dbProd.wx_cat_3 != null) { var catN = GlobalConfig.WxCatList.FirstOrDefault(c => c.cat_id == dbProd.wx_cat_3.ParseToString())?.name; cmbCateFilter3.Text = catN.ParseToString(); if (!string.IsNullOrEmpty(catN)) { catName = catName + " >> " + catN; } } if (dbProd.wx_cat_leaf != null) { var catN = GlobalConfig.WxCatList.FirstOrDefault(c => c.cat_id == dbProd.wx_cat_leaf.ParseToString())?.name; cmbCateFilter4Leaf.Text = catN.ParseToString(); if (!string.IsNullOrEmpty(catN)) { catName = catName + " >> " + catN; } } txtCateSearch.WatermarkText = catName.Replace(">>", ">"); if (!dbProd.wx_cat_1.IsNullOrZero() && !dbProd.wx_cat_2.IsNullOrZero() && !dbProd.wx_cat_3.IsNullOrZero() && !dbProd.wx_cat_leaf.IsNullOrZero()) { //this.cmbCateFilter1.Text = } } } void fillWxCate() { cmbCateFilter1.Items.Clear(); cmbCateFilter2.Items.Clear(); cmbCateFilter3.Items.Clear(); cmbCateFilter4Leaf.Items.Clear(); cmbCateFilter1.Text = ""; cmbCateFilter2.Text = ""; cmbCateFilter3.Text = ""; cmbCateFilter4Leaf.Text = ""; foreach (var cate in GlobalConfig.WxCatList.Where(c => c.level == 1).ToList()) { cmbCateFilter1.Items.Add(cate.name); } } private void btnOk_Click(object sender, EventArgs e) { var url = BaseClass.BuildPDDObjString("product/mdy_db_product"); var data = UserLogin.GetSignaturex() + "&db_id=" + dbProd.id + "¬es=" + this.txtNotes.Text.Trim(); data += "&product_name=" + this.txtProductName.Text.Trim(); data += "&wx_cat_1=" + (selectCate1.FirstOrDefault()?.cat_id == null ? "null" : selectCate1.FirstOrDefault()?.cat_id.ParseToString()); data += "&wx_cat_2=" + (selectCate2.FirstOrDefault()?.cat_id == null ? "null" : selectCate2.FirstOrDefault()?.cat_id.ParseToString()); data += "&wx_cat_3=" + (selectCate3.FirstOrDefault()?.cat_id == null ? "null" : selectCate3.FirstOrDefault()?.cat_id.ParseToString()); data += "&wx_cat_leaf=" + (selectCate4.FirstOrDefault()?.cat_id == null ? "null" : selectCate4.FirstOrDefault()?.cat_id.ParseToString()); if (selectCate1.FirstOrDefault()?.cat_id != null) { data += "&main_cat_id=" + selectCate1.FirstOrDefault()?.cat_id + "&main_cat_name=" + HttpUtility.UrlEncode(selectCate1.FirstOrDefault()?.name, Encoding.UTF8); } if (selectCate4.FirstOrDefault()?.cat_id != null) { data += "&cat_id=" + selectCate4.FirstOrDefault()?.cat_id + "&cat_name=" + HttpUtility.UrlEncode(selectCate4.FirstOrDefault()?.name, Encoding.UTF8); } if (string.IsNullOrEmpty(this.txtFissionWords.Text.Trim())) data += "&fission_words="; else data += "&fission_words=" + "fission_goods_names:" + this.txtFissionWords.Text.Trim(); var html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { BaseMsgForm.ShowError("商品备注编辑失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg")); } else { dbProd.notes = this.txtNotes.Text.Trim(); dbProd.product_name = this.txtProductName.Text.Trim(); dbProd.wx_cat_1 = selectCate1.FirstOrDefault()?.cat_id == null ? null : selectCate1.FirstOrDefault()?.cat_id.ParseToLong(); dbProd.wx_cat_2 = selectCate2.FirstOrDefault()?.cat_id == null ? null : selectCate2.FirstOrDefault()?.cat_id.ParseToLong(); dbProd.wx_cat_3 = selectCate3.FirstOrDefault()?.cat_id == null ? null : selectCate3.FirstOrDefault()?.cat_id.ParseToLong(); dbProd.wx_cat_leaf = selectCate4.FirstOrDefault()?.cat_id == null ? null : selectCate4.FirstOrDefault()?.cat_id.ParseToLong(); if (selectCate1.FirstOrDefault()?.cat_id != null) { dbProd.main_cat_id = selectCate1.FirstOrDefault()?.cat_id; dbProd.main_cat_name = selectCate1.FirstOrDefault()?.name; } if (selectCate4.FirstOrDefault()?.cat_id != null) { dbProd.cat_id = selectCate4.FirstOrDefault()?.cat_id; dbProd.cat_name = selectCate4.FirstOrDefault()?.name; } if (string.IsNullOrEmpty(this.txtFissionWords.Text.Trim())) dbProd.fission_words = ""; else dbProd.fission_words = "fission_goods_names:" + this.txtFissionWords.Text.Trim(); this.Close(); } } private void pictureBox1_Click(object sender, EventArgs e) { ShowImgForm imgFrom = new ShowImgForm(pictureBox1.ImageLocation.IsNullOrEmpty() ? pictureBox1.Tag.ParseToString() : pictureBox1.ImageLocation); imgFrom.ShowDialog(); } public static KJDDBProduct GetPddProductDetail(string prodDbId) { if (string.IsNullOrEmpty(prodDbId)) return new KJDDBProduct(); List list = new List(); if (BaseClass.SaLevel != 1) Thread.Sleep(Randomx.GetId(3000, 5000)); var url = BaseClass.BuildPDDObjString("product/get_product_detail_list"); var data = ""; data = UserLogin.GetSignaturex() + "&search_db_ids=" + prodDbId; if (BaseClass.SaLevel > 0 || BaseClass.UserAuthority.Contains("爆款数据")) data += "&special_prod_type=普通商品,书籍,爆款数据"; var html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { return null; } var jArr = JObject.Parse(html)["data"]; if (jArr.Count() == 0) return null; var sProd = JsonHelper.SerializeObject(jArr); try { list = JsonHelper.DeserializeJsonToList(sProd); var item = list.FirstOrDefault(); if (item == null) item = new KJDDBProduct(); return item; } catch (Exception ex) { return null; } } private void btnEditDetail_Click(object sender, EventArgs e) { bool canEdit = true; var kjdDbProd = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(dbProdDetail)); //{"goodsId":"2032007952082477057","warehouseGoodsId":"171C2881E8C6491CA65728683483EDE9","spuCode":"987651321321","skus":[{"skuId":"2032007952837451777","warehouseSkuId":"6B710CE261B240C38B5245006F3622A3","skuCode":"20190311002"},{"skuId":"2032007953839890434","warehouseSkuId":"2FA14AAB600541CAA72DDE7697D8D27A","skuCode":"201607090622"}]} if (kjdDbProd.product_get_type_text == "厂商直采") { canEdit = true; string convertRst = ""; var pInfo = new PDDProdFormConverter().JstPddProdToPddConvert(out convertRst, kjdDbProd); if (!string.IsNullOrEmpty(convertRst)) { BaseMsgForm.ShowError("商品结构获取失败 " + convertRst); return; } } if (kjdDbProd.product_get_type_text == "微信店采") { canEdit = true; string convertRst = ""; var pInfo = new PDDProdFormConverter().WXProdToPddConvert(out convertRst, kjdDbProd); if (!string.IsNullOrEmpty(convertRst)) { BaseMsgForm.ShowError("商品结构获取失败"); return; } } #region 微信小店app if (dbProd.product_get_type_text == "微信小店") { canEdit = true; string convertRst = ""; var pInfo = new PDDProdFormConverter().WXClientToPddConvert(out convertRst, kjdDbProd); if (!string.IsNullOrEmpty(convertRst)) { BaseMsgForm.ShowError("商品结构获取失败"); return; } } #endregion if (kjdDbProd.product_get_type_text == "1688厂家") { canEdit = true; string convertRst = ""; var pInfo = new PDDProdFormConverter()._1688ClientToPddConvert(out convertRst, kjdDbProd); if (!string.IsNullOrEmpty(convertRst)) { BaseMsgForm.ShowError("商品结构获取失败"); return; } } if (kjdDbProd.product_get_type_text == "1688外部数据") { canEdit = true; string convertRst = ""; var pInfo = new PDDProdFormConverter()._1688OutToPddConvert(out convertRst, kjdDbProd); if (!string.IsNullOrEmpty(convertRst)) { BaseMsgForm.ShowError("商品结构获取失败"); return; } } PDDDBProdEditDetailForm editDetailForm = new PDDDBProdEditDetailForm(kjdDbProd); if (!canEdit) { editDetailForm.btnRestoreAll.Visible = false; editDetailForm.btnSaveSkuLst.Visible = false; } editDetailForm.ShowDialog(); if (editDetailForm.IsSave) this.Close(); } private void btnBookImg_Click(object sender, EventArgs e) { var prodJson = this.dbProd.product_json; var prodInfo = JsonHelper.DeserializeJsonToObject(prodJson); if (prodInfo != null) { string publisher = "出版社:" + new List () { "技术出版社", "文化出版社", "美术出版社" }[Randomx.GetId(3)]; string isbn = "ISBN:"; string bookName = "书名:"; string bookPrice = "定价:" + prodInfo.detail.sku.Max(s => s.multi_price) * 0.01; string author = "作者:王老师"; string publishTime = "出版时间:" + DateTime.Now.AddMonths(-3); string edition = "版次:1"; string binding = "装帧:平装"; foreach (var propInfo in prodInfo.property.goods_properties) { if (propInfo.name.Contains("出版社名称")) publisher = "出版社:" + propInfo.values.FirstOrDefault()?.value; else if (propInfo.name.Contains("ISBN")) isbn = "ISBN:" + propInfo.values.FirstOrDefault()?.value; else if (propInfo.name.Contains("书名")) bookName = "书名:" + propInfo.values.FirstOrDefault()?.value; else if (propInfo.name.Contains("定价")) bookPrice = "定价:" + propInfo.values.FirstOrDefault()?.value; else if (propInfo.name.Contains("作者")) author = "作者:" + propInfo.values.FirstOrDefault()?.value; else if (propInfo.name.Contains("出版时间")) publishTime = "出版时间:" + propInfo.values.FirstOrDefault()?.value; else if (propInfo.name.Contains("版次")) edition = "版次:" + propInfo.values.FirstOrDefault()?.value; else if (propInfo.name.Contains("装帧")) binding = "装帧:" + propInfo.values.FirstOrDefault()?.value; } var bookStr = publisher + "\r\n" + "\r\n" + isbn + "\r\n" + "\r\n" + bookName + "\r\n" + "\r\n" + bookPrice + "\r\n" + "\r\n" + author + "\r\n" + "\r\n" + publishTime + "\r\n" + "\r\n" + edition + "\r\n" + "\r\n" + binding; var imageBg = new Bitmap(800, 800); using (Graphics g = Graphics.FromImage(imageBg)) { g.Clear(Color.White); //Font font = new Font("宋体", 15, FontStyle.Bold); Font font = new Font("微软雅黑", 15, FontStyle.Regular); Brush textBrush = Brushes.Black; g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; RectangleF rectF = new RectangleF(80, 80, 800 - 80, 800 - 80); g.DrawString(bookStr, font, textBrush, rectF); } ShowImgForm imgFrom = new ShowImgForm(imageBg); imgFrom.ShowDialog(); } } private void cmbCateFilter1_TextChanged(object sender, EventArgs e) { //if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") //if (btnSwitchCatType.Text != "W") // return; cmbCateFilter2.Text = ""; cmbCateFilter2.Items.Clear(); cmbCateFilter3.Text = ""; cmbCateFilter3.Items.Clear(); selectCate1 = GlobalConfig.WxCatList .Where(c => c.level == 1 && (";" + cmbCateFilter1.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates2 = GlobalConfig.WxCatList.Where(c => selectCate1.Any(c1 => c.f_cat_id == c1.cat_id)).ToList(); cmbCateFilter2.Items.AddRange(cates2.Select(c => c.name).ToArray()); } private void cmbCateFilter2_TextChanged(object sender, EventArgs e) { //if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") //if (btnSwitchCatType.Text != "W") // return; cmbCateFilter3.Text = ""; cmbCateFilter3.Items.Clear(); selectCate1 = GlobalConfig.WxCatList .Where(c => c.level == 1 && (";" + cmbCateFilter1.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates2 = GlobalConfig.WxCatList.Where(c => selectCate1.Any(c1 => c.f_cat_id == c1.cat_id)).ToList(); selectCate2 = cates2 .Where(c => c.level == 2 && (";" + cmbCateFilter2.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates3 = GlobalConfig.WxCatList.Where(c => selectCate2.Any(c2 => c.f_cat_id == c2.cat_id)).ToList(); cmbCateFilter3.Items.AddRange(cates3.Select(c => c.name).ToArray()); } private void cmbCateFilter3_TextChanged(object sender, EventArgs e) { //var cate1 = GlobalConfig.WxCatList.FirstOrDefault(c => c.level == 1 && c.name == cmbCat1.Text.Trim()); //var cates2 = GlobalConfig.WxCatList.Where(c => c.f_cat_id == cate1?.cat_id).ToList(); //var cate2 = cates2.FirstOrDefault(c => c.level == 2 && c.name == cmbCat1.Text.Trim()); //var cates3 = GlobalConfig.WxCatList.Where(c => c.f_cat_id == cate2?.cat_id).ToList(); //var cate3 = cates3.FirstOrDefault(c => c.level == 3 && c.name == cmbCat1.Text.Trim()); cmbCateFilter4Leaf.Text = ""; cmbCateFilter4Leaf.Items.Clear(); selectCate1 = GlobalConfig.WxCatList .Where(c => c.level == 1 && (";" + cmbCateFilter1.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates2 = GlobalConfig.WxCatList.Where(c => selectCate1.Any(c1 => c.f_cat_id == c1.cat_id)).ToList(); selectCate2 = cates2 .Where(c => c.level == 2 && (";" + cmbCateFilter2.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates3 = GlobalConfig.WxCatList.Where(c => selectCate2.Any(c2 => c.f_cat_id == c2.cat_id)).ToList(); selectCate3 = cates3 .Where(c => c.level == 3 && (";" + cmbCateFilter3.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates4 = GlobalConfig.WxCatList.Where(c => selectCate3.Any(c3 => c.f_cat_id == c3.cat_id) || selectCate3.Any(c3 => c.cat_id == c3.cat_id && c.leaf)).ToList(); if (cates4.Count == 1) cmbCateFilter4Leaf.Text = cates4.FirstOrDefault().name; cmbCateFilter4Leaf.Items.AddRange(cates4.Select(c => c.name).ToArray()); } private void cmbCateFilter4Leaf_TextChanged(object sender, EventArgs e) { selectCate1 = GlobalConfig.WxCatList .Where(c => c.level == 1 && (";" + cmbCateFilter1.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates2 = GlobalConfig.WxCatList.Where(c => selectCate1.Any(c1 => c.f_cat_id == c1.cat_id)).ToList(); selectCate2 = cates2 .Where(c => c.level == 2 && (";" + cmbCateFilter2.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates3 = GlobalConfig.WxCatList.Where(c => selectCate2.Any(c2 => c.f_cat_id == c2.cat_id)).ToList(); selectCate3 = cates3 .Where(c => c.level == 3 && (";" + cmbCateFilter3.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var cates4 = GlobalConfig.WxCatList.Where(c => selectCate3.Any(c3 => c.f_cat_id == c3.cat_id) || selectCate3.Any(c3 => c.cat_id == c3.cat_id && c.leaf)).ToList(); selectCate4 = cates4 .Where(c => c.leaf && (";" + cmbCateFilter4Leaf.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); var selCat = selectCate4.FirstOrDefault(); lblBound.Text ="保证金:" + GlobalConfig.WxCatBoundList.FirstOrDefault(cb => cb.leaf_id == selCat?.cat_id.ParseToLong())?.cat_bound; } private void cmbCateFilter1_SelectedIndexChanged(object sender, EventArgs e) { } private void cmbCateFilter2_SelectedIndexChanged(object sender, EventArgs e) { } private void cmbCateFilter3_SelectedIndexChanged(object sender, EventArgs e) { } private void cmbCateFilter4Leaf_SelectedIndexChanged(object sender, EventArgs e) { } private void btnDelCate_Click(object sender, EventArgs e) { cmbCateFilter1.Text = ""; txtCateSearch.WatermarkText = "(未识别)"; //cmbCateFilter2.Text = ""; //cmbCateFilter3.Text = ""; //cmbCateFilter4Leaf.Text = ""; } private void txtCateSearch_TextChanged(object sender, EventArgs e) { var searchTxt = txtCateSearch.Text.Trim(); List wxCatList = new List(); if (!string.IsNullOrEmpty(searchTxt)) { wxCatList.AddRange(GlobalConfig.WxCatList.Where(c => c.leaf && c.name.Contains(searchTxt))); wxCatList.AddRange(GlobalConfig.WxCatList.Where(c => c.level == 3 && !c.leaf && c.name.Contains(searchTxt))); wxCatList.AddRange(GlobalConfig.WxCatList.Where(c => c.level == 2 && !c.leaf && c.name.Contains(searchTxt))); wxCatList.AddRange(GlobalConfig.WxCatList.Where(c => c.level == 1 && !c.leaf && c.name.Contains(searchTxt))); } wxCatList = wxCatList.Take(50).ToList(); lstSelectCateList.Items.Clear(); foreach (var cate in wxCatList) { var cateTmp = cate; string cateName = cateTmp.name; var parent = GlobalConfig.WxCatList.FirstOrDefault(c => c.cat_id == cateTmp.f_cat_id); while (parent != null) { cateTmp = parent; cateName = cateTmp.name + " >> " + cateName; parent = GlobalConfig.WxCatList.FirstOrDefault(c => c.cat_id == cateTmp.f_cat_id); } string bountStr = " 保证金:" + GlobalConfig.WxCatBoundList.FirstOrDefault(cb => cb.leaf_id == cate.cat_id.ParseToLong())?.cat_bound; lstSelectCateList.Items.Add(cateName + bountStr); } if (lstSelectCateList.Items.Count > 0) { lstSelectCateList.Visible = true; btnCloseLst.Visible = true; lstSelectCateList.BringToFront(); btnCloseLst.BringToFront(); } else { lstSelectCateList.Visible = false; btnCloseLst.Visible = false; } } private void lstSelectCateList_SelectedIndexChanged(object sender, EventArgs e) { var cateStr = lstSelectCateList.SelectedItem.ParseToString().Split(new string[] { "保证金" }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault()?.Trim(); var cateItems = cateStr.Split(new string[] { ">", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (cateItems.Count > 0) cmbCateFilter1.Text = cateItems[0]; if (cateItems.Count > 1) cmbCateFilter2.Text = cateItems[1]; if (cateItems.Count > 2) cmbCateFilter3.Text = cateItems[2]; if (cateItems.Count > 3) cmbCateFilter4Leaf.Text = cateItems[3]; txtCateSearch.WatermarkText = lstSelectCateList.SelectedItem.ParseToString(); lstSelectCateList.Visible = false; btnCloseLst.Visible = false; } private void btnCloseLst_Click(object sender, EventArgs e) { lstSelectCateList.Visible = false; btnCloseLst.Visible = false; } } }