添加商品改价回滚功能,优化图书上传
This commit is contained in:
1 parent
8f5debb85c
commit
5467acadc0
7 files changed
+476
-140
No files matched your search
@@ -27,7 +27,7 @@ namespace AllBase
|
||||
/// <summary>
|
||||
/// 版本ID
|
||||
/// </summary>
|
||||
public static int VersionCount = 1192;
|
||||
public static int VersionCount = 1195;
|
||||
public static string MainPath = "29wx";
|
||||
//public static string MainPath = "29wx";
|
||||
//public static string MainPath = "29pdd";
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
|
||||
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
<ProjectExtensions>
|
||||
|
||||
@@ -54,6 +54,7 @@ namespace TemuKJD.WXForms.OrderForms
|
||||
{
|
||||
var error = BaseRegex.GetStringJsonByRegs(ref getProdOnSaleRst, getProdOnSaleRst, "err_msg", "error_msg", "errMsg", "errorMsg", "msg");
|
||||
BaseMsgForm.ShowInfo("改价失败" + error);
|
||||
return;
|
||||
}
|
||||
prodObj = JsonHelper.JObjectParse(getProdOnSaleRst)["productList"].FirstOrDefault() as JObject;
|
||||
if (prodObj != null)
|
||||
|
||||
@@ -3163,10 +3163,10 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
foreach (var wxEditCategoryParam in wxEditPropParam.categorys)
|
||||
{
|
||||
// 修改书名
|
||||
//if (wxEditPropParam.categorys.FirstOrDefault().name == "书名" && wxEditCategoryParam == wxEditPropParam.categorys.LastOrDefault())
|
||||
//{
|
||||
// wxEditCategoryParam.name = prodTitle;
|
||||
//}
|
||||
if (wxEditPropParam.categorys.FirstOrDefault().name == "书名" && wxEditCategoryParam == wxEditPropParam.categorys.LastOrDefault())
|
||||
{
|
||||
wxEditCategoryParam.name = prodTitle;
|
||||
}
|
||||
var wxCategoryParam = new categoryPropParam()
|
||||
{
|
||||
catType = wxEditCategoryParam.catType,
|
||||
@@ -3320,14 +3320,15 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
if (upProdParam.product.info.category.FirstOrDefault()?.name == "图书" || prodInfo.detail.cats.FirstOrDefault() == "书籍/杂志/报纸")
|
||||
{
|
||||
// 修改书名 作者
|
||||
//if (attr.name == "书名" /*&& dbProd.product_get_type_text == "微信小店"*/)
|
||||
//{
|
||||
// attrValue = prodTitle;
|
||||
//}
|
||||
//if (attr.name == "作者" && attrValue == "无")
|
||||
//{
|
||||
// attrValue = new List<string>() { "赵老师", "钱老师", "孙老师", "李老师", "周老师", "吴老师", "郑老师", "王老师", "张老师", "孙老师", "刘老师" }.OrderBy(x => Guid.NewGuid()).FirstOrDefault();
|
||||
//}
|
||||
if (attr.name == "书名" /*&& dbProd.product_get_type_text == "微信小店"*/)
|
||||
{
|
||||
attrValue = prodTitle;
|
||||
}
|
||||
if (attr.name == "作者" && attrValue == "无")
|
||||
{
|
||||
attrValue = new List<string>() { "赵老师", "钱老师", "孙老师", "李老师", "周老师", "吴老师", "郑老师", "王老师", "张老师", "孙老师", "刘老师" }.OrderBy(x => Guid.NewGuid()).FirstOrDefault();
|
||||
attrValue = "无";
|
||||
}
|
||||
|
||||
if (attrValue.IsNullOrEmpty() && attr.type == "integer_unit" && (propInfo.values.FirstOrDefault()?.value).IsNumber())
|
||||
{
|
||||
@@ -3603,7 +3604,10 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
if (attr.name == "出版社名称")
|
||||
attrValue = new List<string>() { "技术出版社", "文化出版社", "美术出版社" }[Randomx.GetId(3)];
|
||||
if (attr.name == "作者")
|
||||
{
|
||||
attrValue = new List<string>() { "赵老师", "钱老师", "孙老师", "李老师", "周老师", "吴老师", "郑老师", "王老师", "张老师", "孙老师", "刘老师" }.OrderBy(x => Guid.NewGuid()).FirstOrDefault();
|
||||
attrValue = "无";
|
||||
}
|
||||
if (attr.name == "包装")
|
||||
attrValue = "平装";
|
||||
if (attr.name == "出版时间")
|
||||
@@ -3723,6 +3727,19 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
wxPropParam.categorys.Add(wxCategoryParam1);
|
||||
wxPropParam.categorys.Add(wxCategoryParam2);
|
||||
}
|
||||
if (upProdParam.product.info.category.FirstOrDefault()?.name == "图书" || prodInfo.detail.cats.FirstOrDefault() == "书籍/杂志/报纸")
|
||||
{
|
||||
foreach (var param in upProdParam.product.info.param.ToList())
|
||||
{
|
||||
if (param.categorys.FirstOrDefault()?.name == "作者" && param.categorys.LastOrDefault()?.name == "无")
|
||||
{
|
||||
param.categorys.LastOrDefault().name = upProdParam.product.info.param.FirstOrDefault(p => p.categorys.FirstOrDefault()?.name == "出版社名称")?.categorys?.LastOrDefault()?.name;
|
||||
if (param.categorys.LastOrDefault().name.IsNullOrEmpty())
|
||||
param.categorys.LastOrDefault().name = "无";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region sku规格属性
|
||||
@@ -4160,7 +4177,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
}
|
||||
}
|
||||
// 微信店采直接复制
|
||||
else if (dbProd.product_get_type_text == "微信店采") //&& upProdParam.product.info.category.FirstOrDefault()?.name != "图书")
|
||||
else if (dbProd.product_get_type_text == "微信店采" && upProdParam.product.info.category.FirstOrDefault()?.name != "图书")
|
||||
{
|
||||
upProdParam.product.info.qualificationList.Clear();
|
||||
if (wxEditProdInfo.product?.info?.qualificationList?.Count > 0)
|
||||
@@ -4198,9 +4215,10 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
}
|
||||
|
||||
string publisher = "出版社名称:" + new List<string>() { "技术出版社", "文化出版社", "美术出版社" }[Randomx.GetId(3)];
|
||||
string isbn = "ISBN:";
|
||||
string bookName = "书名:";
|
||||
//string bookName = "图书名称:";
|
||||
//string isbn = "ISBN:";
|
||||
string isbn = "ISBN/CN刊号:";
|
||||
//string bookName = "书名:";
|
||||
string bookName = "图书名称:";
|
||||
string bookPrice = "定价:" + upProdParam.product.productSkus.Max(s => s.productSkuInfo.salePrice) * 0.01;
|
||||
string author = "作者:王老师";
|
||||
string publishTime = "出版时间:" + DateTime.Now.AddMonths(-3).ToString("yyyy年MM月dd日");
|
||||
@@ -4212,10 +4230,20 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
if (propParam.categorys[0].name.Contains("出版社名称"))
|
||||
publisher = "出版社名称:" + propParam.categorys[1].name;
|
||||
else if (propParam.categorys[0].name.Contains("ISBN版号/CN刊号"))
|
||||
isbn = "ISBN:" + propParam.categorys[1].name;
|
||||
{
|
||||
//isbn = "ISBN:" + propParam.categorys[1].name;
|
||||
isbn = "ISBN/CN刊号:" + propParam.categorys[1].name;
|
||||
if (propParam.categorys[1].name.Length == 13)
|
||||
{
|
||||
var isbnStr = propParam.categorys[1].name;
|
||||
isbn = "ISBN/CN刊号:" + isbnStr[0] + isbnStr[1] + isbnStr[2] + "-" + isbnStr[3] + "-" + isbnStr[4] + isbnStr[5] + isbnStr[6] + isbnStr[7] + "-" + isbnStr[8] + isbnStr[9] + isbnStr[10] + isbnStr[11] + "-" + isbnStr[12];
|
||||
}
|
||||
}
|
||||
else if (propParam.categorys[0].name.Contains("书名"))
|
||||
//bookName = "图书名称:" + propParam.categorys[1].name;
|
||||
bookName = "书名:" + propParam.categorys[1].name;
|
||||
{
|
||||
//bookName = "书名:" + propParam.categorys[1].name;
|
||||
bookName = "图书名称:" + propParam.categorys[1].name;
|
||||
}
|
||||
else if (propParam.categorys[0].name.Contains("定价"))
|
||||
{
|
||||
//bookPrice = "定价:" + propParam.categorys[1].name;
|
||||
@@ -4240,17 +4268,58 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
edition + "\r\n" + "\r\n" +
|
||||
binding;
|
||||
|
||||
var bookImg = new Bitmap(800, 800);
|
||||
int imgW = 800; int imgH = 800; int textImgH = 0;
|
||||
string getImgError;
|
||||
var img_url = upProdParam.product.info.headImg[0];
|
||||
if (!img_url.Contains("wst.wxapp.tc.qq.com") && !img_url.Contains("mmecimage.cn"))
|
||||
img_url = img_url.Replace("https://", "http://");
|
||||
var imageMain = GetHtml.GetUrlImg(img_url, out getImgError);
|
||||
if (imageMain == null)
|
||||
imageMain = new Bitmap(800, 800);
|
||||
using (Bitmap bitmap = new Bitmap(1, 1)) // 尺寸不重要,只是为了使用Graphics对象
|
||||
using (Graphics g = Graphics.FromImage(bitmap)) // 获取Graphics对象
|
||||
{
|
||||
// 定义字体
|
||||
Font font = new Font("微软雅黑", 16, FontStyle.Regular);
|
||||
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
|
||||
// 定义要测量的字符串
|
||||
string text = bookStr;
|
||||
// 测量字符串大小
|
||||
SizeF size = g.MeasureString(text, font, imgW - 120);
|
||||
// 输出高度信息
|
||||
//Console.WriteLine("Text Height: " + size.Height);
|
||||
textImgH = size.Height.ParseToInt() + 180;
|
||||
}
|
||||
|
||||
//var bookImg = new Bitmap(imgW, imgH);
|
||||
//using (Graphics g = Graphics.FromImage(bookImg))
|
||||
//{
|
||||
// g.Clear(Color.White);
|
||||
// //Font font = new Font("宋体", 15, FontStyle.Bold);
|
||||
// //Font font = new Font("微软雅黑", 15, FontStyle.Regular);
|
||||
// Font font = new Font("微软雅黑", 16, FontStyle.Regular);
|
||||
// //Font font = new Font("宋体", 17, FontStyle.Bold);
|
||||
// Brush textBrush = Brushes.Black;
|
||||
// g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
|
||||
// RectangleF rectF = new RectangleF(60, 80, imgW - 120, imgH - 180);
|
||||
// g.DrawString(bookStr, font, textBrush, rectF);
|
||||
//}
|
||||
|
||||
// 绘制一张带主图的商品详情页
|
||||
var bookImg = new Bitmap(imgW, imgH + textImgH);
|
||||
using (Graphics g = Graphics.FromImage(bookImg))
|
||||
{
|
||||
g.Clear(Color.White);
|
||||
g.Clear(Color.FromArgb(248, 239, 244));
|
||||
|
||||
g.DrawImage(imageMain, new Rectangle(0, 0, imgW, imgH), 0, 0, imageMain.Width, imageMain.Height, GraphicsUnit.Pixel);
|
||||
|
||||
//Font font = new Font("宋体", 15, FontStyle.Bold);
|
||||
Font font = new Font("微软雅黑", 15, FontStyle.Regular);
|
||||
//Font font = new Font("微软雅黑", 16, FontStyle.Regular);
|
||||
//Font font = new Font("微软雅黑", 15, FontStyle.Regular);
|
||||
Font font = new Font("微软雅黑", 18, FontStyle.Regular);
|
||||
//Font font = new Font("宋体", 17, FontStyle.Bold);
|
||||
Brush textBrush = Brushes.Black;
|
||||
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
|
||||
RectangleF rectF = new RectangleF(80, 80, 800 - 80, 800 - 80);
|
||||
RectangleF rectF = new RectangleF(60, imgH + 80, imgW - 120, textImgH - 180);
|
||||
g.DrawString(bookStr, font, textBrush, rectF);
|
||||
}
|
||||
|
||||
@@ -4260,6 +4329,44 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
return locationStr;
|
||||
var location = BaseRegex.GetStringJson(ref locationStr, "Location");
|
||||
upProdParam.product.info.qualificationList.Add(new qualificationParam() { qualificationId = "1111485", qualificationUrl = new List<string>() { location }, });
|
||||
|
||||
#region 将资质图作为主图的最后一张。
|
||||
using (MemoryStream memoryStream = new MemoryStream())
|
||||
{
|
||||
bookImg.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||
byte[] imageBytes = memoryStream.ToArray();
|
||||
var imgBase64 = Convert.ToBase64String(imageBytes);
|
||||
|
||||
var urlImg = BaseClass.BuildPDDObjString("product/wx_api_upload_image");
|
||||
var upDate = UserLogin.GetSignaturex();
|
||||
upDate += "&token=" + token.accessToken;
|
||||
//upDate += "&is_file=true";
|
||||
//if (needAddRandomBlock || wantAddRandomBlock)
|
||||
// upDate += "&random_code=true";
|
||||
upDate += "&img_url=" + location;
|
||||
upDate += "&img_base64=" + imgBase64;
|
||||
|
||||
var sTime = DateTime.Now;
|
||||
var apiUpImgFileRst = GetHtml.PostUtf8(urlImg, upDate);
|
||||
if (cell != null)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
cell.Value = "正在上传资质图文件 " + (DateTime.Now - sTime).TotalMilliseconds.ParseToInt();
|
||||
}));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 5 && apiUpImgFileRst.Contains("access_token expired"); i++)
|
||||
{
|
||||
token.mdyTime = DateTime.Now.AddDays(-100);
|
||||
token = new WxApiBLL().GetRandomWxToken();
|
||||
apiUpImgFileRst = GetHtml.PostUtf8(urlImg, upDate);
|
||||
}
|
||||
var upImgUrl = BaseRegex.GetStringJson(ref apiUpImgFileRst, "img_url");
|
||||
upProdParam.product.info.headImg = upProdParam.product.info.headImg.Take(8).ToList();
|
||||
upProdParam.product.info.headImg.Add(upImgUrl);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
+84
-70
@@ -32,15 +32,16 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.ucGroupBoxEx3 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.btnBatchRealDel = new DevComponents.DotNetBar.PanelEx();
|
||||
@@ -124,6 +125,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.pbLoading = new System.Windows.Forms.PictureBox();
|
||||
this.chkTestNoAuditUpload = new TemuKJD.UserComponent.UcCheckBox(this.components);
|
||||
this.dgvSelectProduct = new TemuKJD.UserComponent.DataGridViewEx();
|
||||
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
|
||||
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
|
||||
this.colCheck = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colSelectId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSupplierId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
@@ -141,6 +144,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.colPromotionLink = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductCat = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colExtCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSkuMultiPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSoldNum = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMsg = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
@@ -150,8 +154,6 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.ColDelete = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.colAddTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colOpResult = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
|
||||
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
@@ -491,7 +493,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.btnRestorePrice.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnRestorePrice.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnRestorePrice.TabIndex = 854;
|
||||
this.btnRestorePrice.Text = "批量设置价格";
|
||||
this.btnRestorePrice.Text = "批量还原价格";
|
||||
this.btnRestorePrice.Click += new System.EventHandler(this.btnRestorePrice_Click);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
@@ -1322,19 +1325,19 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//
|
||||
this.dgvShop.AllowUserToAddRows = false;
|
||||
this.dgvShop.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle10.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle10;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvShop.AutoRowNumber = true;
|
||||
this.dgvShop.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvShop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle11.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle11.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle11.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle11.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle11.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle11;
|
||||
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvShop.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvShop.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
@@ -1503,19 +1506,19 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//
|
||||
this.dgvSelectProduct.AllowUserToAddRows = false;
|
||||
this.dgvSelectProduct.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle12.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle12;
|
||||
dataGridViewCellStyle3.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvSelectProduct.AutoRowNumber = true;
|
||||
this.dgvSelectProduct.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvSelectProduct.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle13.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle13;
|
||||
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.dgvSelectProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvSelectProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colCheck,
|
||||
@@ -1535,6 +1538,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.colPromotionLink,
|
||||
this.colProductCat,
|
||||
this.colExtCode,
|
||||
this.colSkuMultiPrice,
|
||||
this.colPrice,
|
||||
this.colSoldNum,
|
||||
this.colMsg,
|
||||
@@ -1554,6 +1558,31 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.dgvSelectProduct.TabIndex = 187;
|
||||
this.dgvSelectProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSelectProduct_CellContentClick);
|
||||
//
|
||||
// splitContainer4
|
||||
//
|
||||
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer4.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer4.Name = "splitContainer4";
|
||||
//
|
||||
// splitContainer4.Panel1
|
||||
//
|
||||
this.splitContainer4.Panel1.Controls.Add(this.statusBar);
|
||||
this.splitContainer4.Size = new System.Drawing.Size(1346, 26);
|
||||
this.splitContainer4.SplitterDistance = 1165;
|
||||
this.splitContainer4.TabIndex = 3;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.statusBar.Location = new System.Drawing.Point(0, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1165, 26);
|
||||
this.statusBar.TabIndex = 2;
|
||||
//
|
||||
// colCheck
|
||||
//
|
||||
this.colCheck.Frozen = true;
|
||||
@@ -1580,8 +1609,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//
|
||||
// colSupplierName
|
||||
//
|
||||
dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle14;
|
||||
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.colSupplierName.Frozen = true;
|
||||
this.colSupplierName.HeaderText = "店铺名称";
|
||||
this.colSupplierName.Name = "colSupplierName";
|
||||
@@ -1669,8 +1698,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
dataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.DefaultCellStyle = dataGridViewCellStyle15;
|
||||
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.DefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.colProductName.HeaderText = "商品标题";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
@@ -1685,8 +1714,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//
|
||||
// colProductCat
|
||||
//
|
||||
dataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductCat.DefaultCellStyle = dataGridViewCellStyle16;
|
||||
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductCat.DefaultCellStyle = dataGridViewCellStyle7;
|
||||
this.colProductCat.HeaderText = "商品类目";
|
||||
this.colProductCat.Name = "colProductCat";
|
||||
this.colProductCat.ReadOnly = true;
|
||||
@@ -1699,8 +1728,17 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.colExtCode.ReadOnly = true;
|
||||
this.colExtCode.Width = 145;
|
||||
//
|
||||
// colSkuMultiPrice
|
||||
//
|
||||
this.colSkuMultiPrice.HeaderText = "sku价格序列";
|
||||
this.colSkuMultiPrice.Name = "colSkuMultiPrice";
|
||||
this.colSkuMultiPrice.ReadOnly = true;
|
||||
this.colSkuMultiPrice.Visible = false;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colPrice.DefaultCellStyle = dataGridViewCellStyle8;
|
||||
this.colPrice.HeaderText = "价格";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
@@ -1715,8 +1753,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//
|
||||
// colMsg
|
||||
//
|
||||
dataGridViewCellStyle17.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colMsg.DefaultCellStyle = dataGridViewCellStyle17;
|
||||
dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colMsg.DefaultCellStyle = dataGridViewCellStyle9;
|
||||
this.colMsg.HeaderText = "状态";
|
||||
this.colMsg.Name = "colMsg";
|
||||
this.colMsg.ReadOnly = true;
|
||||
@@ -1754,8 +1792,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//
|
||||
// colAddTime
|
||||
//
|
||||
dataGridViewCellStyle18.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colAddTime.DefaultCellStyle = dataGridViewCellStyle18;
|
||||
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colAddTime.DefaultCellStyle = dataGridViewCellStyle10;
|
||||
this.colAddTime.HeaderText = "上架时间";
|
||||
this.colAddTime.Name = "colAddTime";
|
||||
this.colAddTime.ReadOnly = true;
|
||||
@@ -1768,31 +1806,6 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.colOpResult.ReadOnly = true;
|
||||
this.colOpResult.Width = 240;
|
||||
//
|
||||
// splitContainer4
|
||||
//
|
||||
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer4.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer4.Name = "splitContainer4";
|
||||
//
|
||||
// splitContainer4.Panel1
|
||||
//
|
||||
this.splitContainer4.Panel1.Controls.Add(this.statusBar);
|
||||
this.splitContainer4.Size = new System.Drawing.Size(1346, 26);
|
||||
this.splitContainer4.SplitterDistance = 1165;
|
||||
this.splitContainer4.TabIndex = 3;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.statusBar.Location = new System.Drawing.Point(0, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1165, 26);
|
||||
this.statusBar.TabIndex = 2;
|
||||
//
|
||||
// WXProdPreSaleForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
@@ -1921,6 +1934,10 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
private UserComponent.UcCheckBox chkNotDownCount;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private UserComponent.UcCheckBox chkSearchPromotionLink;
|
||||
private System.Windows.Forms.TextBox txtPrice;
|
||||
private DevComponents.DotNetBar.PanelEx btnSetPrice;
|
||||
private DevComponents.DotNetBar.PanelEx btnRestorePrice;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colCheck;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSelectId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSupplierId;
|
||||
@@ -1938,6 +1955,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPromotionLink;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductCat;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colExtCode;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuMultiPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSoldNum;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMsg;
|
||||
@@ -1947,9 +1965,5 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
private System.Windows.Forms.DataGridViewLinkColumn ColDelete;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colAddTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult;
|
||||
private System.Windows.Forms.TextBox txtPrice;
|
||||
private DevComponents.DotNetBar.PanelEx btnSetPrice;
|
||||
private DevComponents.DotNetBar.PanelEx btnRestorePrice;
|
||||
private System.Windows.Forms.Label label7;
|
||||
}
|
||||
}
|
||||
@@ -92,6 +92,10 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
if (wxUploadRule == null)
|
||||
wxUploadRule = new WXUploadRule();
|
||||
|
||||
dicProductBasePrice = NaiBa.Util.Helper.ConfigHelper.LoadConfig<Dictionary<string,string>>("wx_product_base_price");
|
||||
if (dicProductBasePrice == null)
|
||||
dicProductBasePrice = new Dictionary<string, string>();
|
||||
|
||||
this.txtPreDays.TextChanged -= txtPreDays_TextChanged;
|
||||
this.chkPreSale.CheckedChanged -= chkPreSale_CheckedChanged;
|
||||
this.chkNoPreSale.CheckedChanged -= chkNoPreSale_CheckedChanged;
|
||||
@@ -782,8 +786,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
var pStr = JsonHelper.SerializeObject(prod);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
decimal? price = null;
|
||||
try { price = prod["skuList"]?[0]["price"].ParseToDecimal() / 100; } catch { }
|
||||
decimal? minPrice = prod["skuList"]?.Min(sk => sk["price"].ParseToDecimal() / 100);
|
||||
decimal? maxPrice = prod["skuList"]?.Max(sk => sk["price"].ParseToDecimal() / 100);
|
||||
var prodId = prod["productId"].ParseToString();
|
||||
if (dgvSelectProduct.Rows.Cast<DataGridViewRow>().Any(r => r.Cells["colDraftId"].ParseToString() == prodId))
|
||||
{
|
||||
@@ -826,8 +830,9 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
(prod["recommendCategory"].IsJTokenNullOrEmpty() || prod["recommendCategory"]["categoryNames"].IsJTokenNullOrEmpty()) ?
|
||||
"" : string.Join(" >> ", prod["recommendCategory"]["categoryNames"].Select(s => s.ParseToString())), // 类目名称
|
||||
prod["spuCode"].ParseToString(),
|
||||
//price,
|
||||
prod["price"].ParseToDecimal() * 0.01m,
|
||||
prod["skuList"].ParseToString(),
|
||||
//prod["price"].ParseToDecimal() * 0.01m,
|
||||
"" + minPrice + " - " + maxPrice,
|
||||
prod["soldNum"].ParseToInt(),
|
||||
StatusStr,
|
||||
prod["presaleTag"].ParseToInt() == 1 ? "[预售]" : "",
|
||||
@@ -1661,7 +1666,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Task.Run(() =>
|
||||
{
|
||||
SetProdDown(rowLst);
|
||||
ChangeProdPrice(rowLst);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
@@ -1682,7 +1687,8 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
|
||||
}
|
||||
|
||||
void SetProdPrice(List<DataGridViewRow> rowLst)
|
||||
Dictionary<string, string> dicProductBasePrice = new Dictionary<string, string>();
|
||||
void ChangeProdPrice(List<DataGridViewRow> rowLst)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
@@ -1740,60 +1746,265 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
foreach (var row in rowLstTmp)
|
||||
{
|
||||
var prodId = row.Cells["colDraftId"].Value.ParseToString();
|
||||
prodIdLst.Add(prodId);
|
||||
}
|
||||
var skuPricesStr = row.Cells["colSkuMultiPrice"].Value.ParseToString();
|
||||
var newPrice = txtPrice.Text.ParseToDecimal();
|
||||
|
||||
var downProdRst = WXPreSale.DownProd(shop, string.Join(",", prodIdLst));
|
||||
Thread.Sleep(Randomx.GetId(1000, 1500));
|
||||
if (!downProdRst.Contains("\"code\":0"))
|
||||
{
|
||||
if (downProdRst.Contains("biz magic invalid"))
|
||||
if (dicProductBasePrice.ContainsKey(prodId))
|
||||
{
|
||||
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
|
||||
if (shop.LoginStatus != "登录成功")
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
foreach (var row in rowLstTmp)
|
||||
{
|
||||
row.Cells["colOpResult"].Value = "店铺掉线";
|
||||
}
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
row.Cells["colOpResult"].Value = "商品改价未还原,跳过";
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
|
||||
var errmsg = BaseRegex.GetStringJson(ref downProdRst, "msg");
|
||||
if (string.IsNullOrWhiteSpace(errmsg))
|
||||
errmsg = downProdRst;
|
||||
var downProdRst = changePrice(shop, prodId, skuPricesStr, (newPrice * 100).ParseToInt());
|
||||
Thread.Sleep(Randomx.GetId(200, 500));
|
||||
if (!downProdRst.Contains("\"code\":0"))
|
||||
{
|
||||
if (downProdRst.Contains("biz magic invalid"))
|
||||
{
|
||||
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
|
||||
if (shop.LoginStatus != "登录成功")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
foreach (var r in rowLstTmp)
|
||||
{
|
||||
r.Cells["colOpResult"].Value = "店铺掉线";
|
||||
}
|
||||
}));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var errmsg = BaseRegex.GetStringJson(ref downProdRst, "msg");
|
||||
if (string.IsNullOrWhiteSpace(errmsg))
|
||||
errmsg = downProdRst;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colOpResult"].Value = "修改价格失败" + errmsg;
|
||||
}));
|
||||
}
|
||||
// 改价成功
|
||||
else
|
||||
{
|
||||
dicProductBasePrice[prodId] = skuPricesStr;
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_product_base_price", dicProductBasePrice);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colOpResult"].Value = "修改价格成功";
|
||||
row.Cells["colPrice"].Value = newPrice;
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改成指定价格或者还原缓存的原来价格
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <param name="spuId"></param>
|
||||
/// <param name="skuPrices"></param>
|
||||
/// <param name="newPrice">新价格 单位分</param>
|
||||
/// <param name="isRestore">是否是还原价格</param>
|
||||
/// <returns></returns>
|
||||
private string changePrice(ShopLoginInfo shop, string spuId, string skuPrices, int newPrice, bool isRestore = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
var skuListObj = JArray.Parse(skuPrices);
|
||||
JObject changePriceObj = new JObject();
|
||||
JArray skuArr = new JArray();
|
||||
foreach (var sku in skuListObj)
|
||||
{
|
||||
JObject obj = new JObject();
|
||||
obj["spuId"] = spuId;
|
||||
obj["skuId"] = sku["skuId"];
|
||||
if (isRestore)
|
||||
obj["salePrice"] = sku["price"].ParseToInt();
|
||||
else
|
||||
obj["salePrice"] = newPrice;
|
||||
skuArr.Add(obj);
|
||||
}
|
||||
changePriceObj["skuList"] = skuArr;
|
||||
changePriceObj["uploadSource"] = 6;
|
||||
|
||||
// string body = @"{""skuList"":[{""spuId"":" + spuId + @",""skuId"":""" + skuId + @""",""salePrice"":" + newPrice + @"}],""uploadSource"":6}";
|
||||
var rst = OrderForms.WXOrderList.EditPrice(shop, changePriceObj);
|
||||
|
||||
if (rst.Contains("\"code\":0"))
|
||||
{
|
||||
return rst;
|
||||
}
|
||||
else
|
||||
{
|
||||
return rst;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return ex.Message;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnRestorePrice_Click(object sender, EventArgs e)
|
||||
{
|
||||
var rowLst = dgvSelectProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true).ToList();
|
||||
if (rowLst.Count <= 0)
|
||||
{
|
||||
BaseMsgForm.ShowError("请勾选需要操作的商品!");
|
||||
return;
|
||||
}
|
||||
if (rowLst.Any(r => r.Cells["colMsg"].Value.ParseToString().Contains("在售") == false))
|
||||
{
|
||||
BaseMsgForm.ShowError("只能勾选在售商品!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (BaseMsgForm.ShowConfirm("确认要还原商品价格?").DialogResult != DialogResult.OK)
|
||||
return;
|
||||
|
||||
this.pbLoading.Visible = true;
|
||||
this.btnSetPreSale.Enabled = false;
|
||||
if (cancellationTokenSource != null && !cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource.Cancel();
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Task.Run(() =>
|
||||
{
|
||||
RestoreProdPrice(rowLst);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "商品还原价格中断";
|
||||
BaseMsgForm.ShowInfo("商品还原价格中断");
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "商品还原价格完毕";
|
||||
BaseMsgForm.ShowInfo("商品还原价格完毕");
|
||||
}
|
||||
|
||||
this.pbLoading.Visible = false;
|
||||
this.btnSetPreSale.Enabled = true;
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
|
||||
}
|
||||
|
||||
void RestoreProdPrice(List<DataGridViewRow> rowLst)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.pbLoading.Visible = true;
|
||||
this.statusBar.lblTaskStatus.Text = "正在还原价格" + "...".Substring(0, DateTime.Now.Second % 4);
|
||||
this.statusBar.pgbTaskProgress.Maximum = dgvSelectProduct.Rows.Count;
|
||||
this.statusBar.UpdateProgressBar(0);
|
||||
}));
|
||||
|
||||
while (rowLst.Count > 0)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var r0 = rowLst.FirstOrDefault();
|
||||
var shopId = r0.Cells["colSupplierId"].Value.ParseToString();
|
||||
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == shopId);
|
||||
var rowLstTmp = rowLst.Where(r => r.Cells["colSupplierId"].Value.ParseToString() == shopId).Take(50).ToList();
|
||||
|
||||
foreach (var r in rowLstTmp)
|
||||
{
|
||||
rowLst.Remove(r);
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
foreach (var row in rowLstTmp)
|
||||
{
|
||||
if (downProdRst.Contains("\"code\":108002"))
|
||||
{
|
||||
var prodId = row.Cells["colDraftId"].Value.ParseToString();
|
||||
if (downProdRst.Contains(prodId))
|
||||
row.Cells["colOpResult"].Value = "修改价格失败,请检查商品是否已下架或不存在";
|
||||
else
|
||||
row.Cells["colOpResult"].Value = "修改价格成功";
|
||||
}
|
||||
else
|
||||
row.Cells["colOpResult"].Value = errmsg;
|
||||
}
|
||||
this.statusBar.lblTaskStatus.Text = "正在还原价格" + "...".Substring(0, DateTime.Now.Second % 4);
|
||||
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
|
||||
r.Cells["colOpResult"].Value = "";
|
||||
}));
|
||||
}
|
||||
|
||||
if (downProdRst.Contains("\"code\":0"))
|
||||
if (shop == null)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
foreach (var row in rowLstTmp)
|
||||
foreach (var r in rowLstTmp)
|
||||
{
|
||||
row.Cells["colOpResult"].Value = "修改价格成功";
|
||||
r.Cells["colOpResult"].Value = "店铺不存在";
|
||||
}
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
if (shop.LoginStatus != "登录成功")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
foreach (var r in rowLstTmp)
|
||||
{
|
||||
r.Cells["colOpResult"].Value = "店铺掉线";
|
||||
}
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
|
||||
List<string> prodIdLst = new List<string>();
|
||||
foreach (var row in rowLstTmp)
|
||||
{
|
||||
var prodId = row.Cells["colDraftId"].Value.ParseToString();
|
||||
|
||||
if (!dicProductBasePrice.ContainsKey(prodId))
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colOpResult"].Value = "未找到价格修改记录,无法还原,跳过";
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
var skuPricesStr = dicProductBasePrice[prodId];
|
||||
|
||||
var downProdRst = changePrice(shop, prodId, skuPricesStr, -1, true);
|
||||
Thread.Sleep(Randomx.GetId(200, 500));
|
||||
if (!downProdRst.Contains("\"code\":0"))
|
||||
{
|
||||
if (downProdRst.Contains("biz magic invalid"))
|
||||
{
|
||||
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
|
||||
if (shop.LoginStatus != "登录成功")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
foreach (var r in rowLstTmp)
|
||||
{
|
||||
r.Cells["colOpResult"].Value = "店铺掉线";
|
||||
}
|
||||
}));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var errmsg = BaseRegex.GetStringJson(ref downProdRst, "msg");
|
||||
if (string.IsNullOrWhiteSpace(errmsg))
|
||||
errmsg = downProdRst;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colOpResult"].Value = "还原失败" + errmsg;
|
||||
}));
|
||||
}
|
||||
// 还原价格成功
|
||||
else
|
||||
{
|
||||
dicProductBasePrice.Remove(prodId);
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_product_base_price", dicProductBasePrice);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colOpResult"].Value = "还原价格成功";
|
||||
var skuListObj = JArray.Parse(skuPricesStr);
|
||||
row.Cells["colPrice"].Value = skuListObj.Min(sk => sk["price"].ParseToInt() * 0.01m) + " - " + skuListObj.Max(sk => sk["price"].ParseToInt() * 0.01m);
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,6 +204,9 @@
|
||||
<metadata name="colExtCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSkuMultiPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
||||
Reference in new issue
Block a user