diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs
index d25bd7f..49368c9 100644
--- a/AllBase/BaseClass.cs
+++ b/AllBase/BaseClass.cs
@@ -27,7 +27,7 @@ namespace AllBase
///
/// 版本ID
///
- public static int VersionCount = 1180;
+ public static int VersionCount = 1182;
public static string MainPath = "29wx";
//public static string MainPath = "29wx";
//public static string MainPath = "29pdd";
diff --git a/KJDService/KJD_WebService/BLL/WXXD/WXUserManage.cs b/KJDService/KJD_WebService/BLL/WXXD/WXUserManage.cs
index 0f0a232..a0a32b1 100644
--- a/KJDService/KJD_WebService/BLL/WXXD/WXUserManage.cs
+++ b/KJDService/KJD_WebService/BLL/WXXD/WXUserManage.cs
@@ -50,10 +50,19 @@ namespace KJD_Web.BLL.WXXD
var mobile = RegexUtils.GetStringQuery(ref inputData, "mobile")?.Replace("'", "\\'");
var password = RegexUtils.GetStringQuery(ref inputData, "password")?.Replace("'", "\\'");
+ var sub_soft_type = RegexUtils.GetStringQuery(ref inputData, "sub_soft_type")?.Replace("'", "\\'");
+
var version = RegexUtils.GetStringQuery(ref inputData, "version").ParseToInt();
- if (version < (System.Configuration.ConfigurationManager.ConnectionStrings["LimitVersion"]?.ConnectionString).ParseToInt())
- return "{\"code\":1,\"msg\":\"当前版本过于陈旧,请立即升级新版\"}";
+ if (sub_soft_type == "order")
+ {
+
+ }
+ else
+ {
+ if (version < (System.Configuration.ConfigurationManager.ConnectionStrings["LimitVersion"]?.ConnectionString).ParseToInt())
+ return "{\"code\":1,\"msg\":\"当前版本过于陈旧,请立即升级新版\"}";
+ }
int r2 = 0;
int.TryParse(RegexUtils.GetStringQuery(ref inputData, "r2"), out r2);
diff --git a/KJDService/KJD_WebService/Upload/Prod/BaseWxProd.cs b/KJDService/KJD_WebService/Upload/Prod/BaseWxProd.cs
index 2793530..c88abf0 100644
--- a/KJDService/KJD_WebService/Upload/Prod/BaseWxProd.cs
+++ b/KJDService/KJD_WebService/Upload/Prod/BaseWxProd.cs
@@ -288,7 +288,7 @@ namespace KJD_Web.Upload.Prod
if (wxDisSku != null)
sku.productSkuInfo.salePrice = wxDisSku.price;
else
- sku.productSkuInfo.salePrice = (sku.productSkuInfo.salePrice - sku.productSkuInfo.salePrice * realPricePer).ParseToInt();
+ sku.productSkuInfo.salePrice = (sku.productSkuInfo.salePrice - sku.productSkuInfo.salePrice * (1m - realPricePer)).ParseToInt();
}
if (wxClientProd.productSkus.Min(s => s.productSkuInfo.salePrice * 0.01m) == 0)
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs
index 502cc4e..3abef37 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs
@@ -130,6 +130,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.dtpStart.Value = new DateTime(2026, 3, 12, 0, 0, 0);
this.dtpEnd.Value = new DateTime(2026, 3, 13, 13, 0, 0);
+
+
+ WXDBProdUploadForm.lstWXShopTokenInfo = NaiBa.Util.Helper.ConfigHelper.LoadConfig>("wx_shop_token_list");
+ if (WXDBProdUploadForm.lstWXShopTokenInfo == null)
+ WXDBProdUploadForm.lstWXShopTokenInfo = new ConcurrentList();
}
private void btnSearch_Click(object sender, EventArgs e)
@@ -1310,8 +1315,29 @@ namespace TemuKJD.PDDForms.ProductSelectForms
public static void GetProdWxCat(KJDDBProduct prod, DataGridViewRow row)
{
- // 获取微信accessToken
- var token = new WxApiBLL().GetRandomWxToken();
+ var shop = GlobalConfig.ShopLoginList.OrderBy(x => Guid.NewGuid()).FirstOrDefault();
+ WXShopTokenInfo token = WXDBProdUploadForm.lstWXShopTokenInfo.FirstOrDefault(t => t.shopId == shop.ShopId);
+ if (token == null)
+ token = new WXShopTokenInfo();
+ if (token.isExpire || string.IsNullOrEmpty(token.accessToken))
+ {
+ AuthInfo auth = GlobalConfig.lstWxShopAuthInfo.FirstOrDefault(sa => sa.ShopId == shop.ShopId);
+ //if (auth != null && auth.ExpiresTime > DateTime.Now.AddMinutes(5))
+ {
+ token = new WxApiBLL().GetShopWxToken(shop);
+
+ if (!string.IsNullOrEmpty(token.accessToken))
+ {
+ WXDBProdUploadForm.lstWXShopTokenInfo.RemoveAll(t => t.shopId == shop.ShopId);
+ WXDBProdUploadForm.lstWXShopTokenInfo.Add(token);
+ NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_shop_token_list", WXDBProdUploadForm.lstWXShopTokenInfo);
+ }
+ }
+ }
+ // 如果店铺token不可用,随机获取一个上传图片的accessToken
+ if (token == null || token.isExpire || string.IsNullOrEmpty(token.accessToken))
+ // 获取微信accessToken
+ token = new WxApiBLL().GetRandomWxToken();
try
{
JObject obj = new JObject();
@@ -1611,6 +1637,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
row.Cells["colMainCate"].Value = mainCatName;
row.Cells["col_cat_name"].Value = catName;
+ row.Cells["colCatBound"].Value = GlobalConfig.WxCatBoundList.FirstOrDefault(cb => cb.leaf_id == dbProd.wx_cat_leaf)?.cat_bound;
}));
}
}
diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
index 45f2560..97ef18f 100644
--- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
+++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
@@ -37,13 +37,13 @@ namespace TemuKJD.WXForms.ProductForms
public partial class WXDBProdUploadForm : BaseForm
{
public static WXDBProdUploadForm Instance { get; set; } = null;
+ public static ConcurrentList lstWXShopTokenInfo = new ConcurrentList();
public CancellationTokenSource cancellationTokenSource { get; set; } = null;
public bool IsWxNotUseSoftwareDefaultAddressOnce { get; set; } = false;
public bool IsLoadComplate { get; set; } = false;
public ConcurrentList lstTemuDBProductSelect = new ConcurrentList();
- ConcurrentList lstWXShopTokenInfo = new ConcurrentList();
ConcurrentList lstAddPriceRule = new ConcurrentList();
bool isInit = false;
@@ -353,9 +353,20 @@ namespace TemuKJD.WXForms.ProductForms
if (BaseClass.UserAuthority.Contains("商品采集") || BaseClass.ParentAuthority.Contains("商品采集"))
{
cmbSourceType.Items.Insert(1, "------");
+ cmbSourceType.Items.Insert(1, "微信商品");
cmbSourceType.Items.Insert(1, "1688商品");
cmbSourceType.Items.Insert(1, "多多商品");
- cmbSourceType.Items.Insert(1, "微信商品");
+
+ if (!BaseClass.UserAuthority.ParseToString().Contains("货源选择"))
+ {
+ this.lblSourceType.Visible = true;
+ this.cmbSourceType.Visible = true;
+ this.cmbSourceType.Items.Clear();
+ this.cmbSourceType.Items.Add("多多商品,1688商品,微信商品");
+ this.cmbSourceType.Items.Add("多多商品");
+ this.cmbSourceType.Items.Add("1688商品");
+ this.cmbSourceType.Items.Add("微信商品");
+ }
chkRandomFissionProduct.Visible = true;
txtRandomFissionProductCount.Visible = true;
@@ -557,6 +568,7 @@ namespace TemuKJD.WXForms.ProductForms
{
Invoke(new Action(() =>
{
+ //cmbGroupFilter.Items.Remove("用户" + mainUserName);
cmbGroupFilter.Items.Remove("------");
cmbGroupFilter.Items.Remove("我的商品");
cmbGroupFilter.Items.Insert(1, "------");
@@ -1208,7 +1220,7 @@ namespace TemuKJD.WXForms.ProductForms
result = UploadProduct(shop, kjdDbProdTmp, selectProd, row.Cells["colOpResult"], startTime);
if (result.Contains("今日提审次数已用尽,请明日再试") || result.Contains("如需上架请先缴纳足额保证金") || result.Contains("在架商品数已达到上限") ||
- result.Contains("提审次数已达上限") || result.Contains("拥金上货失败:需要开通优选联盟"))
+ result.Contains("提审次数已达上限") || result.Contains("拥金上货失败:需要开通优选联盟") || result.Contains("本店铺近期提审失败比例较高,已被限"))
{
var shopRow = dgvShop.Rows.Cast().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
@@ -2038,7 +2050,7 @@ namespace TemuKJD.WXForms.ProductForms
if (token.isExpire || string.IsNullOrEmpty(token.accessToken))
{
AuthInfo auth = GlobalConfig.lstWxShopAuthInfo.FirstOrDefault(sa => sa.ShopId == shop.ShopId);
- if (auth != null && auth.ExpiresTime > DateTime.Now.AddMinutes(5))
+ //if (auth != null && auth.ExpiresTime > DateTime.Now.AddMinutes(5))
{
token = new WxApiBLL().GetShopWxToken(shop);
@@ -3281,20 +3293,10 @@ namespace TemuKJD.WXForms.ProductForms
attrValue = "平装";
}
}
- if (attrValue.IsNullOrEmpty() && attr.isRequired == true)
+ // 强制改为国产
{
- if (attrValueLst.Contains("其他"))
- attrValue = "其他";
- else if (attrValueLst.Contains("常规"))
- attrValue = "常规";
- else if (attrValueLst.Contains("通用"))
- attrValue = "通用";
- else if (attrValueLst.Contains("国产"))
+ if (attrValueLst.Contains("国产"))
attrValue = "国产";
- else if (attr.value.Contains("绒丝;羽毛;白鸭绒;白鹅绒;灰鸭绒;灰鹅绒;鸭毛片;鹅毛片"))
- {
- attrValue = "绒丝";
- }
else if (attr.name == "是否进口")
{
attrValue = "非进口";
@@ -3309,6 +3311,19 @@ namespace TemuKJD.WXForms.ProductForms
{
attrValue = "中国大陆";
}
+ }
+ if (attrValue.IsNullOrEmpty() && attr.isRequired == true)
+ {
+ if (attrValueLst.Contains("其他"))
+ attrValue = "其他";
+ else if (attrValueLst.Contains("常规"))
+ attrValue = "常规";
+ else if (attrValueLst.Contains("通用"))
+ attrValue = "通用";
+ else if (attr.value.Contains("绒丝;羽毛;白鸭绒;白鹅绒;灰鸭绒;灰鹅绒;鸭毛片;鹅毛片"))
+ {
+ attrValue = "绒丝";
+ }
//else if (attrValueLst.Any(v => v.Contains("%")))
//{
// attrValue = attrValueLst.FirstOrDefault();
@@ -3655,28 +3670,28 @@ namespace TemuKJD.WXForms.ProductForms
prodInfo.detail.sku.FirstOrDefault().thumb_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
// 处理系统指定的规格名称
- if ((upProdParam.product.info.category.FirstOrDefault()?.name == "食品饮料" || prodInfo.detail.cats.FirstOrDefault() == "食品饮料") &&
- (selectProd.cat_name == "坚果炒货" || selectProd.cat_name == "果干"))
- {
- if (!prodInfo.detail.sku.FirstOrDefault().spec.Any(s => s.parent_name == "规格/净含量"))
- {
- foreach (var sku in prodInfo.detail.sku)
- {
- sku.spec.FirstOrDefault().parent_name = "规格/净含量";
- }
- }
- }
- //else if ((upProdParam.product.info.category.FirstOrDefault()?.name == "食品饮料" || prodInfo.detail.cats.FirstOrDefault() == "食品饮料"))
+ //if ((upProdParam.product.info.category.FirstOrDefault()?.name == "食品饮料" || prodInfo.detail.cats.FirstOrDefault() == "食品饮料") &&
+ // (selectProd.cat_name == "坚果炒货" || selectProd.cat_name == "果干"))
//{
- // if (!prodInfo.detail.sku.FirstOrDefault().spec.Any(s => s.parent_name == "规格"))
+ // if (!prodInfo.detail.sku.FirstOrDefault().spec.Any(s => s.parent_name == "规格/净含量"))
// {
// foreach (var sku in prodInfo.detail.sku)
// {
- // sku.spec.FirstOrDefault().parent_name = "规格";
+ // sku.spec.FirstOrDefault().parent_name = "规格/净含量";
// }
// }
//}
- else
+ ////else if ((upProdParam.product.info.category.FirstOrDefault()?.name == "食品饮料" || prodInfo.detail.cats.FirstOrDefault() == "食品饮料"))
+ ////{
+ //// if (!prodInfo.detail.sku.FirstOrDefault().spec.Any(s => s.parent_name == "规格"))
+ //// {
+ //// foreach (var sku in prodInfo.detail.sku)
+ //// {
+ //// sku.spec.FirstOrDefault().parent_name = "规格";
+ //// }
+ //// }
+ ////}
+ //else
{
var leafCat = upProdParam.product.info.category.LastOrDefault();
if (leafCat?.catInfo?.saleAttr?.attr != null)
@@ -3685,18 +3700,24 @@ namespace TemuKJD.WXForms.ProductForms
{
if (att.isRequired == true)
{
+ // 规格属性名放在第二个规格上
if (att.normalRelease.ruleType == 2 && prodInfo.detail.sku.FirstOrDefault()?.spec.Count == 2)
{
foreach (var sku in prodInfo.detail.sku)
{
- sku.spec[1].parent_name = att.name;
+ // 如果有指定规格属性名称就不再设置
+ if (!sku.spec.Any(sp => sp.parent_name == att.name))
+ sku.spec[1].parent_name = att.name;
}
}
+ // 规格属性名放在第一个规格上
else
{
foreach (var sku in prodInfo.detail.sku)
{
- sku.spec[0].parent_name = att.name;
+ // 如果有指定规格属性名称就不再设置
+ if (!sku.spec.Any(sp => sp.parent_name == att.name))
+ sku.spec[0].parent_name = att.name;
}
}
}
@@ -5218,9 +5239,14 @@ namespace TemuKJD.WXForms.ProductForms
string addUserName = BaseClass.UserAuthority.Contains("商品采集") ? ("admin," + BaseClass.UserName) : "admin";
if (BaseClass.GroupId != 3)
addUserName = BaseClass.ParentAuthority.Contains("商品采集") ? ("admin," + BaseClass.ParentUserName) : "admin";
- // 如果指定只有自己采集的商品,则只随机自己采集的商品
- if ((cmbSourceType.Text.Trim().Contains("多多商品") || cmbSourceType.Text.Trim().Contains("1688商品") || cmbSourceType.Text.Trim().Contains("微信商品")) &&
- cmbSourceType.Text.Trim().Replace("多多商品", "").Replace("1688商品", "").Replace("微信商品", "").Trim(',').IsNullOrEmpty())
+
+ // 采集用户如果没有爆款数据或货源选择权限,则只能随机自己采集的商品
+ if ((BaseClass.UserAuthority.Contains("商品采集") || BaseClass.UserAuthority.Contains("商品采集")) &&
+ cmbHot.Text != "爆款数据" && !BaseClass.UserAuthority.Contains("货源选择"))
+ data += "&add_user_name=" + (BaseClass.GroupId == 3 ? BaseClass.UserName : BaseClass.ParentUserName);
+ // 如果指定只有自己采集的商品,则只会随机自己采集的商品
+ else if ((cmbSourceType.Text.Trim().Contains("多多商品") || cmbSourceType.Text.Trim().Contains("1688商品") || cmbSourceType.Text.Trim().Contains("微信商品")) &&
+ cmbSourceType.Text.Trim().Replace("多多商品", "").Replace("1688商品", "").Replace("微信商品", "").Trim(',').IsNullOrEmpty())
data += "&add_user_name=" + (BaseClass.GroupId == 3 ? BaseClass.UserName : BaseClass.ParentUserName);
else
data += "&add_user_name=" + addUserName;
@@ -5751,45 +5777,6 @@ namespace TemuKJD.WXForms.ProductForms
{
cmbJstInitSet.Text = "是";
}
-
- string sourceType = cmbSourceType.Text.Trim().Replace("已采集数据", "1688外部数据");
- Task.Run(() =>
- {
- // 同时刷新下商品分组
- string addUserName = BaseClass.UserAuthority.Contains("商品采集") ? ("admin," + BaseClass.UserName) : "admin";
- if (BaseClass.GroupId != 3)
- addUserName = BaseClass.ParentAuthority.Contains("商品采集") ? ("admin," + BaseClass.ParentUserName) : "admin";
- PDDDBProdListForm.GetPDDProductGroup(cmbGroupFilter, sourceType, "", addUserName); // 同时刷新下商品分组
- if (BaseClass.UserAuthority.Contains("商品采集") || BaseClass.ParentAuthority.Contains("商品采集"))
- {
- var mainUserName = BaseClass.GroupId == 3 ? BaseClass.UserName : BaseClass.ParentUserName;
- if (cmbGroupFilter.Items.Cast