Files
KJD/TEMUKJD/WXForms/ProductForms/WXUserCollectAuthProdEditCatesForm.cs
T

400 lines
18 KiB
C#

using AllBase;
using AllBase.Helper;
using AllBase.Model.Result;
using AllBase.Model.Result.WXResult;
using CefSharp;
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 WXUserCollectAuthProdEditCatesForm : BaseGeneralForm
{
KJDDBProduct dbProd = null;
List<KJDDBProduct> lstDbProduct = new List<KJDDBProduct>();
List<WxCatInfo> selectCate1 = new List<WxCatInfo>();
List<WxCatInfo> selectCate2 = new List<WxCatInfo>();
List<WxCatInfo> selectCate3 = new List<WxCatInfo>();
List<WxCatInfo> selectCate4 = new List<WxCatInfo>();
public WXUserCollectAuthProdEditCatesForm(List<KJDDBProduct> prods)
{
InitializeComponent();
if (prods != null)
lstDbProduct = prods;
dbProd = prods.FirstOrDefault();
}
private void ProductSelectListForm_Load(object sender, EventArgs e)
{
lblStatus.Text = "";
lstSelectCateList.Height = 180;
if (dbProd != null)
{
txtProductName.Text = dbProd.product_name;
txtSpuId.Text = dbProd.spu_id;
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");
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 async void btnOk_Click(object sender, EventArgs e)
{
int index = 0;
foreach (var prod in lstDbProduct)
{
index++;
var url = BaseClass.BuildPDDObjString("product/mdy_db_product");
var data = UserLogin.GetSignaturex();
data += "&db_id=" + prod.id;
lblStatus.Text = "正在修改类目 " + index + "/" + lstDbProduct.Count;
Thread.Sleep(200);
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);
}
string html = "";
await Task.Run(() =>
{
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
});
if (!html.Contains("\"code\":200"))
{
//BaseMsgForm.ShowError("商品类目编辑失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg"));
}
else
{
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;
}
}
}
this.Close();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
ShowImgForm imgFrom = new ShowImgForm(pictureBox1.ImageLocation);
imgFrom.ShowDialog();
}
public static KJDDBProduct GetPddProductDetail(string prodDbId)
{
if (string.IsNullOrEmpty(prodDbId))
return new KJDDBProduct();
List<KJDDBProduct> list = new List<KJDDBProduct>();
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<KJDDBProduct>(sProd);
var item = list.FirstOrDefault();
if (item == null)
item = new KJDDBProduct();
return item;
}
catch (Exception ex)
{
return null;
}
}
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)
{
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 = "(未识别)";
}
private void txtCateSearch_TextChanged(object sender, EventArgs e)
{
var searchTxt = txtCateSearch.Text.Trim();
List<WxCatInfo> wxCatList = new List<WxCatInfo>();
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;
}
}
}