拼多多活动逻辑优化

This commit is contained in:
wule committed 2025-12-31 14:34:08 +08:00
1 parent 90ead052f3
commit 626cc9e68e
2 files changed
+399 -288

No files matched your search

+1 -1
View File
@@ -322,7 +322,7 @@ namespace TemuKJD
#else
AntiGrabbingMechanism();
#endif
Thread.Sleep(3000);
try { Thread.Sleep(3000); } catch { }
}
}
@@ -123,6 +123,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.chkUpperSizeSpec.Checked = pddUploadRule.IsUseUpperSizeSpec;
this.chkKeepChanceGoodsImg.Checked = pddUploadRule.IsKeepChanceGoodImg;
this.chkActivity.Checked = pddUploadRule.IsSignActivity;
this.chk20981.Checked = pddUploadRule.sign20981;
this.chk15996.Checked = pddUploadRule.sign15996;
this.chk21365.Checked = pddUploadRule.sign21365;
this.chk22347.Checked = pddUploadRule.sign22347;
this.txtAddTimesFake.Text = pddUploadRule.ActivityAddPriceTimes.ParseToString();
this.chkLowPriceSku.Checked = pddUploadRule.IsLowPriceSku;
this.txtLowPriceSkuName.Text = pddUploadRule.LowPriceSkuName;
@@ -1043,9 +1047,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms
string chance_id = prodInfo.chance_id;
string chance_refere = prodInfo.chance_refere;
int getChanceIdCount = 0;
reGetChanceId:
if (string.IsNullOrEmpty(chance_id))
{
var chanceRst = GetChanceGoodsList(shop, searchText);
if (!chanceRst.Contains("\"success\":true"))
{
@@ -1055,6 +1060,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
return "新建查询失败 " + error;
}
getChanceIdCount++;
chance_id = BaseRegex.GetStringJson(ref chanceRst, "chance_id");
try
{
@@ -1063,7 +1069,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
var chanceGoodsString = JsonHelper.SerializeObject(chanceGoodJArr);
var chanceGoodLst = new NaiBa.Util.ConcurrentList<PDDChanceProductInfo>();
chanceGoodLst.AddRange(JsonHelper.DeserializeJsonToList<PDDChanceProductInfo>(chanceGoodsString));
var chanceGood = chanceGoodLst.FirstOrDefault(g => g.cat_id_3 == prodInfo.detail.cat_id || g.cat_id_2 == prodInfo.detail.cat_id);
var chanceGood = chanceGoodLst.OrderBy(g => Randomx.GetId(10000))
.FirstOrDefault(g => g.cat_id_3 == prodInfo.detail.cat_id || g.cat_id_2 == prodInfo.detail.cat_id);
if (chanceGood != null)
chance_id = chanceGood.chance_id;
}
@@ -1090,6 +1097,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms
//失败了继续走普通商品上传接口
var draftId = BaseRegex.GetStringJson(ref rst, "draft_id");
var goods_id = BaseRegex.GetLongJson(ref rst, "goods_id");
if (getChanceIdCount <= 3 && rst.Contains("\"success\":true") && string.IsNullOrEmpty(draftId) && string.IsNullOrEmpty(prodInfo.chance_id))
{
chance_id = "";
goto reGetChanceId;
}
prodParam.goods_commit_id = draftId;
prodParam.goods_id = goods_id;
if (prodParam.goods_id <= 0 || prodParam.goods_commit_id.ParseToLong() <= 0)
@@ -2656,45 +2668,49 @@ namespace TemuKJD.PDDForms.ProductSelectForms
// 复制一份商品使用sku替换图片
var prodParamHighPriceFakeSkuImg = JsonHelper.DeserializeJsonToObject<PDDProductUploadParam>(JsonHelper.SerializeObject(prodParamHighPrice));
var fake_sku_img_dic = new Dictionary<string, string>();
bool upLoadFakeImgUrl = false;
foreach (var skuParam in prodParamHighPriceFakeSkuImg.skus)
{
if (!fake_sku_img_dic.Keys.Contains(skuParam.thumb_url))
if (upLoadFakeImgUrl)
{
string getImgError;
var image = GetHtml.GetUrlImg(fakeImgUrl, out getImgError);
var imageBg = new Bitmap(image.Width, image.Height);
if (!string.IsNullOrEmpty(getImgError) || image == null)
if (!fake_sku_img_dic.Keys.Contains(skuParam.thumb_url))
{
return "设置替换sku失败 图片上传失败";
}
try
{
using (Graphics g = Graphics.FromImage(imageBg))
string getImgError;
var image = GetHtml.GetUrlImg(fakeImgUrl, out getImgError);
var imageBg = new Bitmap(image.Width, image.Height);
if (!string.IsNullOrEmpty(getImgError) || image == null)
{
g.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
return "设置替换sku失败 图片上传失败";
}
try
{
using (Graphics g = Graphics.FromImage(imageBg))
{
g.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
}
}
catch (Exception ex)
{
return "修改替换sku图片失败 " + ex.Message;
}
string uploadUpgradeSkuImgRst = UploadProdSkuImg(shop, imageBg, prodParam.goods_id.ParseToString(), prodParam.goods_commit_id, prodInfo.chance_tab);
if (!uploadUpgradeSkuImgRst.Contains("\"url\":\"https:"))
{
var error = BaseRegex.GetStringJson(ref uploadUpgradeSkuImgRst, "error_msg");
if (string.IsNullOrEmpty(error))
error = uploadUpgradeSkuImgRst;
return "上传替换sku图片失败 " + error;
}
else
{
var fake_thumb_url = BaseRegex.GetStringJson(ref uploadUpgradeSkuImgRst, "url");
fake_sku_img_dic[skuParam.thumb_url] = fake_thumb_url;
}
}
catch (Exception ex)
{
return "修改替换sku图片失败 " + ex.Message;
}
string uploadUpgradeSkuImgRst = UploadProdSkuImg(shop, imageBg, prodParam.goods_id.ParseToString(), prodParam.goods_commit_id, prodInfo.chance_tab);
if (!uploadUpgradeSkuImgRst.Contains("\"url\":\"https:"))
{
var error = BaseRegex.GetStringJson(ref uploadUpgradeSkuImgRst, "error_msg");
if (string.IsNullOrEmpty(error))
error = uploadUpgradeSkuImgRst;
return "上传替换sku图片失败 " + error;
}
else
{
var fake_thumb_url = BaseRegex.GetStringJson(ref uploadUpgradeSkuImgRst, "url");
fake_sku_img_dic[skuParam.thumb_url] = fake_thumb_url;
}
skuParam.thumb_url = fake_sku_img_dic[skuParam.thumb_url];
}
skuParam.thumb_url = fake_sku_img_dic[skuParam.thumb_url];
//skuParam.thumb_url = fakeImgUrl;
else
skuParam.thumb_url = fakeImgUrl;
skuParam.thumb_url_file_id = null;
}
#endregion
@@ -2800,6 +2816,38 @@ namespace TemuKJD.PDDForms.ProductSelectForms
saveProdRst = save_goods_edit(shop, prodParam, prodParam.goods_id.ParseToString(), prodParam.goods_commit_id, isChanceApi);
for (int i = 0; i < 3 && saveProdRst.Contains("http error:500"); i++)
{
PDDShopLoginForm loginForm = null;
if (pddUploadRule.IsSignActivity && 1 == 2) // 测试在网页里面直接修改 不使用截断提交方式一次最多改两个,使用的话最多改一个
{
Invoke(new Action(() =>
{
//this.panel1.SendToBack();
this.panel1.BringToFront();
loginForm = new PDDShopLoginForm(shop);
loginForm.prodParam = prodParam;
loginForm.TopLevel = false;
loginForm.openType = EnumOpenType.manage;
loginForm.WindowState = FormWindowState.Maximized;
loginForm.InitUrl = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + prodParamHighPriceFakeSkuImg.goods_commit_id +
"&goods_id=" + prodParamHighPriceFakeSkuImg.goods_id + "&type=edit";
loginForm.Dock = DockStyle.Fill;
this.panel1.Controls.Add(loginForm);
loginForm.Show();
loginForm.SetPanelVisible(true);
}));
Thread.Sleep(Randomx.GetId(5000, 10000));
}
while (true)
{
if (loginForm == null || loginForm.Disposing || loginForm.IsDisposed)
break;
Thread.Sleep(Randomx.GetId(500, 1000));
}
Invoke(new Action(() =>
{
this.panel1.SendToBack();
}));
Thread.Sleep(Randomx.GetId(2500 * (i+1), 3500 * (i + 1)));
if (pddUploadRule.IsSignActivity)
saveProdRst = save_goods_edit(shop, prodParamHighPriceFakeSkuImg, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi);
@@ -2879,7 +2927,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
bool sign20981 = chk20981.Checked;
bool sign22347 = chk22347.Checked;
bool sign15996 = chk15996.Checked;
bool sign23165 = chk21365.Checked;
bool sign21365 = chk21365.Checked;
Thread.Sleep(Randomx.GetId(2000, 6000));
// 判断商品是否上架成功
@@ -2928,48 +2976,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
}
}
PDDShopLoginForm loginForm = null;
if (pddUploadRule.IsSignActivity)
{
Invoke(new Action(() =>
{
//this.panel1.SendToBack();
this.panel1.BringToFront();
loginForm = new PDDShopLoginForm(shop);
loginForm.TopLevel = false;
loginForm.openType = EnumOpenType.manage;
loginForm.WindowState = FormWindowState.Maximized;
loginForm.InitUrl = "https://mms.pinduoduo.com";
loginForm.Dock = DockStyle.Fill;
this.panel1.Controls.Add(loginForm);
loginForm.Show();
}));
Thread.Sleep(Randomx.GetId(4000, 10000));
if (sign20981)
{
Invoke(new Action(() =>
{
loginForm.cefWebBrowser.Load("https://mms.pinduoduo.com/act/multi-act-enroll?activityId=20981&activityType=27&SourceType=PROMO-OwnHome&formInfoSceneType=realBigSaleQuickEnrollMultiActivityScene");
}));
Thread.Sleep(Randomx.GetId(4000, 10000));
Invoke(new Action(() =>
{
//https://mms.pinduoduo.com/act/choose_goods/v2?id=20981&SourceType=MMSActicon
loginForm.cefWebBrowser.Load("https://mms.pinduoduo.com/act/goods_price/confirm?activityId=20981&activityType=27&from=chooseGoods&SourceType=MMSActicon");
}));
Thread.Sleep(Randomx.GetId(4000, 10000));
}
Invoke(new Action(() =>
{
//if (PDDShopLoginForm.shopLoginInstance != null)
// PDDShopLoginForm.shopLoginInstance.Close();
if (loginForm != null)
loginForm.Close();
}));
}
var getProdIdRst = get_prod_commit_id(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), false);
var newCommitId = BaseRegex.GetStringJson(ref getProdIdRst, "goods_commit_id");
prodParamHighPriceFakeSkuImg.goods_commit_id = newCommitId;
@@ -3061,9 +3067,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms
skuParam.quantity_delta = 0;
}
loginForm = null;
PDDShopLoginForm loginForm = null;
if (pddUploadRule.IsSignActivity && 1 == 2) // 测试在网页里面直接修改 不使用截断提交方式一次最多改两个,使用的话最多改一个
{
LoadActivityPage(shop);
Invoke(new Action(() =>
{
//this.panel1.SendToBack();
@@ -3106,8 +3114,37 @@ namespace TemuKJD.PDDForms.ProductSelectForms
foreach (var specName in spec0NameLst)
{
List<int> signLst = new List<int>() { 20981, 15996, 21365, 22347 };
while (signLst.Count > 0)
{
var signId = signLst[Randomx.GetId(0, signLst.Count)];
signLst.Remove(signId);
if (signId == 20981 && sign20981)
{
var activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981");
Thread.Sleep(Randomx.GetId(2000, 4500));
}
if (signId == 15996 && sign15996)
{
var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18);
Thread.Sleep(Randomx.GetId(2000, 4500));
}
if (signId == 21365 && sign21365)
{
var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27);
Thread.Sleep(Randomx.GetId(2000, 4500));
}
if (signId == 22347 && sign22347)
{
var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27);
Thread.Sleep(Randomx.GetId(2000, 4500));
}
}
//LoadActivityPage(shop);
var fakeImgskuLst = prodParamHighPriceFakeSkuImg.skus.Where(s => s.spec[0].spec_name == specName).ToList();
var skuImg = prodParamHighPriceFakeSkuImg.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url;
var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url;
foreach (var fakeImgSku in fakeImgskuLst)
{
fakeImgSku.thumb_url = skuImg;
@@ -3180,7 +3217,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
Thread.Sleep(Randomx.GetId(12000, 15000));
}
string activityErr = SignActivity(shop, prodParam, sign22347, sign20981, sign23165, sign15996);
string activityErr = SignActivity(shop, prodParam, sign22347, sign20981, sign21365, sign15996);
//Thread.Sleep(Randomx.GetId(4000, 8000));
if (!string.IsNullOrEmpty(activityErr))
@@ -3207,6 +3244,56 @@ namespace TemuKJD.PDDForms.ProductSelectForms
}
}
public void LoadActivityPage(ShopLoginInfo shop, PDDShopLoginForm loginForm = null)
{
if (pddUploadRule.IsSignActivity)
{
bool sign20981 = chk20981.Checked;
bool sign22347 = chk22347.Checked;
bool sign15996 = chk15996.Checked;
bool sign23165 = chk21365.Checked;
List<string> activityUrlLst = new List<string>();
if (sign20981)
{
activityUrlLst.Add("https://mms.pinduoduo.com/act/multi-act-enroll?activityId=20981&activityType=27&SourceType=PROMO-OwnHome&formInfoSceneType=realBigSaleQuickEnrollMultiActivityScene");
//activityUrlLst.Add("https://mms.pinduoduo.com/act/goods_price/confirm?activityId=20981&activityType=27&from=chooseGoods&SourceType=MMSActicon");
}
if (activityUrlLst.Count <= 0)
return;
Invoke(new Action(() =>
{
//this.panel1.SendToBack();
this.panel1.BringToFront();
if (loginForm == null)
{
loginForm = new PDDShopLoginForm(shop);
loginForm.TopLevel = false;
loginForm.openType = EnumOpenType.manage;
loginForm.WindowState = FormWindowState.Maximized;
//loginForm.InitUrl = "https://mms.pinduoduo.com";
loginForm.InitUrl = activityUrlLst[0];
activityUrlLst.RemoveAt(0);
loginForm.Dock = DockStyle.Fill;
this.panel1.Controls.Add(loginForm);
loginForm.Show();
}
}));
Thread.Sleep(Randomx.GetId(4000, 8000));
while (activityUrlLst.Count > 0)
{
Thread.Sleep(Randomx.GetId(4000, 8000));
}
Invoke(new Action(() =>
{
if (loginForm != null)
loginForm.Close();
this.panel1.SendToBack();
}));
}
}
/// <summary>
/// 所有活动: 22347直通车加权 20981长期报名入口 21365七折活动 15996两件9块9活动(价格要求低于29.9元) 18586百万爆款(需上架满一天) 23620临时活动(已结束)
/// </summary>
@@ -3217,114 +3304,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
string activityErr = "";
//21365 7折活动
//21365 7折活动 //活动2
if (1 == 1 && sign21365)
{
var activityRst2 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27);
if (!activityRst2.Contains("\"success\":true"))
{
var error = BaseRegex.GetStringJson(ref activityRst2, "error_msg");
if (string.IsNullOrEmpty(error))
error = activityRst2;
activityErr += "\r\n上传错误 365查询失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg2;
}
try
{
var jObj = JObject.Parse(activityRst2);
var jStr = JsonHelper.SerializeObject(jObj["result"]);
var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject<PDDActivitySuggestPriceInfo>(jStr);
var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_goods_rule_vos.FirstOrDefault();
if (pddActivitiPriceProd == null)
{
activityErr += "\r\n上传错误 365查询/新建失败 商品未提交成功或不满足参加活动条件";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg2;
}
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list)
{
if (activitySkuInfo.spec_info_str.Contains("福利款"))
{
}
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null || sku.multi_price > activitySkuInfo.require_price)
{
activityErr += "\r\n上传错误 365价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg2;
}
}
var quantity = prodParam.skus.Sum(s => s.quantity_delta);
PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam();
actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id;
actSubmitParam.enroll_source_ctx.enroll_type = 3;
actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1";
actSubmitParam.enroll_source_ctx.source_type = "MMSActicon";
actSubmitParam.enroll_source_ctx.scene_type = "ActivityCard";
var goods_vo_item = new goods_vo_param();
goods_vo_item.goods_id = prodParam.goods_id;
var skuSamePrice = prodParam.skus.Max(s => s.multi_price);
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list)
{
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null)
{
activityErr += "\r\n上传错误 365价格sku未找到";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg2;
}
create_sku_vo_param sku_vo_item = new create_sku_vo_param();
sku_vo_item.sku_id = activitySkuInfo.sku_id;
sku_vo_item.sku_activity_price = sku.multi_price;
sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param()
{
filling_sku_price = sku.multi_price,
gear_rule = activitySkuInfo.gear_rule,
require_price = sku.multi_price,
filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule,
};
goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item);
}
goods_vo_item.create_activity_price_vo.create_quantity_vo.goods_activity_quantity =
Math.Min(quantity.ParseToInt(), 300); // 7折活动库存上限300
actSubmitParam.goods_volist.Add(goods_vo_item);
actSubmitParam.create_protocol_vo.need_create_cost_template = true;
var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 21365, 27);
if (addActivityRst.Contains("频繁"))
{
Thread.Sleep(Randomx.GetId(3000, 7000));
addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 21365, 27);
}
var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg))
{
var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (string.IsNullOrEmpty(error))
error = addActivityRst;
activityErr += "\r\n上传错误 365新建失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg2;
}
}
catch (Exception ex)
{
activityErr += "\r\n上传错误 365查询/新建失败 " + ex.Message;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg2;
}
} //活动2结束
SignActivity21365(shop, prodParam);
}
restoreSkuImg2:
//活动5 18586 百万爆款 必须上架一天以上的sku才能报名暂时注释
@@ -3541,115 +3525,17 @@ namespace TemuKJD.PDDForms.ProductSelectForms
} //活动4
restoreSkuImg4:
// 20981 长期活动
// 20981 长期活动 //活动1
if (1 == 1 && sign20981)
{
activityErr += SignActivity20981(shop, prodParam);
goto restoreSkuImg1;
}
restoreSkuImg1:
//15996 9块9 (价格要求低于29.9元)
//15996 9块9 (价格要求低于29.9元) //活动3
if (1 == 1 && sign15996 && !prodParam.skus.Any(s => s.multi_price > 2990))
{
Thread.Sleep(Randomx.GetId(500, 1500));
var activityRst3 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18);
if (!activityRst3.Contains("\"success\":true"))
{
var error = BaseRegex.GetStringJson(ref activityRst3, "error_msg");
if (string.IsNullOrEmpty(error))
error = activityRst3;
activityErr += "\r\n上传错误 996查询失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg3;
}
try
{
var jObj = JObject.Parse(activityRst3);
var jStr = JsonHelper.SerializeObject(jObj["result"]);
var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject<PDDActivitySuggestPriceInfo>(jStr);
var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_goods_rule_vos.FirstOrDefault();
if (pddActivitiPriceProd == null)
{
activityErr += "\r\n上传错误 996查询/新建失败 商品未提交成功或不满足参加活动条件";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg3;
}
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_resource_price.sku_info_list)
{
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null || sku.multi_price > 2990 /*activitySkuInfo.require_price*/)
{
activityErr += "\r\n上传错误 996价格低于产品价";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg3;
}
}
PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam();
actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id;
actSubmitParam.enroll_source_ctx.enroll_type = 3;
actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1";
actSubmitParam.enroll_source_ctx.source_type = "MMSActicon";
actSubmitParam.enroll_source_ctx.scene_type = "ActivityCard";
var goods_vo_item = new goods_vo_param();
goods_vo_item.goods_id = prodParam.goods_id;
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_resource_price.sku_info_list)
{
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null)
{
activityErr += "\r\n上传错误 996价格sku未找到";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg3;
}
create_sku_vo_param sku_vo_item = new create_sku_vo_param();
sku_vo_item.sku_id = activitySkuInfo.sku_id;
sku_vo_item.sku_activity_price = sku.multi_price;
sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param()
{
filling_sku_price = sku.multi_price,
gear_rule = activitySkuInfo.gear_rule,
require_price = sku.multi_price,
filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule,
};
goods_vo_item.create_discount_vo = new create_discount_vo_param();
goods_vo_item.create_discount_vo.hit_multi_percent = true;
goods_vo_item.create_discount_vo.multi_percent_discount = 99;
goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item);
}
actSubmitParam.goods_volist.Add(goods_vo_item);
actSubmitParam.create_protocol_vo.need_create_cost_template = true;
var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 15996, 18);
var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg))
{
var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (string.IsNullOrEmpty(error))
error = addActivityRst;
activityErr += "\r\n上传错误 996新建失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg3;
}
}
catch (Exception ex)
{
activityErr = "\r\n上传错误 996查询/新建失败 " + ex.Message;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
goto restoreSkuImg3;
}
} //活动3
restoreSkuImg3:
activityErr += SignActivity15996(shop, prodParam);
}
// 22347 直通车加权
if (1 == 1 && sign22347)
@@ -3660,6 +3546,116 @@ namespace TemuKJD.PDDForms.ProductSelectForms
return activityErr;
}
string SignActivity21365(ShopLoginInfo shop, PDDProductUploadParam prodParam)
{
string activityErr = "";
var activityRst2 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27);
if (!activityRst2.Contains("\"success\":true"))
{
var error = BaseRegex.GetStringJson(ref activityRst2, "error_msg");
if (string.IsNullOrEmpty(error))
error = activityRst2;
activityErr += "\r\n上传错误 365查询失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
try
{
var jObj = JObject.Parse(activityRst2);
var jStr = JsonHelper.SerializeObject(jObj["result"]);
var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject<PDDActivitySuggestPriceInfo>(jStr);
var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_goods_rule_vos.FirstOrDefault();
if (pddActivitiPriceProd == null)
{
activityErr += "\r\n上传错误 365查询/新建失败 商品未提交成功或不满足参加活动条件";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list)
{
if (activitySkuInfo.spec_info_str.Contains("福利款"))
{
}
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null || sku.multi_price > activitySkuInfo.require_price)
{
activityErr += "\r\n上传错误 365价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
}
var quantity = prodParam.skus.Sum(s => s.quantity_delta);
PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam();
actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id;
actSubmitParam.enroll_source_ctx.enroll_type = 3;
actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1";
actSubmitParam.enroll_source_ctx.source_type = "MMSActicon";
actSubmitParam.enroll_source_ctx.scene_type = "ActivityCard";
var goods_vo_item = new goods_vo_param();
goods_vo_item.goods_id = prodParam.goods_id;
var skuSamePrice = prodParam.skus.Max(s => s.multi_price);
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list)
{
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null)
{
activityErr += "\r\n上传错误 365价格sku未找到";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
create_sku_vo_param sku_vo_item = new create_sku_vo_param();
sku_vo_item.sku_id = activitySkuInfo.sku_id;
sku_vo_item.sku_activity_price = sku.multi_price;
sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param()
{
filling_sku_price = sku.multi_price,
gear_rule = activitySkuInfo.gear_rule,
require_price = sku.multi_price,
filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule,
};
goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item);
}
goods_vo_item.create_activity_price_vo.create_quantity_vo.goods_activity_quantity =
Math.Min(quantity.ParseToInt(), 300); // 7折活动库存上限300
actSubmitParam.goods_volist.Add(goods_vo_item);
actSubmitParam.create_protocol_vo.need_create_cost_template = true;
var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 21365, 27);
if (addActivityRst.Contains("频繁"))
{
Thread.Sleep(Randomx.GetId(3000, 7000));
addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 21365, 27);
}
var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg))
{
var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (string.IsNullOrEmpty(error))
error = addActivityRst;
activityErr += "\r\n上传错误 365新建失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
}
catch (Exception ex)
{
activityErr += "\r\n上传错误 365查询/新建失败 " + ex.Message;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
return activityErr;
}
string SignActivity20981(ShopLoginInfo shop, PDDProductUploadParam prodParam)
{
string activityErr = "";
@@ -3786,6 +3782,108 @@ namespace TemuKJD.PDDForms.ProductSelectForms
return activityErr;
}
string SignActivity15996(ShopLoginInfo shop, PDDProductUploadParam prodParam)
{
string activityErr = "";
Thread.Sleep(Randomx.GetId(500, 1500));
var activityRst3 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18);
if (!activityRst3.Contains("\"success\":true"))
{
var error = BaseRegex.GetStringJson(ref activityRst3, "error_msg");
if (string.IsNullOrEmpty(error))
error = activityRst3;
activityErr += "\r\n上传错误 996查询失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
try
{
var jObj = JObject.Parse(activityRst3);
var jStr = JsonHelper.SerializeObject(jObj["result"]);
var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject<PDDActivitySuggestPriceInfo>(jStr);
var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_goods_rule_vos.FirstOrDefault();
if (pddActivitiPriceProd == null)
{
activityErr += "\r\n上传错误 996查询/新建失败 商品未提交成功或不满足参加活动条件";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_resource_price.sku_info_list)
{
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null || sku.multi_price > 2990 /*activitySkuInfo.require_price*/)
{
activityErr += "\r\n上传错误 996价格低于产品价";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
}
PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam();
actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id;
actSubmitParam.enroll_source_ctx.enroll_type = 3;
actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1";
actSubmitParam.enroll_source_ctx.source_type = "MMSActicon";
actSubmitParam.enroll_source_ctx.scene_type = "ActivityCard";
var goods_vo_item = new goods_vo_param();
goods_vo_item.goods_id = prodParam.goods_id;
foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_resource_price.sku_info_list)
{
var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str);
if (sku == null)
{
activityErr += "\r\n上传错误 996价格sku未找到";
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
create_sku_vo_param sku_vo_item = new create_sku_vo_param();
sku_vo_item.sku_id = activitySkuInfo.sku_id;
sku_vo_item.sku_activity_price = sku.multi_price;
sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param()
{
filling_sku_price = sku.multi_price,
gear_rule = activitySkuInfo.gear_rule,
require_price = sku.multi_price,
filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule,
};
goods_vo_item.create_discount_vo = new create_discount_vo_param();
goods_vo_item.create_discount_vo.hit_multi_percent = true;
goods_vo_item.create_discount_vo.multi_percent_discount = 99;
goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item);
}
actSubmitParam.goods_volist.Add(goods_vo_item);
actSubmitParam.create_protocol_vo.need_create_cost_template = true;
var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 15996, 18);
var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg))
{
var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg");
if (string.IsNullOrEmpty(error))
error = addActivityRst;
activityErr += "\r\n上传错误 996新建失败 " + error;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
}
catch (Exception ex)
{
activityErr = "\r\n上传错误 996查询/新建失败 " + ex.Message;
if (BaseClass.SaLevel != 1 && 1 != 1)
activityErr = "上传错误";
return activityErr;
}
return activityErr;
}
string SignActivity22347(ShopLoginInfo shop, PDDProductUploadParam prodParam)
{
string activityErr = "";
@@ -5655,6 +5753,14 @@ Content-Type: image/jpeg
{
if (!chk15996.Checked && !chk20981.Checked && !chk21365.Checked && !chk22347.Checked)
chkActivity.Checked = false;
if (IsLoadComplate)
{
pddUploadRule.sign20981 = chk20981.Checked;
pddUploadRule.sign15996 = chk15996.Checked;
pddUploadRule.sign21365 = chk21365.Checked;
pddUploadRule.sign22347 = chk22347.Checked;
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_upload_rule", pddUploadRule);
}
}
private void pbSkuImg_Click(object sender, EventArgs e)
@@ -5801,5 +5907,10 @@ Content-Type: image/jpeg
public decimal UpgradeVersionAddPrice { get; set; } = 1m;
public bool IsUseExtCodePrice { get; set; }
public bool sign20981 { get; set; }
public bool sign22347 { get; set; }
public bool sign15996 { get; set; }
public bool sign21365 { get; set; }
}
}