1微信店铺切换登录 20% 2过滤筛选备注改为全等于 3数据库数据拉回逻辑优化

This commit is contained in:
wule committed 2026-03-13 16:21:15 +08:00
1 parent dc83334c59
commit 860b4408ef
37 files changed
+2520 -274

No files matched your search

+1 -1
View File
@@ -178,7 +178,7 @@
<Compile Include="JsonHelper.cs" />
<Compile Include="LogSave.cs" />
<Compile Include="Md5Base.cs" />
<Compile Include="Model\Config\WxShopAfterSaleInfo.cs" />
<Compile Include="Model\Config\WxTalkFormShopMainInfo.cs" />
<Compile Include="Model\Config\WxShopKfStatistics.cs" />
<Compile Include="Model\Config\WxShopMainStatistics.cs" />
<Compile Include="Model\Config\WxShopUploadInfo.cs" />
+1 -1
View File
@@ -27,7 +27,7 @@ namespace AllBase
/// <summary>
/// 版本ID
/// </summary>
public static int VersionCount = 900;
public static int VersionCount = 909;
//public static int VersionCount = 613;
/// <summary>
@@ -1,15 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Config
{
public class WxShopAfterSaleInfo
{
public string ShopId { get; set; }
public int? AfterSaleCount { get; set; }
public DateTime RefreshTime { get; set; }
}
}
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Config
{
public class WxTalkFormShopMainInfo
{
// waybillErrorRet物流异常
public string ShopId { get; set; }
/// <summary>
/// 待发货 orderNumRet.pendingShipNum
/// </summary>
public int? WaitSendCount { get; set; }
/// <summary>
/// 物流异常 waybillErrorRet.totalNum
/// </summary>
public int? WaybillError { get; set; }
/// <summary>
/// 售后 aftersaleAllRet.totalNum
/// </summary>
public int? AfterSaleCount { get; set; }
/// <summary>
/// 店铺违规 punishRet.pendingNum
/// </summary>
public int? PunishCount { get; set; }
public decimal? ShopScore { get; set; }
public string err_msg { get; set; }
public DateTime RefreshTime { get; set; }
}
}
@@ -17,6 +17,10 @@ namespace AllBase.Model.Result.PDDResult
public string name { get; set; }
public int? ref_pid { get; set; }
public List<value_item> values { get; set; }
/// <summary>
/// 对应微信输入类型
/// </summary>
//public int? wx_input_type { get; set; }
}
public class value_item
{
@@ -9,10 +9,32 @@ namespace AllBase.Model.Result.WXResult
public class WXGetEditProductInfoLite
{
public WXProductInfo product { get; set; }
public WXAfterSaleAddressInfo address { get; set; }
}
public class WXAfterSaleAddressInfo
{
public string addressId { get; set; } // "69496256002",
public string name { get; set; } // "",
public WXAddressInfo addressInfo { get; set; }
}
public class WXAddressInfo
{
public string userName { get; set; } // "王总",
public string postalCode { get; set; } // "",
public string provinceName { get; set; } // "安徽省",
public string cityName { get; set; } // "合肥市",
public string countyName { get; set; } // "肥西县",
public string detailInfo { get; set; } // "蜀山区长江西路某某号某某单元",
public string telNumber { get; set; } // "18388888888",
public int? lat { get; set; } // 0,
public int? lng { get; set; } // 0
}
public class WXProductInfo
{
public List<WXProductSkuInfoInfoLite> productSkus { get; set; }
public WXProductKeyInfo productKey { get; set; }
public WXProductInfoInfo info { get; set; }
public int? status { get; set; } // 5
@@ -24,6 +46,43 @@ namespace AllBase.Model.Result.WXResult
public int source { get; set; } // 1
}
public class WXProductSkuInfoInfoLite
{
public WXSkuKeyInfoLite skuKey { get; set; }
public WXProductSkuInfoLite productSkuInfo { get; set; }
}
public class WXProductSkuInfoLite
{
public List<WXSaleParamInfoLite> saleParam { get; set; }
public string thumbImg { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/69a6a1ae000e63741a5ddf35d5b71715000000a000004f50"
public string skuCode { get; set; } // ""
public int? salePrice { get; set; } // 5880
public WXStockInfoLite stockInfo { get; set; }
public WXRealStockInfoLite realStockInfo { get; set; }
}
public class WXRealStockInfoLite
{
public int? stockNum { get; set; } // 999
public int? totalNum { get; set; } // 999
}
public class WXStockInfoLite
{
public string stockNum { get; set; } // "9999999"
}
public class WXSaleParamInfoLite
{
public List<WXProductCategoryInfoLite> categorys { get; set; }
}
public class WXSkuKeyInfoLite
{
public string skuId { get; set; } // "8767785131",
}
public class WXProductKeyInfo
{
public string productId { get; set; } // "10000538778988"
@@ -33,7 +92,7 @@ namespace AllBase.Model.Result.WXResult
{
// 主图
public List<string> headImg { get; set; } = new List<string>();
public List<WXProductCategoryInfo> category { get; set; } = new List<WXProductCategoryInfo>();
public List<WXProductCategoryInfoLite> category { get; set; } = new List<WXProductCategoryInfoLite>();
public List<WXProductParamInfo> param { get; set; } = new List<WXProductParamInfo>();
public List<WXQualificationInfo> qualificationList { get; set; }
public List<WXProductHeadimgInfo> productHeadimgInfo { get; set; }
@@ -46,12 +105,18 @@ namespace AllBase.Model.Result.WXResult
public string brandId { get; set; } // "10655917"
public string listingTime { get; set; } // "1772533190"
public string spuCode { get; set; } // "2028756820870602753"
public WXAfterSaleInfo afterSaleInfo { get; set; }
public string lastEditDraftTime { get; set; } // "1772532559"
public string shortTitle { get; set; } // "歪歪马脉冲震动成人情趣棒"
public string aiGenShortTitle { get; set; } // "歪歪马脉冲震动成人情趣棒"
public string uniqueId { get; set; } // "4411405439658180613"
}
public class WXAfterSaleInfo
{
public string afterSaleAddressId;
}
public class WXProductDetailInfo
{
public List<string> detailImg { get; set; } = new List<string>(); // [ "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/69a6a8460000683300254e4c8c4fab15000000a100004f50", ... ],
@@ -109,16 +174,16 @@ namespace AllBase.Model.Result.WXResult
public long? catGroup { get; set; } // 4294967295,
}
public class WXProductCategoryInfo
public class WXProductCategoryInfoLite
{
public string catId { get; set; } // "10000577"
public string name { get; set; } // "情趣用品" // 可能为空或没有此字段
public string fCatId { get; set; } // "10000575"
public WXProductInfoInfo catInfo { get; set; }
public WXProductCategoryInfoInfoLite catInfo { get; set; }
public bool? leaf { get; set; } // false
}
public class WXProductCategoryInfoInfo
public class WXProductCategoryInfoInfoLite
{
public int? catLevel { get; set; } // 2
public long? catGroup { get; set; } // 4294967295
+360
View File
@@ -1,6 +1,7 @@
using AllBase;
using AllBase.Model.Result;
using AllBase.Model.Result.PDDResult;
using AllBase.Model.Result.WXResult;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
@@ -601,6 +602,7 @@ namespace TemuKJD.BLL
prodInfo.detail.sku = new List<sku_item>();
foreach (JObject jSku in jstGoodsObj["skuInfo"]["goodsSkuDetail"])
{
var skuStr = jSku.ParseToString();
sku_item skuInfo = new sku_item()
{
id = 0,
@@ -677,6 +679,11 @@ namespace TemuKJD.BLL
convertRst = "SKU货号不存在";
return null;
}
if (jstSecretCodeLst["skus"].Select(s => s["spuCode"].ParseToString()).Distinct().Count() != jstSecretCodeLst["skus"].Count())
{
convertRst = "SKU货号重复";
return null;
}
skuInfo.out_sku_sn = skuId;
prodInfo.detail.sku.Add(skuInfo);
}
@@ -836,5 +843,358 @@ namespace TemuKJD.BLL
return null;
}
}
public PDDProductInfo WXProdToPddConvert(out string convertRst, KJDDBProduct dbProd)
{
convertRst = "";
try
{
//var prodObj = JsonHelper.JObjectParse(dbProd.product_json);
//if (prodObj["pddData"].IsJTokenNullOrEmpty())
//{
// convertRst = "缺少指定的数据格式";
// return null;
//}
//var jstGoodsObj = prodObj["pddData"];
//var jstPddPropMapLst = JsonHelper.DeserializeJsonToList<PDDPropRefPidNameMap>(JsonHelper.SerializeObject(prodObj["pddPropMap"]));
////{"goodsId":"2016474712785620994","warehouseGoodsId":"C7108311198A4217B022DCA87B6A5863","spuCode":"3783056947394249077","skus":[{"skuId":"2016692758292738050","warehouseSkuId":"C742B3FCB0364448AF92332F8F6005A6","skuCode":"ZH-XP-YWQYW-010"},{"skuId":"2016692758317903874","warehouseSkuId":"703E87F1B7774C14923821A57EEE6EFA","skuCode":"ZH-XP-YWQYW-010-111"},{"skuId":"2016692758338875394","warehouseSkuId":"895EDCDF6ECC4FAE8AD4DB9503719002","skuCode":"ZH-XP-YWQYW-010-222"}]}
//var jstSecretCodeLst = JsonHelper.JObjectParse(dbProd.sku_secret_json.TrimStart('[').TrimEnd(']'));
WXGetEditProductInfoLite wxEditProdInfo = JsonHelper.DeserializeJsonToObject<WXGetEditProductInfoLite>(dbProd.product_json);
PDDProductInfo prodInfo = new PDDProductInfo()
{
sale_count = dbProd.sale_count.ParseToString(),
sale_count_text = dbProd.sale_count_text,
};
prodInfo.chance_id = null;
prodInfo.chance_refere = null;
prodInfo.chance_tab = null;
prodInfo.decoration = null;
// 商品详情
prodInfo.detail = new PDDProductDetailInfo();
prodInfo.detail.allergy_refund = 0;
prodInfo.detail.allowed_region = new List<object>();
//prodInfo.detail.appeal_status = null;
//prodInfo.detail.app_id = null;
//prodInfo.detail.app_name = null;
//prodInfo.detail.bad_claim_text = null;
prodInfo.detail.bad_fruit_claim = 0;
//prodInfo.detail.business_source_type = null;
prodInfo.detail.can_appeal = null;
prodInfo.detail.card_verification_list = null;
prodInfo.detail.cats = new List<string>();
prodInfo.detail.cat_id = dbProd.cat_id.ParseToInt();
prodInfo.detail.cat_ids = new List<int?>();
//微信商品的类目直接输入,上传的时候不用。
foreach (var category in wxEditProdInfo.product.info.category)
{
prodInfo.detail.cat_ids.Add(category.catId.ParseToInt());
}
prodInfo.detail.check_status = 9;
//prodInfo.detail.check_type = null;
//prodInfo.detail.client_id = null;
prodInfo.detail.commit_deleted = 0;
//prodInfo.detail.commit_extension = null;
//prodInfo.detail.community_group_buying = null;
prodInfo.detail.cost_template_id = 0;
//prodInfo.detail.country = null;
prodInfo.detail.country_id = 0;
//prodInfo.detail.created_at = null;
//prodInfo.detail.creator_name = null;
prodInfo.detail.customizable = 0;
prodInfo.detail.customs = "";
prodInfo.detail.damage_claim = 0;
prodInfo.detail.delivery_one_day = 0;
//prodInfo.detail.delivery_type = null;
//prodInfo.detail.elec_goods_attributes = null;
prodInfo.detail.estimate_quantity = 0;
prodInfo.detail.event_type = 0;
prodInfo.detail.extend_warranty_dto = new extend_warranty_dto_item() { extend_warranty = 0 };
//prodInfo.detail.fabric = null;
//prodInfo.detail.fabric_content = null;
prodInfo.detail.galleries = new List<gallery_item>();
foreach (var imgItem in wxEditProdInfo.product.info.headImg)
{
prodInfo.detail.galleries.Add(new gallery_item()
{
url = imgItem,
type = 1,
});
}
foreach (var imgItem in wxEditProdInfo.product.info.detail.detailImg)
{
prodInfo.detail.galleries.Add(new gallery_item()
{
url = imgItem,
type = 2,
});
}
prodInfo.detail.gold_price_template_id = null;
prodInfo.detail.gold_price_type = null;
prodInfo.detail.goods_certificate = null;
prodInfo.detail.goods_commit_check = new List<object>();
prodInfo.detail.goods_desc = wxEditProdInfo.product.info.title;
prodInfo.detail.goods_id = wxEditProdInfo.product.productKey.productId.ParseToLong();
prodInfo.detail.goods_name = wxEditProdInfo.product.info.title;
prodInfo.detail.goods_name_prefix = "";
prodInfo.detail.goods_pattern = 8;
prodInfo.detail.goods_property_list = null;
prodInfo.detail.goods_sn = null;
prodInfo.detail.goods_srv_templates = new List<object>();
prodInfo.detail.goods_trade_attr = null;
prodInfo.detail.goods_travel_attr = null;
prodInfo.detail.goods_type = 1;
prodInfo.detail.groups = new group_item() { single_price = 0, group_price = 0, customer_num = 2, buy_limit = 999999, order_limit = 999999 };
// 复用前面已经填写过的
prodInfo.detail.hd_thumb_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
// 编辑id,随意填写
prodInfo.detail.id = 0;
// 复用前面已经填写过的
prodInfo.detail.image_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
prodInfo.detail.instruction_vo = new instruction_vo_item() { template_status = -1 };
prodInfo.detail.invoice_mode = null;
prodInfo.detail.invoice_mode_sub_type = null;
prodInfo.detail.invoice_status = 0;
prodInfo.detail.is_all_weight_same = true;
prodInfo.detail.is_app = 0;
prodInfo.detail.is_bangdan = 0;
prodInfo.detail.is_card_secret = false;
prodInfo.detail.is_certificate_provide = 0;
prodInfo.detail.is_customized = 0;
prodInfo.detail.is_customs = 0;
prodInfo.detail.is_deposit = false;
prodInfo.detail.is_draft = false;
prodInfo.detail.is_folt = 0;
prodInfo.detail.is_general_trade = 0;
prodInfo.detail.is_gold_price_matched = null;
prodInfo.detail.is_goods_copy = null;
prodInfo.detail.is_goods_decoration = 1;
prodInfo.detail.is_group_pre_sale = 0;
prodInfo.detail.is_only_for_remote_area = false;
prodInfo.detail.is_pre_sale = 0;
prodInfo.detail.is_refundable = 1;
prodInfo.detail.is_refundable_fifteen_day = 0;
prodInfo.detail.is_shop = 1;
prodInfo.detail.is_size_change_casually = 0;
prodInfo.detail.is_sku_pre_sale = 0;
prodInfo.detail.is_sku_shipment = 0;
prodInfo.detail.is_small_group = null;
prodInfo.detail.is_spring_festival_open_tag = false;
prodInfo.detail.is_two_num_group = false;
prodInfo.detail.is_warranty_one_year = 0;
prodInfo.detail.is_wms = 0;
prodInfo.detail.is_wp_service = 0;
prodInfo.detail.lack_of_weight_claim = 0;
prodInfo.detail.last_commit_check_status = 2;
prodInfo.detail.list_desc = new List<object>();
prodInfo.detail.local_service_id_list = null;
prodInfo.detail.mai_jia_zi_ti = null;
// 聚水潭没有
prodInfo.detail.mall_id = 0;
// 聚水潭没有
prodInfo.detail.mall_info = new mall_info_item();
// 聚水潭没有此处随意填
prodInfo.detail.market_price = 0;
// 聚水潭没有此处随意填
prodInfo.detail.max_group_price = 0;
// 聚水潭没有此处随意填
prodInfo.detail.min_group_price = 0;
prodInfo.detail.must_check_type = 0;
prodInfo.detail.name_prefix = "";
prodInfo.detail.origin_country_id = 0;
prodInfo.detail.origin_country_name = "";
// 货号
prodInfo.detail.out_goods_sn = wxEditProdInfo.product.info.spuCode;
//if (prodInfo.detail.out_goods_sn.IsNullOrEmpty())
//{
// convertRst = "货号不存在";
// return null;
//}
prodInfo.detail.out_source_goods_id = null;
prodInfo.detail.out_source_type = null;
prodInfo.detail.oversea_goods = null;
prodInfo.detail.oversea_type = 0;
prodInfo.detail.owner = "主账号";
prodInfo.detail.owner_name = "";
prodInfo.detail.paper_length = null;
prodInfo.detail.paper_net_weight = null;
prodInfo.detail.paper_plies_num = null;
prodInfo.detail.paper_width = null;
prodInfo.detail.pre_sale_time = 0;
prodInfo.detail.privacy_delivery = 0;
prodInfo.detail.processing_charges = null;
prodInfo.detail.processing_charges_type = null;
prodInfo.detail.promised_delivery_seconds = null;
prodInfo.detail.purchase_info_supply = 0;
prodInfo.detail.qualification_id_list = new List<object>();
prodInfo.detail.quan_guo_lian_bao = 0;
prodInfo.detail.quick_refund = 0;
prodInfo.detail.reason = null;
prodInfo.detail.region_limit = 1;
prodInfo.detail.reject_reason = null;
prodInfo.detail.reject_status = null;
prodInfo.detail.same_city_template_id = 0;
prodInfo.detail.schedule_sale = new schedule_sale_item() { sale_type = 0 };
prodInfo.detail.second_hand = 0;
prodInfo.detail.sf_markup_template_sn = null;
prodInfo.detail.shang_men_an_zhuang = null;
// 聚水潭没有
prodInfo.detail.share_desc = "";
prodInfo.detail.shipment_limit_second = 172800;
prodInfo.detail.shoes_template_id = null;
prodInfo.detail.shop_group_id = null;
prodInfo.detail.shop_group_name = null;
prodInfo.detail.show_activity_price = false;
prodInfo.detail.size_parent_spec_id = null;
prodInfo.detail.size_spec_id = null;
//if (jstGoodsObj["skuInfo"].IsJTokenNullOrEmpty() || jstGoodsObj["skuInfo"]["goodsSkuDetail"].IsJTokenNullOrEmpty())
//{
// convertRst = "缺少sku信息";
// return null;
//}
prodInfo.detail.sku = new List<sku_item>();
//foreach (JObject jSku in jstGoodsObj["skuInfo"]["goodsSkuDetail"])
foreach (var wxEditSkuInfo in wxEditProdInfo.product.productSkus)
{
sku_item skuInfo = new sku_item()
{
id = 0,
// 聚水潭为string,散列取数值
sku_id = wxEditSkuInfo.skuKey.skuId.ParseToLong(),
sku_sn = null,
carnival_price = 0,
init_quantity = 0,
is_onsale = 1,
limit_quantity = 999999,
multi_price = wxEditSkuInfo.productSkuInfo.salePrice.ParseToInt(),
multi_price_in_yuan = null,
price = wxEditSkuInfo.productSkuInfo.salePrice.ParseToInt() + 100,
price_in_yuan = null,
quantity = wxEditSkuInfo.productSkuInfo.realStockInfo.stockNum,
reserve_quantity = 0,
weight = 0,
thumb_url = wxEditSkuInfo.productSkuInfo.thumbImg,
thumb_url_file_id = null,
thumb_url_status = null,
thumb_url_is_deleted = null,
quantity_delta = 0,
spec = new List<spec_item>(),
// sku货号下面单独设置
out_sku_sn = "",
batch_id = null,
priority = 1,
ware_id = 0,
ware_biz_type = null,
advice_price = null,
length = null,
oversea_sku = null,
cspu_id = null,
child_skus = null,
ref_sku_commit_id = 0,
start_time = null,
end_time = null,
sku_srv_templates = null,
calendar_rule_id = null,
hot_live_group = null,
pre_sale_time = 0,
out_source_sku_id = null,
dd_grocery_sku_params = null,
sku_extended_attribute_dtos = null,
sku_basic_property_dtos = null,
spec_note_map = null,
delivery_schedule_dtos = null,
shipment_limit_second_list = null,
sku69_code = "",
};
// 供应商价加价10%(最低1元)赚取差价
int addPrice = (skuInfo.multi_price * 0.1).ParseToInt();
if (addPrice < 100)
addPrice = 100;
skuInfo.multi_price += addPrice;
skuInfo.price += addPrice;
foreach (var wxSpec in wxEditSkuInfo.productSkuInfo.saleParam)
{
skuInfo.spec.Add(new spec_item()
{
parent_id = wxSpec.categorys[0].catId.ParseToLong(),
parent_name = wxSpec.categorys[0].name,
spec_id = wxSpec.categorys[1].catId.ParseToLong(),
spec_name = wxSpec.categorys[1].name,
});
}
skuInfo.out_sku_sn = wxEditSkuInfo.productSkuInfo.skuCode;
prodInfo.detail.sku.Add(skuInfo);
}
prodInfo.detail.sku_type = null;
prodInfo.detail.song_huo_an_zhuang = null;
prodInfo.detail.song_huo_ru_hu = null;
prodInfo.detail.source = 0;
prodInfo.detail.spu_id = null;
prodInfo.detail.spu_version = null;
prodInfo.detail.submit_time = 0;
prodInfo.detail.thawed_refund = 0;
prodInfo.detail.third_type = 0;
// 复用前面填过的主图
prodInfo.detail.thumb_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
prodInfo.detail.tiny_name = "";
prodInfo.detail.transport_type_list = null;
prodInfo.detail.two_pieces_discount = 99;
prodInfo.detail.user_source = 1;
prodInfo.detail.warehouse = "";
prodInfo.detail.warm_tips = "";
prodInfo.detail.zhi_huan_bu_xiu = 0;
prodInfo.size = null;
prodInfo.material1 = null;
prodInfo.material3 = null;
prodInfo.property = new PDDProductPropertyInfo();
prodInfo.property.sku_properties = new object();
prodInfo.property.goods_properties = new List<goods_propertie_item>();
if (1 == 1)
{
foreach (var wxProp in wxEditProdInfo.product.info.param)
{
string name = wxProp.categorys.FirstOrDefault()?.name;
goods_propertie_item propInfo = new goods_propertie_item();
prodInfo.property.goods_properties.Add(propInfo);
propInfo.name = name;
propInfo.ref_pid = null;
//propInfo.wx_input_type = wxProp.categorys.FirstOrDefault()?.catInfo.inputType;
propInfo.values = new List<value_item>();
foreach (var wxPropVal in wxProp.categorys)
{
if (wxProp.categorys.IndexOf(wxPropVal) == 0)
continue;
propInfo.values.Add(new value_item()
{
value = wxPropVal.name.ParseToString(),
raw_value = wxPropVal.name.ParseToString(),
vid = null,
unit = ""
});
}
}
}
else
{
//outGoodsParam.productAttrs.Add(new osProductAttrParam { attrKey = "品牌", attrValue = "无品牌" });
}
// 主图 复用前面的
dbProd.main_img = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1).url;
dbProd.product_json = JsonHelper.SerializeObject(prodInfo);
return prodInfo;
}
catch (Exception ex)
{
convertRst = "转换错误 " + ex.Message;
return null;
}
}
}
}
+9
View File
@@ -240,6 +240,12 @@
<Compile Include="WXForms\ProductForms\WXProductForm.Designer.cs">
<DependentUpon>WXProductForm.cs</DependentUpon>
</Compile>
<Compile Include="WXForms\ShopForms\WXShopMultiLoginForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="WXForms\ShopForms\WXShopMultiLoginForm.Designer.cs">
<DependentUpon>WXShopMultiLoginForm.cs</DependentUpon>
</Compile>
<Compile Include="WXForms\ShopForms\WxShopStatisticsForm.cs">
<SubType>Form</SubType>
</Compile>
@@ -1157,6 +1163,9 @@
<EmbeddedResource Include="WXForms\ProductForms\WXProductForm.resx">
<DependentUpon>WXProductForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WXForms\ShopForms\WXShopMultiLoginForm.resx">
<DependentUpon>WXShopMultiLoginForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WXForms\ShopForms\WxShopStatisticsForm.resx">
<DependentUpon>WxShopStatisticsForm.cs</DependentUpon>
</EmbeddedResource>
@@ -337,7 +337,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms
// cmbSpec1
//
this.cmbSpec1.DefaultText = "全部";
this.cmbSpec1.DropDownHeight = 1;
this.cmbSpec1.DropDownWidth = 1;
this.cmbSpec1.FormattingEnabled = true;
this.cmbSpec1.IntegralHeight = false;
this.cmbSpec1.Location = new System.Drawing.Point(3, 3);
this.cmbSpec1.Name = "cmbSpec1";
this.cmbSpec1.Size = new System.Drawing.Size(121, 25);
@@ -347,7 +350,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms
// cmbSpec2
//
this.cmbSpec2.DefaultText = "全部";
this.cmbSpec2.DropDownHeight = 1;
this.cmbSpec2.DropDownWidth = 1;
this.cmbSpec2.FormattingEnabled = true;
this.cmbSpec2.IntegralHeight = false;
this.cmbSpec2.Location = new System.Drawing.Point(132, 3);
this.cmbSpec2.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
this.cmbSpec2.Name = "cmbSpec2";
@@ -687,7 +693,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
private DevComponents.DotNetBar.PanelEx btnCancel;
private DevComponents.DotNetBar.PanelEx btnSaveSkuLst;
private UserComponent.DataGridViewEx dgvDbProduct;
private System.Windows.Forms.PictureBox pbLoading;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;
@@ -721,9 +726,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private System.Windows.Forms.DataGridViewImageColumn colSkuImg;
private System.Windows.Forms.DataGridViewLinkColumn colEditSkuImg;
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuSn;
private DevComponents.DotNetBar.PanelEx btnRestoreAll;
private System.Windows.Forms.Panel pnlCef;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Panel panel5;
public DevComponents.DotNetBar.PanelEx btnSaveSkuLst;
public DevComponents.DotNetBar.PanelEx btnRestoreAll;
}
}
@@ -65,13 +65,13 @@
//
this.panel2.BackColor = System.Drawing.Color.White;
this.panel2.Controls.Add(this.btnOk);
this.panel2.Controls.Add(this.pnlSkuOption);
this.panel2.Controls.Add(this.label7);
this.panel2.Controls.Add(this.txtFissionWords);
this.panel2.Controls.Add(this.txtEndWords);
this.panel2.Controls.Add(this.label6);
this.panel2.Controls.Add(this.txtHeadWords);
this.panel2.Controls.Add(this.label5);
this.panel2.Controls.Add(this.btnEditDetail);
this.panel2.Controls.Add(this.txtProductName);
this.panel2.Controls.Add(this.txtSkcId);
this.panel2.Controls.Add(this.txtSpuId);
@@ -83,6 +83,7 @@
this.panel2.Controls.Add(this.pictureBox1);
this.panel2.Controls.Add(this.label8);
this.panel2.Controls.Add(this.txtNotes);
this.panel2.Controls.Add(this.pnlSkuOption);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(1, 33);
this.panel2.Name = "panel2";
@@ -113,7 +114,6 @@
this.pnlSkuOption.Controls.Add(this.pictureBox2);
this.pnlSkuOption.Controls.Add(this.buttonEx1);
this.pnlSkuOption.Controls.Add(this.btnSelect);
this.pnlSkuOption.Controls.Add(this.btnEditDetail);
this.pnlSkuOption.Location = new System.Drawing.Point(10, 483);
this.pnlSkuOption.Name = "pnlSkuOption";
this.pnlSkuOption.Size = new System.Drawing.Size(417, 147);
@@ -134,7 +134,7 @@
this.btnBookImg.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnBookImg.DisabledBackColor = System.Drawing.Color.Empty;
this.btnBookImg.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnBookImg.Location = new System.Drawing.Point(332, 37);
this.btnBookImg.Location = new System.Drawing.Point(332, 5);
this.btnBookImg.Name = "btnBookImg";
this.btnBookImg.Size = new System.Drawing.Size(85, 26);
this.btnBookImg.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -202,7 +202,7 @@
this.btnEditDetail.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnEditDetail.DisabledBackColor = System.Drawing.Color.Empty;
this.btnEditDetail.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnEditDetail.Location = new System.Drawing.Point(332, 5);
this.btnEditDetail.Location = new System.Drawing.Point(308, 616);
this.btnEditDetail.Name = "btnEditDetail";
this.btnEditDetail.Size = new System.Drawing.Size(85, 26);
this.btnEditDetail.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -16,6 +16,7 @@ using TemuKJD.ToolForms;
using Newtonsoft.Json.Linq;
using System.IO;
using Work.BLL.Tools;
using TemuKJD.BLL;
namespace TemuKJD.PDDForms.ProductSelectForms
{
@@ -59,6 +60,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.pictureBox2.ImageLocation = dbProd.sku_img_replace_url;
else if (!string.IsNullOrWhiteSpace(dbProd.sku_img_replace_base64))
this.pictureBox2.Image = Base64ChangeImgUrl.Base64ToImage(dbProd.sku_img_replace_base64); // Convert.FromBase64String(dbProd.sku_img_replace_base64);
if (dbProd.product_get_type_text == "厂商直采" || dbProd.product_get_type_text == "微信店采")
btnEditDetail.Text = "查看商品SKU";
}
}
@@ -237,7 +241,37 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private void btnEditDetail_Click(object sender, EventArgs e)
{
bool canEdit = true;
//{"goodsId":"2032007952082477057","warehouseGoodsId":"171C2881E8C6491CA65728683483EDE9","spuCode":"987651321321","skus":[{"skuId":"2032007952837451777","warehouseSkuId":"6B710CE261B240C38B5245006F3622A3","skuCode":"20190311002"},{"skuId":"2032007953839890434","warehouseSkuId":"2FA14AAB600541CAA72DDE7697D8D27A","skuCode":"201607090622"}]}
if (dbProd.product_get_type_text == "厂商直采")
{
canEdit = false;
string convertRst = "";
var ob = new PDDProdFormConverter().JstPddProdToPddConvert(out convertRst, dbProd);
if (!string.IsNullOrEmpty(convertRst))
{
BaseMsgForm.ShowError("商品结构获取失败 " + convertRst);
return;
}
}
if (dbProd.product_get_type_text == "微信店采")
{
canEdit = false;
string convertRst = "";
var ob = new PDDProdFormConverter().WXProdToPddConvert(out convertRst, dbProd);
if (!string.IsNullOrEmpty(convertRst))
{
BaseMsgForm.ShowError("商品结构获取失败");
return;
}
}
PDDDBProdEditDetailForm editDetailForm = new PDDDBProdEditDetailForm(this.dbProd);
if (!canEdit)
{
editDetailForm.btnRestoreAll.Visible = false;
editDetailForm.btnSaveSkuLst.Visible = false;
}
editDetailForm.ShowDialog();
}
@@ -223,7 +223,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
// dtpEnd
//
this.dtpEnd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.dtpEnd.Location = new System.Drawing.Point(1042, 80);
this.dtpEnd.Location = new System.Drawing.Point(1040, 87);
this.dtpEnd.Name = "dtpEnd";
this.dtpEnd.Size = new System.Drawing.Size(110, 23);
this.dtpEnd.TabIndex = 979;
@@ -231,7 +231,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
// dtpStart
//
this.dtpStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.dtpStart.Location = new System.Drawing.Point(926, 80);
this.dtpStart.Location = new System.Drawing.Point(926, 87);
this.dtpStart.Name = "dtpStart";
this.dtpStart.Size = new System.Drawing.Size(110, 23);
this.dtpStart.TabIndex = 978;
@@ -240,7 +240,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
//
this.ucCheckBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.ucCheckBox1.AutoSize = true;
this.ucCheckBox1.Location = new System.Drawing.Point(856, 82);
this.ucCheckBox1.Location = new System.Drawing.Point(856, 89);
this.ucCheckBox1.Name = "ucCheckBox1";
this.ucCheckBox1.Size = new System.Drawing.Size(75, 21);
this.ucCheckBox1.TabIndex = 977;
@@ -254,9 +254,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnUpdateReturnServerData.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnUpdateReturnServerData.DisabledBackColor = System.Drawing.Color.Empty;
this.btnUpdateReturnServerData.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnUpdateReturnServerData.Location = new System.Drawing.Point(759, 79);
this.btnUpdateReturnServerData.Location = new System.Drawing.Point(1040, 62);
this.btnUpdateReturnServerData.Name = "btnUpdateReturnServerData";
this.btnUpdateReturnServerData.Size = new System.Drawing.Size(85, 25);
this.btnUpdateReturnServerData.Size = new System.Drawing.Size(110, 25);
this.btnUpdateReturnServerData.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnUpdateReturnServerData.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnUpdateReturnServerData.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
@@ -269,7 +269,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnUpdateReturnServerData.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnUpdateReturnServerData.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnUpdateReturnServerData.TabIndex = 943;
this.btnUpdateReturnServerData.Text = "数据拉回";
this.btnUpdateReturnServerData.Text = "加密数据拉回";
this.btnUpdateReturnServerData.Click += new System.EventHandler(this.updateReturnServerData_Click);
//
// btnReturnSecretData
@@ -279,9 +279,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnReturnSecretData.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnReturnSecretData.DisabledBackColor = System.Drawing.Color.Empty;
this.btnReturnSecretData.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReturnSecretData.Location = new System.Drawing.Point(671, 79);
this.btnReturnSecretData.Location = new System.Drawing.Point(926, 62);
this.btnReturnSecretData.Name = "btnReturnSecretData";
this.btnReturnSecretData.Size = new System.Drawing.Size(86, 25);
this.btnReturnSecretData.Size = new System.Drawing.Size(110, 25);
this.btnReturnSecretData.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnReturnSecretData.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnReturnSecretData.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
@@ -303,7 +303,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnStopStop.CanvasColor = System.Drawing.SystemColors.Control;
this.btnStopStop.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnStopStop.DisabledBackColor = System.Drawing.Color.Empty;
this.btnStopStop.Location = new System.Drawing.Point(672, 13);
this.btnStopStop.Location = new System.Drawing.Point(672, 23);
this.btnStopStop.Name = "btnStopStop";
this.btnStopStop.Size = new System.Drawing.Size(76, 25);
this.btnStopStop.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -329,7 +329,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnPull.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnPull.DisabledBackColor = System.Drawing.Color.Empty;
this.btnPull.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnPull.Location = new System.Drawing.Point(810, 47);
this.btnPull.Location = new System.Drawing.Point(810, 60);
this.btnPull.Name = "btnPull";
this.btnPull.Size = new System.Drawing.Size(34, 25);
this.btnPull.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -354,7 +354,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnPushToOutServer.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnPushToOutServer.DisabledBackColor = System.Drawing.Color.Empty;
this.btnPushToOutServer.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnPushToOutServer.Location = new System.Drawing.Point(750, 47);
this.btnPushToOutServer.Location = new System.Drawing.Point(750, 60);
this.btnPushToOutServer.Name = "btnPushToOutServer";
this.btnPushToOutServer.Size = new System.Drawing.Size(58, 25);
this.btnPushToOutServer.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -379,7 +379,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnGetProdWxCate.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnGetProdWxCate.DisabledBackColor = System.Drawing.Color.Empty;
this.btnGetProdWxCate.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnGetProdWxCate.Location = new System.Drawing.Point(750, 13);
this.btnGetProdWxCate.Location = new System.Drawing.Point(750, 23);
this.btnGetProdWxCate.Name = "btnGetProdWxCate";
this.btnGetProdWxCate.Size = new System.Drawing.Size(94, 25);
this.btnGetProdWxCate.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -406,7 +406,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
"安全商品",
"违规商品",
"未校验"});
this.cmbSetWxSafe.Location = new System.Drawing.Point(865, 41);
this.cmbSetWxSafe.Location = new System.Drawing.Point(865, 33);
this.cmbSetWxSafe.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
this.cmbSetWxSafe.Name = "cmbSetWxSafe";
this.cmbSetWxSafe.Size = new System.Drawing.Size(85, 25);
@@ -419,7 +419,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnSetWxSafe.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSetWxSafe.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSetWxSafe.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSetWxSafe.Location = new System.Drawing.Point(952, 41);
this.btnSetWxSafe.Location = new System.Drawing.Point(952, 33);
this.btnSetWxSafe.Name = "btnSetWxSafe";
this.btnSetWxSafe.Size = new System.Drawing.Size(84, 25);
this.btnSetWxSafe.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -444,7 +444,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnImport.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnImport.DisabledBackColor = System.Drawing.Color.Empty;
this.btnImport.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnImport.Location = new System.Drawing.Point(1058, 41);
this.btnImport.Location = new System.Drawing.Point(1058, 33);
this.btnImport.Name = "btnImport";
this.btnImport.Size = new System.Drawing.Size(84, 25);
this.btnImport.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -724,6 +724,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.cmbSourceType.Items.AddRange(new object[] {
"",
"厂商直采",
"微信店采",
"母店采集",
"机会商品",
"以图搜品",
@@ -1075,7 +1076,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnDelSelect.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnDelSelect.DisabledBackColor = System.Drawing.Color.Empty;
this.btnDelSelect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnDelSelect.Location = new System.Drawing.Point(1058, 7);
this.btnDelSelect.Location = new System.Drawing.Point(1058, 5);
this.btnDelSelect.Name = "btnDelSelect";
this.btnDelSelect.Size = new System.Drawing.Size(84, 25);
this.btnDelSelect.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -1097,7 +1098,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
//
this.cmbGroup.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.cmbGroup.FormattingEnabled = true;
this.cmbGroup.Location = new System.Drawing.Point(865, 7);
this.cmbGroup.Location = new System.Drawing.Point(865, 5);
this.cmbGroup.Name = "cmbGroup";
this.cmbGroup.Size = new System.Drawing.Size(85, 25);
this.cmbGroup.TabIndex = 640;
@@ -1109,7 +1110,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnSetGroup.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSetGroup.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSetGroup.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSetGroup.Location = new System.Drawing.Point(952, 7);
this.btnSetGroup.Location = new System.Drawing.Point(952, 5);
this.btnSetGroup.Name = "btnSetGroup";
this.btnSetGroup.Size = new System.Drawing.Size(84, 25);
this.btnSetGroup.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -1144,7 +1145,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.chkPullAfterPush.AutoSize = true;
this.chkPullAfterPush.Checked = true;
this.chkPullAfterPush.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkPullAfterPush.Location = new System.Drawing.Point(672, 49);
this.chkPullAfterPush.Location = new System.Drawing.Point(672, 62);
this.chkPullAfterPush.Name = "chkPullAfterPush";
this.chkPullAfterPush.Size = new System.Drawing.Size(87, 21);
this.chkPullAfterPush.TabIndex = 874;
@@ -164,7 +164,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
// 获取Bitmap的Graphics对象
using (Graphics g = Graphics.FromImage(defaultBitmap))
{
// 清除整个Bitmap为蓝色
// 清除整个Bitmap为白色
g.Clear(Color.White);
}
foreach (var prod in lstTemuDbProduct)
@@ -1232,7 +1232,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
var dbProd = PDDDBProdEditForm.GetPddProductDetail(prod.id.ParseToString());
var prodObj = JsonHelper.JObjectParse(dbProd.product_json);
List<string> mainImgLst3 = new List<string>();
if (!prodObj["jstProd"].IsJTokenNullOrEmpty())
if (dbProd.product_get_type_text == "厂商直采" && !prodObj["jstProd"].IsJTokenNullOrEmpty())
{
var jstProd = JsonHelper.DeserializeJsonToObject<JSTListProductInfo>(JsonHelper.SerializeObject(prodObj["jstProd"]));
mainImgLst3 = jstProd.itemMainImage.Take(3).ToList();
@@ -1345,7 +1345,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
}
}
if (dbProd.wx_cat_1 != null && dbProd.wx_cat_leaf != null)
if (dbProd.product_get_type_text == "厂商直采" && dbProd.wx_cat_1 != null && dbProd.wx_cat_leaf != null)
{
var row = dgvDbProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["col_spu_id"].Value.ParseToString() == dbProd.spu_id);
@@ -1511,9 +1511,14 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
// 原批量拉取,已废弃 "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get?page_size=10";
// 按spuCode(ext_code)拉取
url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get";
// 作废
//url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get";
//string body = "{\"spuCodes\":[\"" + dbProd.ext_code + "\"]}";
string body = "{\"spuCodes\":[\"" + dbProd.spu_id + "\"]}";
// warehouseGoodsId和spuCode一起拉回
url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/getNew";
string body = "{\"goodsApiNewItems\":[{\"warehouseGoodsId\":\"" + dbProd.spu_id + "\",\"spuCode\":\"" + dbProd.ext_code + "\"}]}";
var getRst = WXHttpResponseBLL.e57PostResponse(url, body, "");
if (getRst.Contains("\"code\":0"))
{
@@ -1521,8 +1526,14 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
var url3 = BaseClass.BuildPDDObjString("product/mdy_product");
string skuSecretJson = JsonHelper.SerializeObject(JsonHelper.JObjectParse(getRst)["data"].FirstOrDefault());
var prodDataObj = JsonHelper.JObjectParse(rst)["data"];
OutServerGoodsParam outGoodsParam = JsonHelper.DeserializeJsonToObject<OutServerGoodsParam>(JsonHelper.SerializeObject(prodDataObj));
if (outGoodsParam.skus.Any(s => !skuSecretJson.Contains(s.warehouseSkuId)))
continue;
if (skuSecretJson.Contains("warehouseGoodsId") && skuSecretJson.Contains("goodsId") &&
skuSecretJson.Contains("warehouseSkuId") && skuSecretJson.Contains("skuId"))
skuSecretJson.Contains("warehouseSkuId") && skuSecretJson.Contains("skuId") && skuSecretJson.Contains("skuCode"))
{
var data3 = Work.UserLogin.GetSignaturex() +
"&spu_id=" + dbProd.spu_id +
@@ -1628,16 +1639,16 @@ namespace TemuKJD.PDDForms.ProductSelectForms
}));
// 旧的批量拉取
var spuCodes = string.Join("\",\"", dbProdTmp20Lst.Select(p => p.ext_code));
var spu_id = string.Join("\",\"", dbProdTmp20Lst.Select(p => p.spu_id));
//var spuCodes = string.Join("\",\"", dbProdTmp20Lst.Select(p => p.ext_code));
//var spu_id = string.Join("\",\"", dbProdTmp20Lst.Select(p => p.spu_id));
// 原批量拉取,已废弃 "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get?page_size=10";
// 按spuCode(ext_code)拉取
string url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get?" + Randomx.GetId(100, 999);
string body = "{\"spuCodes\":[\"" + spuCodes + "\"]}";
//string url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get?" + Randomx.GetId(100, 999);
//string body = "{\"spuCodes\":[\"" + spuCodes + "\"]}";
// 使用新的批量拉取
body = "{\"goodsApiNewItems\":[";
url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/getNew";
string body = "{\"goodsApiNewItems\":[";
string url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/getNew";
foreach (var dbProd in dbProdTmp20Lst)
{
body += "{\"warehouseGoodsId\":\"" + dbProd.spu_id + "\",\"spuCode\":\"" + dbProd.ext_code + "\"},";
@@ -1657,11 +1668,18 @@ namespace TemuKJD.PDDForms.ProductSelectForms
var skuSecretJson = JsonHelper.SerializeObject(secretObj);
var warehouseGoodsId = BaseRegex.GetStringJson(ref skuSecretJson, "warehouseGoodsId");
var prod = dbProdTmp20Lst.FirstOrDefault(p => p.spu_id == warehouseGoodsId);
var dbProd = PDDDBProdEditForm.GetPddProductDetail(prod.id.ParseToString());
var rst = new WxProdFormConverter().JstPddConvertToWxOutServer(dbProd);
var prodDataObj = JsonHelper.JObjectParse(rst)["data"];
OutServerGoodsParam outGoodsParam = JsonHelper.DeserializeJsonToObject<OutServerGoodsParam>(JsonHelper.SerializeObject(prodDataObj));
if (prod != null)
{
if (outGoodsParam.skus.Any(s => !skuSecretJson.Contains(s.warehouseSkuId)))
continue;
var url2 = BaseClass.BuildPDDObjString("product/mdy_product");
if (skuSecretJson.Contains("warehouseGoodsId") && skuSecretJson.Contains("goodsId") &&
skuSecretJson.Contains("warehouseSkuId") && skuSecretJson.Contains("skuId"))
skuSecretJson.Contains("warehouseSkuId") && skuSecretJson.Contains("skuId") && skuSecretJson.Contains("skuCode"))
{
var data2 = Work.UserLogin.GetSignaturex() +
"&spu_id=" + prod.spu_id +
@@ -1672,7 +1690,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
html = GetHtml.PostUtf8(url2, data2);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
prod.send_to_out_server = 2;
}
else
{
+12 -2
View File
@@ -101,16 +101,26 @@ namespace TemuKJD.UserComponent
for (int index = 0; index < checkedListBox.Items.Count; index++)
{
var item = checkedListBox.Items[index];
if (this.Text == "全部" || this.Text.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).Contains(item.ParseToString()))
if (this.Text == "全部" || this.Text.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).Contains(item.ParseToString()))
checkedListBox.SetItemChecked(index, true);
else
checkedListBox.SetItemChecked(index, false);
}
// 计算宽度
int maxItemWidth = 0;
for (int index = 0; index < checkedListBox.Items.Count; index++)
{
var wth = TextRenderer.MeasureText(checkedListBox.Items[index].ToString(), checkedListBox.Font).Width + 20;
if (wth > maxItemWidth)
maxItemWidth = wth;
}
checkedListBox.SendToBack();
checkedListBox.Visible = true;
// 确定弹出列表框的大小和位置
checkedListBox.Size = new Size(Math.Max(80, this.Width), Math.Min(300, checkedListBox.PreferredHeight));
//checkedListBox.Size = new Size(Math.Max(80, this.Width), Math.Min(300, checkedListBox.PreferredHeight));
checkedListBox.Size = new Size(Math.Max(this.Width, maxItemWidth), Math.Min(300, checkedListBox.PreferredHeight));
Point relativeLocation = this.GetRelativePosition();
if (parentForm.Height - relativeLocation.Y >= this.Height + checkedListBox.Size.Height + 20)
relativeLocation = new Point(relativeLocation.X, relativeLocation.Y + this.Height);
+14 -2
View File
@@ -80,6 +80,7 @@ namespace TemuKJD.WXForms.AdminForms
this.colSaLevel = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSaLevelName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colAuthority = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colAddShop = new System.Windows.Forms.DataGridViewLinkColumn();
this.editColumn = new System.Windows.Forms.DataGridViewLinkColumn();
this.deleteColumn = new System.Windows.Forms.DataGridViewLinkColumn();
((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).BeginInit();
@@ -532,6 +533,7 @@ namespace TemuKJD.WXForms.AdminForms
this.colSaLevel,
this.colSaLevelName,
this.colAuthority,
this.colAddShop,
this.editColumn,
this.deleteColumn});
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
@@ -647,9 +649,18 @@ namespace TemuKJD.WXForms.AdminForms
this.colAuthority.Name = "colAuthority";
this.colAuthority.ReadOnly = true;
//
// colAddShop
//
this.colAddShop.FillWeight = 60F;
this.colAddShop.HeaderText = "添加店铺";
this.colAddShop.Name = "colAddShop";
this.colAddShop.ReadOnly = true;
this.colAddShop.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colAddShop.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// editColumn
//
this.editColumn.FillWeight = 50F;
this.editColumn.FillWeight = 40F;
this.editColumn.HeaderText = "编辑";
this.editColumn.Name = "editColumn";
this.editColumn.ReadOnly = true;
@@ -658,7 +669,7 @@ namespace TemuKJD.WXForms.AdminForms
//
// deleteColumn
//
this.deleteColumn.FillWeight = 50F;
this.deleteColumn.FillWeight = 40F;
this.deleteColumn.HeaderText = "删除";
this.deleteColumn.Name = "deleteColumn";
this.deleteColumn.ReadOnly = true;
@@ -736,6 +747,7 @@ namespace TemuKJD.WXForms.AdminForms
private System.Windows.Forms.DataGridViewTextBoxColumn colSaLevel;
private System.Windows.Forms.DataGridViewTextBoxColumn colSaLevelName;
private System.Windows.Forms.DataGridViewTextBoxColumn colAuthority;
private System.Windows.Forms.DataGridViewLinkColumn colAddShop;
private System.Windows.Forms.DataGridViewLinkColumn editColumn;
private System.Windows.Forms.DataGridViewLinkColumn deleteColumn;
}
@@ -145,6 +145,7 @@ namespace TemuKJD.WXForms.AdminForms
user.company_name = BaseRegex.GetStringJson(ref oStr, "company_name");
user.sa_level = BaseRegex.GetIntJson(ref oStr, "sa_level");
user.authority = BaseRegex.GetStringJson(ref oStr, "authority");
user.group_id = BaseRegex.GetStringJson(ref oStr, "group_id");
var parent_user_name = BaseRegex.GetStringJson(ref oStr, "parent_user_name");
AllUsers.Add(user);
@@ -160,6 +161,7 @@ namespace TemuKJD.WXForms.AdminForms
user.sa_level,
user.sa_level_name,
user.authority,
user.group_id == "3" ? "添加店铺" : "",
"编辑",
"删除");
}
@@ -224,6 +226,14 @@ namespace TemuKJD.WXForms.AdminForms
Delete(uid);
}
}
if (columname == "添加店铺")
{
WXAdminShopListForm shopListForm = new WXAdminShopListForm();
shopListForm.UserAccountInfo = AllUsers.FirstOrDefault(u => u.user_name == mobile);
shopListForm.lblAddToAccount.Visible = true;
shopListForm.btnAddToAccount.Visible = true;
shopListForm.ShowDialog();
}
}
public void Delete(string uid)
@@ -150,6 +150,9 @@
<metadata name="colAuthority.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colAddShop.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="editColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
+208 -115
View File
@@ -34,21 +34,22 @@ namespace TemuKJD.WXForms.AdminForms
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.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WXAdminShopListForm));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.panel5 = new System.Windows.Forms.Panel();
this.pbtnLoginSelect = new DevComponents.DotNetBar.PanelEx();
this.chkShowDelete = new System.Windows.Forms.CheckBox();
this.btnLoginSelect = new TemuKJD.UserControls.ButtonEx();
this.btnCheck = new TemuKJD.UserControls.ButtonEx();
this.pbtnCheck = new DevComponents.DotNetBar.PanelEx();
this.panel4 = new System.Windows.Forms.Panel();
this.btnExportShopErp = new DevComponents.DotNetBar.PanelEx();
this.btnSetSubSa = new TemuKJD.UserControls.ButtonEx();
this.lblAddToAccount = new System.Windows.Forms.Label();
this.btnAddToAccount = new DevComponents.DotNetBar.PanelEx();
this.btnSearch = new DevComponents.DotNetBar.PanelEx();
this.txtUserName = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.txtLoginName = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.pnlEmpty = new DevComponents.DotNetBar.PanelEx();
this.btnSearch = new TemuKJD.UserControls.ButtonEx();
this.txtNotes = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.txtShopName = new System.Windows.Forms.TextBox();
@@ -56,6 +57,8 @@ namespace TemuKJD.WXForms.AdminForms
this.txtShopId = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.btnSetSubSa = new DevComponents.DotNetBar.PanelEx();
this.btnExportShopErp = new DevComponents.DotNetBar.PanelEx();
this.pbLoading = new System.Windows.Forms.PictureBox();
this.pnlAddProdRemaining = new System.Windows.Forms.Panel();
this.lblShopId = new System.Windows.Forms.Label();
@@ -98,6 +101,7 @@ namespace TemuKJD.WXForms.AdminForms
this.chkAutoDrag = new System.Windows.Forms.CheckBox();
this.ucSplitPage1 = new TemuKJD.UserControls.UcSplitPage();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.panel3 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -114,6 +118,7 @@ namespace TemuKJD.WXForms.AdminForms
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numAddRemaining)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).BeginInit();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
@@ -133,7 +138,7 @@ namespace TemuKJD.WXForms.AdminForms
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Panel2.Margin = new System.Windows.Forms.Padding(4);
this.splitContainer1.Size = new System.Drawing.Size(1273, 610);
this.splitContainer1.Size = new System.Drawing.Size(1271, 576);
this.splitContainer1.SplitterDistance = 84;
this.splitContainer1.TabIndex = 34;
//
@@ -149,25 +154,49 @@ namespace TemuKJD.WXForms.AdminForms
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 1;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(1273, 84);
this.tableLayoutPanel2.Size = new System.Drawing.Size(1271, 84);
this.tableLayoutPanel2.TabIndex = 37;
//
// panel5
//
this.panel5.Controls.Add(this.pbtnLoginSelect);
this.panel5.Controls.Add(this.chkShowDelete);
this.panel5.Controls.Add(this.btnLoginSelect);
this.panel5.Controls.Add(this.btnCheck);
this.panel5.Location = new System.Drawing.Point(1010, 3);
this.panel5.Controls.Add(this.pbtnCheck);
this.panel5.Location = new System.Drawing.Point(1008, 3);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(260, 40);
this.panel5.TabIndex = 1;
//
// pbtnLoginSelect
//
this.pbtnLoginSelect.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.pbtnLoginSelect.Cursor = System.Windows.Forms.Cursors.Hand;
this.pbtnLoginSelect.DisabledBackColor = System.Drawing.Color.Empty;
this.pbtnLoginSelect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.pbtnLoginSelect.Location = new System.Drawing.Point(192, 12);
this.pbtnLoginSelect.Name = "pbtnLoginSelect";
this.pbtnLoginSelect.Size = new System.Drawing.Size(66, 23);
this.pbtnLoginSelect.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pbtnLoginSelect.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.pbtnLoginSelect.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.pbtnLoginSelect.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.pbtnLoginSelect.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.pbtnLoginSelect.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.pbtnLoginSelect.Style.ForeColor.Color = System.Drawing.Color.White;
this.pbtnLoginSelect.Style.GradientAngle = 90;
this.pbtnLoginSelect.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.pbtnLoginSelect.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.pbtnLoginSelect.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.pbtnLoginSelect.TabIndex = 467;
this.pbtnLoginSelect.Text = "检测选中";
this.pbtnLoginSelect.Click += new System.EventHandler(this.btnLoginSelect_Click);
//
// chkShowDelete
//
this.chkShowDelete.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.chkShowDelete.AutoSize = true;
this.chkShowDelete.BackColor = System.Drawing.Color.White;
this.chkShowDelete.Location = new System.Drawing.Point(29, 12);
this.chkShowDelete.Location = new System.Drawing.Point(29, 13);
this.chkShowDelete.Name = "chkShowDelete";
this.chkShowDelete.Size = new System.Drawing.Size(87, 21);
this.chkShowDelete.TabIndex = 374;
@@ -175,48 +204,40 @@ namespace TemuKJD.WXForms.AdminForms
this.chkShowDelete.UseVisualStyleBackColor = false;
this.chkShowDelete.CheckedChanged += new System.EventHandler(this.chkShowDelete_CheckedChanged);
//
// btnLoginSelect
// pbtnCheck
//
this.btnLoginSelect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnLoginSelect.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnLoginSelect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnLoginSelect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLoginSelect.ForeColor = System.Drawing.Color.White;
this.btnLoginSelect.Location = new System.Drawing.Point(193, 9);
this.btnLoginSelect.Margin = new System.Windows.Forms.Padding(2);
this.btnLoginSelect.Name = "btnLoginSelect";
this.btnLoginSelect.Size = new System.Drawing.Size(66, 26);
this.btnLoginSelect.TabIndex = 373;
this.btnLoginSelect.Text = "登录选中";
this.btnLoginSelect.UseVisualStyleBackColor = false;
this.btnLoginSelect.Click += new System.EventHandler(this.btnLoginSelect_Click);
//
// btnCheck
//
this.btnCheck.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCheck.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCheck.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCheck.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCheck.ForeColor = System.Drawing.Color.White;
this.btnCheck.Location = new System.Drawing.Point(123, 9);
this.btnCheck.Margin = new System.Windows.Forms.Padding(2);
this.btnCheck.Name = "btnCheck";
this.btnCheck.Size = new System.Drawing.Size(66, 26);
this.btnCheck.TabIndex = 372;
this.btnCheck.Text = "检测选中";
this.btnCheck.UseVisualStyleBackColor = false;
this.btnCheck.Click += new System.EventHandler(this.btnCheck_Click);
this.pbtnCheck.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.pbtnCheck.Cursor = System.Windows.Forms.Cursors.Hand;
this.pbtnCheck.DisabledBackColor = System.Drawing.Color.Empty;
this.pbtnCheck.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.pbtnCheck.Location = new System.Drawing.Point(122, 12);
this.pbtnCheck.Name = "pbtnCheck";
this.pbtnCheck.Size = new System.Drawing.Size(66, 23);
this.pbtnCheck.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pbtnCheck.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.pbtnCheck.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.pbtnCheck.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.pbtnCheck.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.pbtnCheck.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.pbtnCheck.Style.ForeColor.Color = System.Drawing.Color.White;
this.pbtnCheck.Style.GradientAngle = 90;
this.pbtnCheck.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.pbtnCheck.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.pbtnCheck.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.pbtnCheck.TabIndex = 463;
this.pbtnCheck.Text = "检测选中";
this.pbtnCheck.Click += new System.EventHandler(this.btnCheck_Click);
//
// panel4
//
this.panel4.Controls.Add(this.btnExportShopErp);
this.panel4.Controls.Add(this.btnSetSubSa);
this.panel4.Controls.Add(this.lblAddToAccount);
this.panel4.Controls.Add(this.btnAddToAccount);
this.panel4.Controls.Add(this.btnSearch);
this.panel4.Controls.Add(this.txtUserName);
this.panel4.Controls.Add(this.label5);
this.panel4.Controls.Add(this.txtLoginName);
this.panel4.Controls.Add(this.label1);
this.panel4.Controls.Add(this.pnlEmpty);
this.panel4.Controls.Add(this.btnSearch);
this.panel4.Controls.Add(this.txtNotes);
this.panel4.Controls.Add(this.label4);
this.panel4.Controls.Add(this.txtShopName);
@@ -226,50 +247,67 @@ namespace TemuKJD.WXForms.AdminForms
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel4.Location = new System.Drawing.Point(3, 3);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(1001, 78);
this.panel4.Size = new System.Drawing.Size(999, 78);
this.panel4.TabIndex = 0;
//
// btnExportShopErp
// lblAddToAccount
//
this.btnExportShopErp.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnExportShopErp.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnExportShopErp.DisabledBackColor = System.Drawing.Color.Empty;
this.btnExportShopErp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnExportShopErp.Location = new System.Drawing.Point(613, 10);
this.btnExportShopErp.Name = "btnExportShopErp";
this.btnExportShopErp.Size = new System.Drawing.Size(140, 25);
this.btnExportShopErp.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportShopErp.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportShopErp.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportShopErp.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnExportShopErp.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnExportShopErp.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnExportShopErp.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnExportShopErp.Style.GradientAngle = 90;
this.btnExportShopErp.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportShopErp.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportShopErp.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportShopErp.TabIndex = 435;
this.btnExportShopErp.Text = "导出店铺到后台系统";
this.btnExportShopErp.Visible = false;
this.btnExportShopErp.Click += new System.EventHandler(this.btnExportShopErp_Click);
this.lblAddToAccount.AutoSize = true;
this.lblAddToAccount.Location = new System.Drawing.Point(604, 44);
this.lblAddToAccount.Name = "lblAddToAccount";
this.lblAddToAccount.Size = new System.Drawing.Size(92, 17);
this.lblAddToAccount.TabIndex = 456;
this.lblAddToAccount.Text = "当前指定账号:";
this.lblAddToAccount.Visible = false;
//
// btnSetSubSa
// btnAddToAccount
//
this.btnSetSubSa.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnSetSubSa.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSetSubSa.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSetSubSa.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSetSubSa.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSetSubSa.ForeColor = System.Drawing.Color.White;
this.btnSetSubSa.Location = new System.Drawing.Point(895, 9);
this.btnSetSubSa.Margin = new System.Windows.Forms.Padding(2);
this.btnSetSubSa.Name = "btnSetSubSa";
this.btnSetSubSa.Size = new System.Drawing.Size(93, 26);
this.btnSetSubSa.TabIndex = 424;
this.btnSetSubSa.Text = "分配二级超管";
this.btnSetSubSa.UseVisualStyleBackColor = false;
this.btnSetSubSa.Click += new System.EventHandler(this.btnSetSubSa_Click);
this.btnAddToAccount.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnAddToAccount.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAddToAccount.DisabledBackColor = System.Drawing.Color.Empty;
this.btnAddToAccount.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAddToAccount.Location = new System.Drawing.Point(607, 12);
this.btnAddToAccount.Name = "btnAddToAccount";
this.btnAddToAccount.Size = new System.Drawing.Size(163, 23);
this.btnAddToAccount.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnAddToAccount.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnAddToAccount.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnAddToAccount.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnAddToAccount.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnAddToAccount.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnAddToAccount.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnAddToAccount.Style.GradientAngle = 90;
this.btnAddToAccount.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnAddToAccount.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnAddToAccount.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnAddToAccount.TabIndex = 453;
this.btnAddToAccount.Text = "选中店铺添加到指定账号";
this.btnAddToAccount.Visible = false;
this.btnAddToAccount.Click += new System.EventHandler(this.btnAddToAccount_Click);
//
// btnSearch
//
this.btnSearch.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSearch.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSearch.Location = new System.Drawing.Point(441, 12);
this.btnSearch.Name = "btnSearch";
this.btnSearch.Size = new System.Drawing.Size(56, 23);
this.btnSearch.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnSearch.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSearch.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSearch.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnSearch.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnSearch.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnSearch.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnSearch.Style.GradientAngle = 90;
this.btnSearch.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnSearch.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSearch.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSearch.TabIndex = 449;
this.btnSearch.Text = "搜索";
this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
//
// txtUserName
//
@@ -308,9 +346,9 @@ namespace TemuKJD.WXForms.AdminForms
this.pnlEmpty.CanvasColor = System.Drawing.SystemColors.Control;
this.pnlEmpty.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.pnlEmpty.DisabledBackColor = System.Drawing.Color.Empty;
this.pnlEmpty.Location = new System.Drawing.Point(502, 10);
this.pnlEmpty.Location = new System.Drawing.Point(502, 12);
this.pnlEmpty.Name = "pnlEmpty";
this.pnlEmpty.Size = new System.Drawing.Size(56, 26);
this.pnlEmpty.Size = new System.Drawing.Size(56, 23);
this.pnlEmpty.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pnlEmpty.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.pnlEmpty.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
@@ -327,22 +365,6 @@ namespace TemuKJD.WXForms.AdminForms
this.pnlEmpty.Text = "清空条件";
this.pnlEmpty.Click += new System.EventHandler(this.pnlEmpty_Click);
//
// btnSearch
//
this.btnSearch.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSearch.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSearch.ForeColor = System.Drawing.Color.White;
this.btnSearch.Location = new System.Drawing.Point(441, 10);
this.btnSearch.Margin = new System.Windows.Forms.Padding(2);
this.btnSearch.Name = "btnSearch";
this.btnSearch.Size = new System.Drawing.Size(56, 26);
this.btnSearch.TabIndex = 372;
this.btnSearch.Text = "搜索";
this.btnSearch.UseVisualStyleBackColor = false;
this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
//
// txtNotes
//
this.txtNotes.Location = new System.Drawing.Point(208, 41);
@@ -403,6 +425,8 @@ namespace TemuKJD.WXForms.AdminForms
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.BackColor = System.Drawing.Color.White;
this.splitContainer2.Panel1.Controls.Add(this.btnSetSubSa);
this.splitContainer2.Panel1.Controls.Add(this.btnExportShopErp);
this.splitContainer2.Panel1.Controls.Add(this.pbLoading);
this.splitContainer2.Panel1.Controls.Add(this.pnlAddProdRemaining);
this.splitContainer2.Panel1.Controls.Add(this.dgvShop);
@@ -413,15 +437,65 @@ namespace TemuKJD.WXForms.AdminForms
this.splitContainer2.Panel2.Controls.Add(this.chkAutoDrag);
this.splitContainer2.Panel2.Controls.Add(this.ucSplitPage1);
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
this.splitContainer2.Size = new System.Drawing.Size(1273, 522);
this.splitContainer2.SplitterDistance = 493;
this.splitContainer2.Size = new System.Drawing.Size(1271, 488);
this.splitContainer2.SplitterDistance = 459;
this.splitContainer2.TabIndex = 0;
//
// btnSetSubSa
//
this.btnSetSubSa.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnSetSubSa.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSetSubSa.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSetSubSa.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSetSubSa.Location = new System.Drawing.Point(192, 51);
this.btnSetSubSa.Name = "btnSetSubSa";
this.btnSetSubSa.Size = new System.Drawing.Size(93, 23);
this.btnSetSubSa.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnSetSubSa.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSetSubSa.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSetSubSa.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnSetSubSa.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnSetSubSa.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnSetSubSa.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnSetSubSa.Style.GradientAngle = 90;
this.btnSetSubSa.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnSetSubSa.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSetSubSa.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnSetSubSa.TabIndex = 453;
this.btnSetSubSa.Text = "分配二级超管";
this.btnSetSubSa.Visible = false;
this.btnSetSubSa.Click += new System.EventHandler(this.btnSetSubSa_Click);
//
// btnExportShopErp
//
this.btnExportShopErp.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnExportShopErp.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnExportShopErp.DisabledBackColor = System.Drawing.Color.Empty;
this.btnExportShopErp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnExportShopErp.Location = new System.Drawing.Point(30, 51);
this.btnExportShopErp.Name = "btnExportShopErp";
this.btnExportShopErp.Size = new System.Drawing.Size(140, 23);
this.btnExportShopErp.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportShopErp.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportShopErp.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportShopErp.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnExportShopErp.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnExportShopErp.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnExportShopErp.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnExportShopErp.Style.GradientAngle = 90;
this.btnExportShopErp.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportShopErp.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportShopErp.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportShopErp.TabIndex = 435;
this.btnExportShopErp.Text = "导出店铺到后台系统";
this.btnExportShopErp.Visible = false;
this.btnExportShopErp.Click += new System.EventHandler(this.btnExportShopErp_Click);
//
// pbLoading
//
this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue;
this.pbLoading.Location = new System.Drawing.Point(611, 221);
this.pbLoading.Location = new System.Drawing.Point(610, 204);
this.pbLoading.Name = "pbLoading";
this.pbLoading.Size = new System.Drawing.Size(50, 50);
this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
@@ -435,7 +509,7 @@ namespace TemuKJD.WXForms.AdminForms
this.pnlAddProdRemaining.Controls.Add(this.lblShopId);
this.pnlAddProdRemaining.Controls.Add(this.panel2);
this.pnlAddProdRemaining.Controls.Add(this.lblAddProdRemaining);
this.pnlAddProdRemaining.Location = new System.Drawing.Point(399, 51);
this.pnlAddProdRemaining.Location = new System.Drawing.Point(398, 34);
this.pnlAddProdRemaining.Name = "pnlAddProdRemaining";
this.pnlAddProdRemaining.Size = new System.Drawing.Size(474, 146);
this.pnlAddProdRemaining.TabIndex = 7;
@@ -587,7 +661,7 @@ namespace TemuKJD.WXForms.AdminForms
this.dgvShop.ReadOnly = true;
this.dgvShop.RowTemplate.Height = 23;
this.dgvShop.ShowCellErrors = false;
this.dgvShop.Size = new System.Drawing.Size(1265, 493);
this.dgvShop.Size = new System.Drawing.Size(1263, 459);
this.dgvShop.TabIndex = 5;
this.dgvShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick);
this.dgvShop.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgvShop_CellMouseDown);
@@ -652,6 +726,7 @@ namespace TemuKJD.WXForms.AdminForms
this.colProductRemaining.HeaderText = "选品限额";
this.colProductRemaining.Name = "colProductRemaining";
this.colProductRemaining.ReadOnly = true;
this.colProductRemaining.Visible = false;
//
// colPlus
//
@@ -661,6 +736,7 @@ namespace TemuKJD.WXForms.AdminForms
this.colPlus.HeaderText = "+";
this.colPlus.Name = "colPlus";
this.colPlus.ReadOnly = true;
this.colPlus.Visible = false;
//
// colCookie
//
@@ -848,7 +924,7 @@ namespace TemuKJD.WXForms.AdminForms
this.chkAutoDrag.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.chkAutoDrag.AutoSize = true;
this.chkAutoDrag.BackColor = System.Drawing.Color.White;
this.chkAutoDrag.Location = new System.Drawing.Point(597, 0);
this.chkAutoDrag.Location = new System.Drawing.Point(595, 0);
this.chkAutoDrag.Name = "chkAutoDrag";
this.chkAutoDrag.Size = new System.Drawing.Size(159, 21);
this.chkAutoDrag.TabIndex = 3;
@@ -861,7 +937,7 @@ namespace TemuKJD.WXForms.AdminForms
this.ucSplitPage1.CurrentPage = 1;
this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right;
this.ucSplitPage1.IsShowPageSize = true;
this.ucSplitPage1.Location = new System.Drawing.Point(884, 0);
this.ucSplitPage1.Location = new System.Drawing.Point(882, 0);
this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0);
this.ucSplitPage1.Name = "ucSplitPage1";
this.ucSplitPage1.PageSize = 50;
@@ -877,19 +953,32 @@ namespace TemuKJD.WXForms.AdminForms
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(1273, 25);
this.statusBar.Size = new System.Drawing.Size(1271, 25);
this.statusBar.TabIndex = 1;
//
// panel3
//
this.panel3.BackColor = System.Drawing.Color.White;
this.panel3.Controls.Add(this.splitContainer1);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(1, 33);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(1271, 576);
this.panel3.TabIndex = 35;
//
// WXAdminShopListForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1273, 610);
this.Controls.Add(this.splitContainer1);
this.Controls.Add(this.panel3);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "WXAdminShopListForm";
this.Text = "AdminShopForm";
this.TitleText = "AdminShopForm";
this.Load += new System.EventHandler(this.AdminShopForm_Load);
this.VisibleChanged += new System.EventHandler(this.AdminShopForm_VisibleChanged);
this.Controls.SetChildIndex(this.panel3, 0);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
@@ -910,6 +999,7 @@ namespace TemuKJD.WXForms.AdminForms
this.panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.numAddRemaining)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).EndInit();
this.panel3.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -919,10 +1009,7 @@ namespace TemuKJD.WXForms.AdminForms
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Panel panel5;
private UserControls.ButtonEx btnLoginSelect;
private UserControls.ButtonEx btnCheck;
private System.Windows.Forms.Panel panel4;
private UserControls.ButtonEx btnSearch;
private System.Windows.Forms.TextBox txtNotes;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtShopName;
@@ -941,7 +1028,6 @@ namespace TemuKJD.WXForms.AdminForms
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.CheckBox chkShowDelete;
private UserControls.ButtonEx btnSetSubSa;
private System.Windows.Forms.Panel pnlAddProdRemaining;
private System.Windows.Forms.Label lblAddProdRemaining;
private System.Windows.Forms.NumericUpDown numAddRemaining;
@@ -949,6 +1035,11 @@ namespace TemuKJD.WXForms.AdminForms
private DevComponents.DotNetBar.PanelEx btnRemainOK;
private DevComponents.DotNetBar.PanelEx pnlCancel;
private System.Windows.Forms.Label lblShopId;
private DevComponents.DotNetBar.PanelEx btnExportShopErp;
private DevComponents.DotNetBar.PanelEx btnSearch;
private DevComponents.DotNetBar.PanelEx btnSetSubSa;
private DevComponents.DotNetBar.PanelEx pbtnLoginSelect;
private DevComponents.DotNetBar.PanelEx pbtnCheck;
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn colLoginName;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
@@ -979,6 +1070,8 @@ namespace TemuKJD.WXForms.AdminForms
private System.Windows.Forms.DataGridViewTextBoxColumn colSubSa;
private System.Windows.Forms.DataGridViewLinkColumn colEdit;
private System.Windows.Forms.DataGridViewLinkColumn colDelete;
private DevComponents.DotNetBar.PanelEx btnExportShopErp;
private System.Windows.Forms.Panel panel3;
public System.Windows.Forms.Label lblAddToAccount;
public DevComponents.DotNetBar.PanelEx btnAddToAccount;
}
}
@@ -24,9 +24,10 @@ using TemuKJD.WXForms.ShopForms;
namespace TemuKJD.WXForms.AdminForms
{
public partial class WXAdminShopListForm : BaseForm
public partial class WXAdminShopListForm : BaseForms.BaseGeneralForm
{
static WXAdminShopListForm inst = null;
public SubAccountInfo UserAccountInfo { get; set; } = null;
public static WXAdminShopListForm Instance
{
get { if (inst == null) inst = new WXAdminShopListForm(); return inst; }
@@ -61,6 +62,10 @@ namespace TemuKJD.WXForms.AdminForms
dgvShop.Columns["colSubSa"].Visible = false;
btnSetSubSa.Visible = false;
}
if (UserAccountInfo != null)
{
this.lblAddToAccount.Text = "当前指定账号:" + UserAccountInfo.user_name + "(" + UserAccountInfo.nick_name + ")";
}
}
bool firstLoad = true;
@@ -176,7 +181,7 @@ namespace TemuKJD.WXForms.AdminForms
private void btnLoginSelect_Click(object sender, EventArgs e)
{
IsOperate = true;
if (this.btnLoginSelect.Text == "登录选中")
if (this.pbtnLoginSelect.Text == "登录选中")
{
List<string> shopLoginNameList = GetCheckedList();
if (!shopLoginNameList.Any())
@@ -429,7 +434,7 @@ namespace TemuKJD.WXForms.AdminForms
private void btnCheck_Click(object sender, EventArgs e)
{
if (this.btnCheck.Text == "检测选中")
if (this.pbtnCheck.Text == "检测选中")
{
List<string> shopLoginNameList = GetCheckedList();
if (!shopLoginNameList.Any())
@@ -656,5 +661,73 @@ namespace TemuKJD.WXForms.AdminForms
// //Thread.Sleep(500);
//}
}
private void btnAddToAccount_Click(object sender, EventArgs e)
{
if (UserAccountInfo != null)
{
List<string> shopLoginNameList = GetCheckedList().Distinct().ToList();
if (!shopLoginNameList.Any())
{
BaseMsgForm.ShowError("请选择需要添加的店铺");
IsOperate = false;
return;
}
this.pbLoading.Visible = true;
this.statusBar.lblTaskStatus.Text = "正在添加...";
this.statusBar.pgbTaskProgress.Maximum = shopLoginNameList.Count;
this.statusBar.UpdateProgressBar(0);
Task.Run(() =>
{
int successCount = 0;
int failCount = 0;
int totalCount = shopLoginNameList.Count;
foreach (var shopLoginName in shopLoginNameList)
{
var shop = lstAdminShopInfo.FirstOrDefault(s => s.LoginName == shopLoginName);
if (shop == null)
continue;
var url = BaseClass.BuildObjString("shop/admin_add_shop");
var data = UserLogin.GetSignaturex() +
"&shop_user_name=" + UserAccountInfo.user_name +
"&login_name=" + shop.LoginName +
"&login_pass=" + shop.Password +
"&cookie=" + shop.Cookies +
"&cookie2=" + shop.Cookies2 +
"&shop_id=" + shop.ShopId +
"&shop_account=" + shop.ShopAccount;
var html = "";
for (int i = 0; i < 3 && !html.Contains("\"code\":200"); i++)
{
html = GetHtml.PostUtf8(url, data);
if (html.Contains("已存在"))
break;
}
if (html.Contains("\"code\":200") || html.Contains("已存在"))
successCount++;
else
failCount++;
Thread.Sleep(100);
Invoke(new Action(() =>
{
this.statusBar.UpdateProgressBar(statusBar.pgbTaskProgress.Value + 1);
this.statusBar.UpdateProgressBarStatus("正在添加... 总计:" + totalCount + " 成功:" + successCount + " 失败:" + failCount);
}));
}
Invoke(new Action(() =>
{
this.pbLoading.Visible = false;
BaseMsgForm.ShowInfo("添加完成!");
this.statusBar.FinishProgressBar("添加完成 总计:" + totalCount + " 成功:" + successCount + " 失败:" + failCount);
}));
});
}
}
}
}
@@ -207,4 +207,182 @@
<metadata name="colDelete.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQAAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMQ
AAAAAAAAAAAAAAAAAAAAAAAAABM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZkzEAAAAAAAAAAAAAAAAAAAAAADOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZMwAAAAAAAAAAAAAAAAAAABOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZkzAAAAAAAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmTEAAAAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAAAA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAADmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAA5mZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAADmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAGZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAJmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZAAAAAA
OZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmT
AAAAAZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmRAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZkwAAAZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZkwAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZMAAJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZEAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkwCZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkRmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZOZmZOZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmP+JmZmZmZmZj///////
///4OZmZj/eZmZmZmZmZmPg5OZmZmZuI//iIuZmZmZmZmZmZmZM5mZmZmZmZmZmZmb//+JmZmZmZmP//
//////////OZmP//uZmZmZmZmY//+ZmZOZf///////h5k5mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZ
mZ/////////////4mZ///4mZmZmZmZP///uZmZmP////////+JmZmZmZmZmZkzmZmZmZmZmZmZmZj//4
mZmZmZmf////////////+Jmf//+JmZmZmZmb///4mZmY//////////+JmZmZmZmZmZM5mZmZmZmZmZmZ
mY//+JmZmZmZn/////////////mZmP//iZmZmZmZk///+5mZj/////iP////+JmZmZmZmZmTOZmZmZmZ
mZmZmZmP//iZmZmZmZ////iIiIiIiIiZOZj//4mZmZmZmZP///uZmf////eZmT////+ZmZmZmZmZkzmZ
mZmZmZmZmZmZj//4mZmZmZmf//+JmZmZmZmZk5mY//+JmZmZmZmT///7mZj///+ZmZmZj///uZmZmZmZ
mZM5mZmZmZmZmZmZmY//+JmZmZmZn///iZmZmZmZmZmZmP//iZmZN5k5k///+5mY///zk5mZOT///4mZ
mZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ///4mZmZmZmZmZmZj//4mZmP/5k5P///uZmP//+ZmZmZmY
//+JmZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf///4iIiIiIg5mZmY//+JOb//+JmT///7mZj//4mZ
mZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///////////85mZmP//iZn///+Jk///+5mf
//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ////////////+ZmZj//4mY////85v/
//uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf////////////mZmY//+Jv///
//+Z///7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///////////+JmZmP//
if//////if//+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ///////////4mZ
mZj//4j///////j///uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf//+JMzMz
MzOZOZmY//////+D///////7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///
iZmZmZmZmZmZmP//////mY//////+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZ
mZ///4mZmZmZmZmZmZj/////+5mf//////uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZMzM5j//4
kzMzmZmf//+JMzMzMzM5mZmY/////4mTk//////7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmP//
/////////4mZn////////////4mZmP////+ZmZmP////+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZ
mY/////////////4mZ/////////////7mZj////7mZmZn/////uZmP//iZmZmZmY///5mZmZmZmZkzmZ
mZmZmZn//////////////5mf////////////+Jmf////iZmZk5P////4mZ///4mZmZmZmP//+ZmZmZmZ
mZM5mZmZmZmZj/////////////iZn/////////////iZmP///5mZmZmZj///+5mY//+JmZmZmZj//4mZ
mZmZmZmTOZmZmZmZmZ/////////////zmZP///////////+JmZP///uTmZmZmZj//4mZm///mZmZmZmZ
//85mZmZmZmZkzmZmZmZmZOZiIiIiIiIiIiImTmZOIiIiIiIiIiImTmZOIi5mZmZmZOZiIuZmZk4iZOZ
mZmZOZiDmZmZmZmZmZM5mZmZmZmZOZmZmZmZmZmZmZOZmZmZmZmZmZmZmZOZmZmZmZmZmZmZOZmZmZmZ
mZk5mZmZmZOZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmTuIiIiIs5mZmZmZmZ
mTu4i7mZmZmZmZmZmTMzmZOZmZkzOZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmTmbj///////+HmT
mZmZk4j/////iJmZmZk4iP////iZOZmZj/mZOZOIiIiIiIiIiDmZmZmZmZmZkzmZmZmZmZmZj///////
///4mZk5k4///4iI///4OZOY////////iZOZmb/5mZmP///////////4mZmZmZmZmZM5mZmZmZmZn///
//////////mZmY///5mZmZP///iZmP////////+ZOZk/iZmY/////////////4mZmZmZmZmTOZmZmZmZ
mZ/////////////5mZ////+JmZmY////iZl/////////+ZmZP4mZP//////////////7mZmZmZmZkzmZ
mZmZmZmb////////////uZP/j///+HM3j/////+ZmYj///////iZmT+JmY//////////////+JmZmZmZ
mZM5mZmZmZmZmY//////////+JmT+Jv///////////iPmTmZOI/4mP//uTk/iZmP//////////////iZ
mZmZmZmTOZmZmZmZmZmf//////////mZmZmZ///////////5mZmZmZmTOZk///mZP4mZj///////////
///4mZmZmZmZkzmZmZmZmZmTmP////////+JOZmZOY//////////iZmZmZmZmZk5mf/4mT+JmY//////
////////+JmZmZmZmZM5mZmZmZmZmZn/////////mZmZmZk//////////zmZmZmZmZmZmTmP/zm/iZmP
//////////////iZmZmZmZmTOZmZmZmZmZk5v///////85OZmZkzmP////////iZmZmZmZmZmZmZn//4
/4mZj/////hzN4/////4mZmZmZmZkzmZmZmZmZmZmZj//////4mZmTmY/4j////////4mZmZmZmZmZmZ
mZj///+JmY////+JmZmY////+JmZmZmZmZM5mZmZmZmZmZmZ//////+ZmZmZj////////////4mZmZmZ
mZmZmZmb////+ZmP///4mZu5mY////iZmZmZmZmTOZmZmZmZmZmZOb/////4k5mZmP/////////////7
mZmZmZmZmZmZk/////OZv///+ZmP+Jmf///4mZmZmZmZkzmZmZmZmZmZmZmf////+ZmZmZj////////4
eI//+JmZmZmZmZmZmZP////4mb///4mY//+JmP//+5mZmZmZmZM5mZmZmZmZmZk5v/////uTmZmb////
///4mZmX//iZmZmZmZmZmZmZ////+Jmf//95n///+Zj///OZmZmZmZmTOZmZmZmZmZmZmf//////mZmZ
mY//////+ZOZmZiJmZmZmZmZmZmZmY////+ZmP//+I////iP//+JmZmZmZmZkzmZmZmZmZmZmZj/////
/4mZmZmf/////5k5mZOZmTmZmZmZmZmZmZmP///4mZP/////////////OZmZmZmZmZM5mZmZmZmZmZk/
///////zmZmZm/////iZmZmZmZmZmZmZmZmZmZmZj///85mZj///////////+JmZmZmZmZmTOZmZmZmZ
mZmZv///////+5mZmZmP///5mZmZmZmZmZmZmZmZmZmZmZ///3mZmZj//////////4mZmZmZmZmZkzmZ
mZmZmZmZmb///4j///uZmZmZmP//mTmZmZmZmZmZmZmZmZmZmZmY/4OZmZmZeP///////4eZmZmZmZmZ
mZM5mZmZmZmZmZmY/4OZOP+JmZmZmZmIiZOZmZmZmZmZmZmZmZmZmZmZmYiZmZmZmZk4iIiIiIOZmZmZ
mZmZmZmTOZmZmZmZmZmZmTOZmZkzmZmZmZmZmZk5mZmZmZmZmZmZmZmZmZmZmZmZk5mZmZmZmZmZmZmZ
mZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmTGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZkwmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZkwA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZMACZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAABmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTAAADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAJmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmRAAAAA5mZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAACZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAAAAAGZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAOZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkwAAAAAA
AAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTAA
AAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZMAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZkwAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmTAAAAAAAAAAAAAAGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZEAAAAAAAAAAAAAAAA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAAAAAAAATmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZMQAAAAAAAAAAAAAAAAAAABOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZMQAAAAAAAAAAAAAAAAAAAAAAAzmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTMAAAAAAAAAAAAAAAAAAAAAAAAAAAEzMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxAAAAAAAAAAAAAAD////////////////////////4AAAA
AAAAAAAAAB//////wAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAAP////wAAAAAAAAAAAAAAAA////w
AAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAA
Af//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAA
AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAA
AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA
AAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAA+AA
AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAA
AA/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAA
AAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAP//+AAAAAA
AAAAAAAAAAAH///4AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAD////8AAAAAAAAAAAAAAAD/////
wAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAH////////////////////////w==
</value>
</data>
</root>
@@ -490,14 +490,14 @@ namespace TemuKJD.WXForms.AdminForms
for ( i= 0; i < productLst.length; i++) {
var addBtnItem = productLst[i]; //.parentElement.parentElement.parentElement;
var pos = addBtnItem.innerHTML.indexOf('ID:')
if (addBtnItem.innerHTML.indexOf('回采') < 0 && pos >= 0) {
if (addBtnItem.innerHTML.indexOf('采集') < 0 && pos >= 0) {
var sSpuId = addBtnItem.innerHTML.substring(pos + 3);
sSpuId = sSpuId.substring(0, sSpuId.indexOf('<span')).trim();
//addBtnItem.innerHTML += ""<input type=\""button\"" style=\""display:inline; width:60px; margin-left:10px; margin-top:0px; cursor:pointer; border:1px solid\"" value =\""回采商品\"" onclick=\""shopObj.getProduct('"" + sSpuId + ""','" + this.shop.ShopId + @"')\"">""
//addBtnItem.innerHTML += ""<input type=\""button\"" style=\""display:inline; width:60px; margin-left:10px; margin-top:0px; cursor:pointer; border:1px solid\"" value =\""回采商品\"" onclick=\""alert('"" + sSpuId + ""')\"">""
//addBtnItem.innerHTML = addBtnItem.innerHTML.replace(""分享 </a></div>"", ""分享 </a></div><input type=\""button\"" style=\""display:inline; width:60px; margin-left:10px; margin-top:0px; cursor:pointer; border:1px solid\"" value =\""回采商品\"" onclick=\""shopObj.getProduct('"" + sSpuId + ""','" + this.shop.ShopId + @"')\"">"");
var newDiv = document.createElement(""div"");
newDiv.innerHTML = ""<a style=\""display:inline; padding:2px 5px; cursor:pointer; border:1px solid\"" onclick=\""shopObj.getProduct('"" + sSpuId + ""','" + this.shop.ShopId + @"')\"">回采<\a>"";
newDiv.innerHTML = ""<a style=\""display:inline; padding:2px 5px; cursor:pointer; border:1px solid\"" onclick=\""shopObj.getProduct('"" + sSpuId + ""','" + this.shop.ShopId + @"', true)\"">回采<\a><a style=\""display:inline; margin-left:2px; padding:2px 5px; cursor:pointer; border:1px solid\"" onclick=\""shopObj.getProduct('"" + sSpuId + ""','" + this.shop.ShopId + @"', false)\"">采集<\a>"";
addBtnItem.lastChild.appendChild(newDiv);
}
}
@@ -676,7 +676,7 @@ namespace TemuKJD.WXForms.AdminForms
string notes = textBox1.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()))
{
@@ -684,7 +684,7 @@ namespace TemuKJD.WXForms.AdminForms
row.Cells["colSelect"].Value = false;
continue;
}
if (!row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
if (!string.IsNullOrWhiteSpace(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
{
row.Visible = false;
row.Cells["colSelect"].Value = false;
@@ -715,14 +715,14 @@ namespace TemuKJD.WXForms.AdminForms
string notes = textBox1.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = true;
}
@@ -735,14 +735,14 @@ namespace TemuKJD.WXForms.AdminForms
string notes = textBox1.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = false;
}
@@ -1127,6 +1127,7 @@ namespace TemuKJD.WXForms.ProductForms
this.cmbSourceType.Items.AddRange(new object[] {
"",
"厂商直采",
"微信店采",
"店铺采集",
"机会商品",
"以图搜品",
@@ -54,6 +54,8 @@ namespace TemuKJD.WXForms.ProductForms
"顶级", "之王", "二手", "亏本", "冲量", "白菜价", "跳楼价", "xxx", "xx", "最大", "最小", "低价", "降价", "成本", "赔钱", "甩卖",
"真丝", "蚕丝", "香云纱", "羊绒", "羊毛", "羊羔绒", "羊羔毛", "羽绒", "皮草"
};
string DefaultAdultBrandId = "";
public WXDBProdUploadForm()
{
InitializeComponent();
@@ -484,7 +486,7 @@ namespace TemuKJD.WXForms.ProductForms
Invoke(new Action(() =>
{
if (cmbSourceType.Text != "厂商直采")
if (cmbSourceType.Text.Trim() != "厂商直采" && cmbSourceType.Text.Trim() != "微信店采")
{
fillPddCate();
}
@@ -1323,8 +1325,21 @@ namespace TemuKJD.WXForms.ProductForms
}
#endregion
WXGetEditProductInfoLite wxEditProdInfo = null;
if (dbProd.product_get_type_text == "微信店采")
{
try
{
wxEditProdInfo = JsonHelper.DeserializeJsonToObject<WXGetEditProductInfoLite>(dbProd.product_json);
}
catch (Exception ex)
{
return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"微信商品格式获取失败" + ex.Message + "\"}";
}
}
#region 将聚水潭产品数据格式进行转换成pdd格式统一上传,匹配加密的spuCode和skuCoke 微信小店的货号spuCode和外部商品编号outProductId/out_product_id对应加密的聚水潭goodsId
if (dbProd.sku_secret_json != null && dbProd.sku_secret_json.Contains("goodsId"))
if (dbProd.product_get_type_text == "厂商直采" && dbProd.sku_secret_json != null && dbProd.sku_secret_json.Contains("goodsId"))
{
string convertRst = "";
var ob = new PDDProdFormConverter().JstPddProdToPddConvert(out convertRst, dbProd);
@@ -1333,6 +1348,16 @@ namespace TemuKJD.WXForms.ProductForms
}
#endregion
#region 微信格式转换
if (dbProd.product_get_type_text == "微信店采")
{
string convertRst = "";
var ob = new PDDProdFormConverter().WXProdToPddConvert(out convertRst, dbProd);
if (!string.IsNullOrEmpty(convertRst))
return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"商品查询错误 " + convertRst + "\"}";
}
#endregion
#region 将产品数据初始化成微信小店支持的参数
JObject prodJObj = new JObject();
try
@@ -1511,7 +1536,6 @@ namespace TemuKJD.WXForms.ProductForms
}
#endregion
WXGetEditProductInfoLite wxEditProdInfo = null;
if (BaseClass.UserAuthority.ParseToString().Contains("微信回采") && chkUseWXComplateProd.Checked && dbProd.has_wx_format == "1")
{
string errMsg = "";
@@ -1704,6 +1728,13 @@ namespace TemuKJD.WXForms.ProductForms
{
try
{
if (dbProd.product_get_type_text == "微信店采")
{
upProdInitParam.product.info.headImg.Add(gallery_item.url);
upProdParam.product.info.headImg.Add(gallery_item.url);
continue;
}
// 获取缓存盗链 主图
if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(gallery_item.url)))
{
@@ -1920,9 +1951,10 @@ namespace TemuKJD.WXForms.ProductForms
}));
}
List<long> aiCateIdLst = new List<long>();
// 聚水潭商品已识别类目使用类目缓存
// 微信商品使用类目缓存
if (!dbProd.wx_cat_leaf.IsNullOrZero())
{
// 聚水潭商品已识别类目使用类目缓存
if (!dbProd.wx_cat_1.IsNullOrZero())
aiCateIdLst.Add(dbProd.wx_cat_1.ParseToLong());
if (!dbProd.wx_cat_2.IsNullOrZero())
@@ -2195,7 +2227,8 @@ namespace TemuKJD.WXForms.ProductForms
var afterSaleAddress = "";
var afterSaleDetail = "";
if (dbProd.wx_cat_leaf != null)
// 厂商直采获取售后地址用于处理售后单
if (dbProd.product_get_type_text == "厂商直采" && dbProd.wx_cat_leaf != null)
{
var urlAfterSale = BaseClass.BuildObjString("product/wx_get_after_sale");
@@ -2301,8 +2334,8 @@ namespace TemuKJD.WXForms.ProductForms
upProdParam.product.info.afterSaleInfo.afterSaleAddressId = BaseRegex.GetStringJson(ref addressRst, "addressId");
#endregion
// 厂商直采获取推单运费模板
#region 获取推单运费模板,计算运费加价。
if (cell != null)
{
Invoke(new Action(() =>
@@ -2314,7 +2347,7 @@ namespace TemuKJD.WXForms.ProductForms
var shippingTemplateJson = "";
var shipPrice = 0;
if (dbProd.wx_cat_leaf != null)
if (dbProd.product_get_type_text == "厂商直采" && dbProd.wx_cat_leaf != null)
{
var urlShipping = BaseClass.BuildObjString("product/wx_get_shipping_template");
var dataShipping = Work.UserLogin.GetSignaturex() +
@@ -2437,6 +2470,12 @@ namespace TemuKJD.WXForms.ProductForms
{
try
{
if (dbProd.product_get_type_text == "微信店采")
{
upProdParam.product.info.detail.detailImg.Add(gallery_item.url);
continue;
}
// 获取缓存盗链 详情图
if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(gallery_item.url)))
{
@@ -2584,26 +2623,37 @@ namespace TemuKJD.WXForms.ProductForms
upProdParam.product.info.param = new List<wxPropParam>(); // 商品属性值
var productAttr = upProdParam.product.info.category.LastOrDefault().catInfo.productAttr;
// 直接转换微信回采
if (BaseClass.UserAuthority.ParseToString().Contains("微信回采") && chkUseWXComplateProd.Checked && dbProd.has_wx_format == "1" && wxEditProdInfo != null)
{
foreach(var wxEditPropParam in wxEditProdInfo.product.info.param)
{
var wxPropParam = new wxPropParam();
upProdParam.product.info.param.Add(wxPropParam);
//var wxCategoryParam1 = new categoryPropParam()
//{
// catType = 7,
// name = attr.name,
// catInfo = new catInfoParam() { inputType = attr.normalRelease.ruleType, isRequired = attr.isRequired == true ? 1 : 0, isCustomize = 0 }
//};
//var wxCategoryParam2 = new categoryPropParam()
//{
// catType = 7,
// name = attrValue,
// catInfo = new catInfoParam() { inputType = attr.normalRelease.ruleType, isRequired = attr.isRequired == true ? 1 : 0, isCustomize = 0 }
//};
//wxPropParam.categorys.Add(wxCategoryParam1);
//wxPropParam.categorys.Add(wxCategoryParam2);
foreach (var wxEditCategoryParam in wxEditPropParam.categorys)
{
var wxCategoryParam = new categoryPropParam()
{
catType = wxEditCategoryParam.catType,
name = wxEditCategoryParam.name,
catInfo = new catInfoParam()
{
inputType = wxEditCategoryParam.catInfo.inputType,
isRequired = wxEditCategoryParam.catInfo.isRequired,
isCustomize = wxEditCategoryParam.catInfo.isCustomize,
}
};
wxPropParam.categorys.Add(wxCategoryParam);
}
}
}
// 直接转换微信店采
else if (dbProd.product_get_type_text == "微信店采")
{
foreach (var wxEditPropParam in wxEditProdInfo.product.info.param)
{
var wxPropParam = new wxPropParam();
upProdParam.product.info.param.Add(wxPropParam);
foreach (var wxEditCategoryParam in wxEditPropParam.categorys)
{
var wxCategoryParam = new categoryPropParam()
@@ -3011,6 +3061,12 @@ namespace TemuKJD.WXForms.ProductForms
var spec = sku.spec[0];
if (!attrParam.items.Any(it => it.value == spec.spec_name) && !string.IsNullOrEmpty(sku.thumb_url))
{
if (dbProd.product_get_type_text == "微信店采")
{
attrParam.items.Add(new productSaleAttrItemParam() { value = spec.spec_name, imgUrl = sku.thumb_url, });
continue;
}
// 获取缓存盗链 sku图
if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(sku.thumb_url)))
{
@@ -3295,6 +3351,7 @@ namespace TemuKJD.WXForms.ProductForms
#endregion
// 资质信息
// 微信回采直接复制
if (BaseClass.UserAuthority.ParseToString().Contains("微信回采") && chkUseWXComplateProd.Checked && dbProd.has_wx_format == "1" && wxEditProdInfo != null)
{
upProdParam.product.info.qualificationList.Clear();
@@ -3312,7 +3369,34 @@ namespace TemuKJD.WXForms.ProductForms
if (upProdParam.product.info.category.FirstOrDefault()?.name == "成人用品" && upProdParam.product.info.category[1].name != "情趣内衣")
{
upProdParam.product.info.brandId = wxEditProdInfo.product.info.brandId.ParseToLong();
if (wxEditProdInfo.product.info.brandId.ParseToLong() > 0)
DefaultAdultBrandId = wxEditProdInfo.product.info.brandId;
if (wxEditProdInfo.product.info.brandId.ParseToLong() > 0)
upProdParam.product.info.brandId = wxEditProdInfo.product.info.brandId.ParseToLong();
}
}
// 微信店采直接复制
else if (dbProd.product_get_type_text == "微信店采")
{
upProdParam.product.info.qualificationList.Clear();
if (wxEditProdInfo.product?.info?.qualificationList?.Count > 0)
{
foreach (var editQualification in wxEditProdInfo.product.info.qualificationList)
{
upProdParam.product.info.qualificationList.Add(new qualificationParam()
{
qualificationId = editQualification.qualificationId,
qualificationUrl = editQualification.qualificationUrl,
});
}
}
if (upProdParam.product.info.category.FirstOrDefault()?.name == "成人用品" && upProdParam.product.info.category[1].name != "情趣内衣")
{
if (wxEditProdInfo.product.info.brandId.ParseToLong() > 0)
DefaultAdultBrandId = wxEditProdInfo.product.info.brandId;
if (wxEditProdInfo.product.info.brandId.ParseToLong() > 0)
upProdParam.product.info.brandId = wxEditProdInfo.product.info.brandId.ParseToLong();
}
}
else
@@ -3574,6 +3658,14 @@ namespace TemuKJD.WXForms.ProductForms
#endregion
}
// 直接使用微信回采情趣商品品牌
if (BaseClass.UserAuthority.ParseToString().Contains("微信回采") && chkUseWXComplateProd.Checked &&
upProdParam.product.info.category.FirstOrDefault()?.name == "成人用品" && upProdParam.product.info.category[1].name != "情趣内衣")
{
if (DefaultAdultBrandId.ParseToLong() > 0)
upProdParam.product.info.brandId = DefaultAdultBrandId.ParseToLong();
}
// 情趣内衣类禁止设置运费险
if (upProdParam.product.info.category[1].name == "情趣内衣")
{
upProdParam.product.info.extraService.freightInsurance = 0;
@@ -4079,7 +4171,7 @@ namespace TemuKJD.WXForms.ProductForms
data += "&in_ext_codes=" + txtExtCodeFilter.Text;
data += "&in_spu_ids=" + txtIdFilter.Text;
data += "&in_groups=" + cmbGroupFilter.Text;
if (cmbSourceType.Text != "厂商直采")
if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "微信店采")
data += "&in_cates=" + cmbCateFilter1.Text;
else
{
@@ -4444,7 +4536,7 @@ namespace TemuKJD.WXForms.ProductForms
private void cmbSourceType_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbSourceType.Text != "厂商直采")
if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "微信店采")
fillPddCate();
else
fillWxCate();
@@ -4457,7 +4549,7 @@ namespace TemuKJD.WXForms.ProductForms
private void cmbCateFilter1_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbSourceType.Text != "厂商直采")
if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "微信店采")
return;
cmbCateFilter2.Text = "";
@@ -4473,7 +4565,7 @@ namespace TemuKJD.WXForms.ProductForms
private void cmbCateFilter2_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbSourceType.Text != "厂商直采")
if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "微信店采")
return;
cmbCateFilter3.Text = "";
@@ -4515,7 +4607,7 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()))
{
@@ -4523,7 +4615,7 @@ namespace TemuKJD.WXForms.ProductForms
row.Cells["colSelect"].Value = false;
continue;
}
if (!row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
if (!string.IsNullOrWhiteSpace(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
{
row.Visible = false;
row.Cells["colSelect"].Value = false;
@@ -4554,14 +4646,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = true;
}
@@ -4574,14 +4666,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = false;
}
@@ -4825,6 +4917,15 @@ Content-Type: image/jpeg
return result;
}
public static string getAddressById(ShopLoginInfo shop, string AddressId)
{
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeexpress/cgi/getAddress?offset=0&limit=20&includeBlock=1&addressId=" + AddressId +
"&token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/address/expressAddressMgmt";
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, referer);
return result;
}
public static string uploadProductDraft(ShopLoginInfo shop, WXUploadProductParam prodParam)
{
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductupload/common/cgi/goods/uploadProductDraft?token=&lang=zh_CN";
@@ -956,7 +956,7 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()))
{
@@ -964,7 +964,7 @@ namespace TemuKJD.WXForms.ProductForms
row.Cells["colSelect"].Value = false;
continue;
}
if (!row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
if (!string.IsNullOrWhiteSpace(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
{
row.Visible = false;
row.Cells["colSelect"].Value = false;
@@ -995,14 +995,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = true;
}
@@ -1015,14 +1015,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = false;
}
@@ -954,7 +954,7 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()))
{
@@ -962,7 +962,7 @@ namespace TemuKJD.WXForms.ProductForms
row.Cells["colSelect"].Value = false;
continue;
}
if (!row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
if (!string.IsNullOrWhiteSpace(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
{
row.Visible = false;
row.Cells["colSelect"].Value = false;
@@ -993,14 +993,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = true;
}
@@ -1013,14 +1013,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = false;
}
@@ -696,7 +696,7 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()))
{
@@ -704,7 +704,7 @@ namespace TemuKJD.WXForms.ProductForms
row.Cells["colSelect"].Value = false;
continue;
}
if (!row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
if (!string.IsNullOrWhiteSpace(notes) && !notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()))
{
row.Visible = false;
row.Cells["colSelect"].Value = false;
@@ -735,14 +735,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = true;
}
@@ -755,14 +755,14 @@ namespace TemuKJD.WXForms.ProductForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
{
if (row.Cells["colShopName"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()) &&
(row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
(string.IsNullOrWhiteSpace(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())))
{
row.Cells["colSelect"].Value = false;
}
+133 -15
View File
@@ -28,7 +28,7 @@ namespace TemuKJD.WXForms.ShopForms
public delegate void InfoReceivedHandler(string information);
public event InfoReceivedHandler OnInfoReceived;
public string getProduct(string sProdId, string supplierId, bool notSaveDb = false)
public string getProduct(string sProdId, string supplierId, bool isReGet = true, bool notSaveDb = false)
{
var prodId = sProdId.ParseToLong();
if (prodId <= 0)
@@ -54,10 +54,10 @@ namespace TemuKJD.WXForms.ShopForms
Task.Run(() =>
{
var msg = getPDDProductWidthEdit(shop, sProdId);
var msg = reGetProductWidthWXFormat(shop, sProdId, isReGet);
if (!string.IsNullOrEmpty(msg))
{
if (!msg.StartsWith("success") && !msg.StartsWith("商品回采保存成功"))
if (!msg.StartsWith("success") && !msg.StartsWith("商品回采保存成功") && !msg.Contains("微信商品采集入库成功"))
{
MainForm.instance.Invoke(new Action(() =>
{
@@ -77,8 +77,9 @@ namespace TemuKJD.WXForms.ShopForms
return "success";
}
public string getPDDProductWidthEdit(ShopLoginInfo shop, string prodId)
public string reGetProductWidthWXFormat(ShopLoginInfo shop, string prodId, bool isReGet = true)
{
string getString = isReGet ? "商品回采" : "商品采集";
try
{
Thread.Sleep(Randomx.GetId(10, 50));
@@ -99,28 +100,55 @@ namespace TemuKJD.WXForms.ShopForms
if (shop.LoginStatus != "登录成功")
errmsg = "店铺掉线";
return "商品回采失败!" + errmsg;
return getString + "失败!" + errmsg;
}
}
catch (Exception ex)
{
//OnInfoReceived("商品获取失败!商品数据格式获取失败!" + ex.Message);
return "商品回采失败!商品数据格式获取失败!" + ex.Message;
return getString + "失败!商品数据格式获取失败!" + ex.Message;
}
WXGetEditProductInfoLite wxProdInfoLite = null;
try
{
wxProdInfoLite = JsonHelper.DeserializeJsonToObject<WXGetEditProductInfoLite>(getEditProdRst);
var addressRst = WXUpload.getAddressById(shop, wxProdInfoLite.product.info.afterSaleInfo.afterSaleAddressId);
if (addressRst.Contains("biz magic invalid"))
{
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
}
if (!addressRst.Contains("\"success\":true"))
{
var errmsg = BaseRegex.GetStringJson(ref addressRst, "msg");
if (string.IsNullOrWhiteSpace(errmsg))
errmsg = addressRst;
if (shop.LoginStatus != "登录成功")
errmsg = "店铺掉线";
return getString + "失败!" + errmsg;
}
var addressStr = JsonHelper.JObjectParse(addressRst)["addressList"].FirstOrDefault().ParseToString();
wxProdInfoLite.address = JsonHelper.DeserializeJsonToObject<WXAfterSaleAddressInfo>(addressStr);
if (isReGet && wxProdInfoLite.address == null)
return getString + "失败!商品详情获取失败";
// 查看下json结构
var wxProdInfoLiteStr = JsonHelper.SerializeObject(wxProdInfoLite);
if (string.IsNullOrWhiteSpace(wxProdInfoLite.product.info.spuCode))
{
return "商品回采失败:外部编码采集失败,跳过";
if (isReGet)
{
return getString + "失败:外部编码采集失败,跳过";
}
else
{
return SaveWxProd(shop, prodId, wxProdInfoLite);
}
}
}
catch (Exception ex)
{
return "商品回采失败:格式转换失败 " + ex.Message;
return getString + "失败:格式转换失败 " + ex.Message;
}
@@ -138,15 +166,14 @@ namespace TemuKJD.WXForms.ShopForms
var errMsg = BaseRegex.GetStringJson(ref result, "msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = result;
return "查询回采商品错误:" + errMsg;
return getString + "查询商品错误:" + errMsg;
}
List<KJDDBProduct> complateDbProdExistLst = JsonHelper.DeserializeJsonToList<KJDDBProduct>(JsonHelper.JObjectParse(result)["data"].ParseToString());
if (complateDbProdExistLst.Count == 0)
{
return "回采商品不存在";
return getString + "商品不存在";
}
url = BaseClass.BuildPDDObjString("product/add_prod_wx_complate");
Thread.Sleep(200);
data = UserLogin.GetSignaturex();
@@ -163,18 +190,109 @@ namespace TemuKJD.WXForms.ShopForms
var errMsg = BaseRegex.GetStringJson(ref result, "msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = result;
return "查询回采商品错误:" + errMsg;
return getString + "查询商品错误:" + errMsg;
}
else
{
return "商品回采保存成功!";
return getString + "保存成功!";
}
}
catch (Exception ex)
{
return "商品采集失败!" + ex.Message;
return getString + "失败!" + ex.Message;
}
}
string SaveWxProd(ShopLoginInfo shop, string prodId, WXGetEditProductInfoLite wxEditProdInfoLite)
{
bool isExist = false;
var existUrl = BaseClass.BuildPDDObjString("product/get_product_spu_id_list");
string existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prodId;
//if (!string.IsNullOrEmpty(prod.dbProduct.real_spu_id))
// existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prod.spuId + "," + prod.dbProduct.real_spu_id;
string html = GetHtml.PostUtf8(existUrl, existData);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(existUrl, existData);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
return "采集入库失败,产品数据库连接失败";
}
else
{
if (html.Contains("\"data\":[") && !html.Contains("\"data\":[]"))
isExist = true;
}
var url = BaseClass.BuildPDDObjString("product/add_product");
if (isExist)
url = BaseClass.BuildPDDObjString("product/mdy_product");
var skus = wxEditProdInfoLite.product.productSkus;
var data = Work.UserLogin.GetSignaturex() +
"&from_shop_id=" + shop.ShopId +
"&from_shop_name=" + shop.ShopAccount +
"&spu_id=" + prodId +
"&skc_id=" + prodId +
"&price_text=" + skus.Min(s => s.productSkuInfo.salePrice * 0.01m) + " - " + skus.Max(s => s.productSkuInfo.salePrice * 0.01m) +
"&ext_code=" + "" +
"&product_name=" + HttpUtility.UrlEncode(wxEditProdInfoLite.product.info.title, Encoding.UTF8) +
"&product_json=" + HttpUtility.UrlEncode(JsonHelper.SerializeObject(wxEditProdInfoLite), Encoding.UTF8) +
"&size_json=" + HttpUtility.UrlEncode("{}", Encoding.UTF8) +
"&sale_count=" +
"&sale_count_text=" +
"&main_img=" + HttpUtility.UrlEncode(wxEditProdInfoLite.product.info.headImg.FirstOrDefault(), Encoding.UTF8) +
"&wx_safe_status=" + HttpUtility.UrlEncode("安全商品", Encoding.UTF8) +
"&product_get_type=" + HttpUtility.UrlEncode("微信店采", Encoding.UTF8);
if (wxEditProdInfoLite.product.info.category.Count > 0)
{
data += "&wx_cat_1=" + wxEditProdInfoLite.product.info.category[0].catId;
data += "&main_cat_id=" + wxEditProdInfoLite.product.info.category[0].catId;
data += "&main_cat_name=" + wxEditProdInfoLite.product.info.category[0].name;
data += "&wx_cat_leaf=" + wxEditProdInfoLite.product.info.category.LastOrDefault()?.catId;
data += "&cat_id=" + wxEditProdInfoLite.product.info.category.LastOrDefault()?.catId;
data += "&cat_name=" + HttpUtility.UrlEncode((wxEditProdInfoLite.product.info.category.LastOrDefault()?.name).ParseToString(), Encoding.UTF8);
}
if (wxEditProdInfoLite.product.info.category.FirstOrDefault().name == "图书")
{
data += "&special_prod_type=" + HttpUtility.UrlEncode("书籍", Encoding.UTF8);
}
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"))
{
string msg = "商品入库失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg");
//Invoke(new Action(() =>
//{
// row.Cells["colMsg"].Value = msg;
//}));
return msg;
}
else
{
//prod.getProductMsg = "商品入库成功!";
//Invoke(new Action(() =>
//{
// row.Cells["colMsg"].Value = prod.getProductMsg;
//}));
if (!isExist)
{
url = BaseClass.BuildPDDObjString("product/mdy_product");
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"))
{
string msg = "商品入库失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg");
return msg;
}
}
return "微信商品采集入库成功!";
}
return "商品采集失败!";
}
}
}
+6 -4
View File
@@ -276,7 +276,8 @@ namespace TemuKJD.WXForms.ShopForms
else
{
ShopBLL.MdyPDDServerShopSubInfo(shopInfo);
btnRefreshCookie_Click(null, null);
RefreshDataGridView(false);
//btnRefreshCookie_Click(null, null);
}
}
}
@@ -417,19 +418,19 @@ namespace TemuKJD.WXForms.ShopForms
if (!string.IsNullOrWhiteSpace(cmbNotes.Text) && cmbNotes.Text.Trim() != "全部")
{
var notes = cmbNotes.Text.ToLower();
var notesLst = cmbNotes.Text.ToLower().Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
var notesLst = cmbNotes.Text.ToLower().Split(new string[] { ";", ";", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
shopList = shopList.Where(s => s.Notes.ParseToString().ToLower().Contains(notes) || notesLst.Contains(s.Notes.ParseToString().ToLower())).ToList();
}
if (!string.IsNullOrWhiteSpace(cmbGroup.Text) && cmbGroup.Text.Trim() != "全部")
{
var group = cmbGroup.Text.ToLower();
var groupLst = cmbGroup.Text.ToLower().Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
var groupLst = cmbGroup.Text.ToLower().Split(new string[] { ";", ";", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
shopList = shopList.Where(s => s.GroupName.ParseToString().ToLower().Contains(group) || groupLst.Contains(s.GroupName.ParseToString().ToLower())).ToList();
}
if (!string.IsNullOrWhiteSpace(cmbSubAccount.Text) && cmbSubAccount.Text.Trim() != "全部")
{
var subAccount = cmbSubAccount.Text.ToLower();
var subAccountLst = cmbSubAccount.Text.ToLower().Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
var subAccountLst = cmbSubAccount.Text.ToLower().Split(new string[] { ";", ";", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
shopList = shopList.Where(s => s.SubUserName.ParseToString().ToLower().Contains(subAccount) || subAccountLst.Any(sa => s.SubUserName.ParseToString().ToLower().Contains(sa))).ToList();
}
if (!string.IsNullOrEmpty(txtShopId.Text))
@@ -551,6 +552,7 @@ namespace TemuKJD.WXForms.ShopForms
dgvr.Cells["colShopAccount"].Value = param.ShopAccount;
dgvr.Cells["colNotes"].Value = param.Notes;
dgvr.Cells["colCookie"].Value = param.Cookies;
dgvr.Cells["colSubUser"].Value = param.SubUserName;
dgvr.Cells["colGroupName"].Value = param.GroupName;
dgvr.Cells["colUploadAccount"].Value = param.UploadAccount;
dgvr.Cells["colBuyAccount"].Value = param.BuyAccount;
+9 -2
View File
@@ -333,10 +333,17 @@ namespace TemuKJD.WXForms.ShopForms
//if (this.openType != EnumOpenType.login)
{
//var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null));
string address = "";
if (!string.IsNullOrEmpty(InitUrl))
address = InitUrl;
else
address = shopMainUrl;
foreach (var cook in cookieLst)
{
var t = CEFBrowser.SetCookieAsync(cook.Domain, cook.Name + "=" + cook.Value + ";", cefWebBrowser.GetCookieManager(null));
t.Wait(5000);
// 同步设置cookie
cefWebBrowser.GetCookieManager(null).SetCookie(address, cook);
//var t = CEFBrowser.SetCookieAsync(cook.Domain, cook.Name + "=" + cook.Value + ";", cefWebBrowser.GetCookieManager(null));
//t.Wait(5000);
}
}
+355
View File
@@ -0,0 +1,355 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXShopMultiLoginForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WXShopMultiLoginForm));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.btnNext = new System.Windows.Forms.Button();
this.btnPrev = new System.Windows.Forms.Button();
this.txtAddress = new System.Windows.Forms.TextBox();
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
this.dgvShop = new TemuKJD.UserComponent.DataGridViewEx();
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colShopLoginName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSelectProduct = new System.Windows.Forms.DataGridViewLinkColumn();
this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn();
this.colApi = new System.Windows.Forms.DataGridViewLinkColumn();
this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colUploadCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOnSaleNum = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colRemaining = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
this.splitContainer3.Panel1.SuspendLayout();
this.splitContainer3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).BeginInit();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.dgvShop);
this.splitContainer1.Size = new System.Drawing.Size(1438, 686);
this.splitContainer1.SplitterDistance = 1100;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
// splitContainer2
//
this.splitContainer2.BackColor = System.Drawing.Color.White;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(1, 33);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.btnNext);
this.splitContainer2.Panel1.Controls.Add(this.btnPrev);
this.splitContainer2.Panel1.Controls.Add(this.txtAddress);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.splitContainer3);
this.splitContainer2.Size = new System.Drawing.Size(1438, 766);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 5;
//
// btnNext
//
this.btnNext.Location = new System.Drawing.Point(35, 3);
this.btnNext.Name = "btnNext";
this.btnNext.Size = new System.Drawing.Size(32, 23);
this.btnNext.TabIndex = 9;
this.btnNext.Text = "→";
this.btnNext.UseVisualStyleBackColor = true;
this.btnNext.Click += new System.EventHandler(this.btnNext_Click);
//
// btnPrev
//
this.btnPrev.Location = new System.Drawing.Point(3, 3);
this.btnPrev.Name = "btnPrev";
this.btnPrev.Size = new System.Drawing.Size(32, 23);
this.btnPrev.TabIndex = 8;
this.btnPrev.Text = "←";
this.btnPrev.UseVisualStyleBackColor = true;
this.btnPrev.Click += new System.EventHandler(this.btnPrev_Click);
//
// txtAddress
//
this.txtAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtAddress.Location = new System.Drawing.Point(68, 3);
this.txtAddress.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtAddress.Name = "txtAddress";
this.txtAddress.Size = new System.Drawing.Size(1367, 23);
this.txtAddress.TabIndex = 7;
this.txtAddress.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtAddress_KeyDown);
//
// splitContainer3
//
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer3.Location = new System.Drawing.Point(0, 0);
this.splitContainer3.Name = "splitContainer3";
this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer3.Panel1
//
this.splitContainer3.Panel1.Controls.Add(this.splitContainer1);
this.splitContainer3.Size = new System.Drawing.Size(1438, 736);
this.splitContainer3.SplitterDistance = 686;
this.splitContainer3.TabIndex = 5;
//
// dgvShop
//
this.dgvShop.AllowUserToAddRows = false;
this.dgvShop.AllowUserToDeleteRows = false;
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)))));
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,
this.colShopLoginName,
this.colShopId,
this.colShopName,
this.colShopNotes,
this.colSelectProduct,
this.colLoginStatus,
this.colApi,
this.colCanUse,
this.colUploadCount,
this.colOnSaleNum,
this.colRemaining,
this.colMessage});
this.dgvShop.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvShop.Location = new System.Drawing.Point(0, 0);
this.dgvShop.Name = "dgvShop";
this.dgvShop.ReadOnly = true;
this.dgvShop.RowHeadersWidth = 25;
this.dgvShop.RowTemplate.Height = 23;
this.dgvShop.Size = new System.Drawing.Size(335, 686);
this.dgvShop.TabIndex = 7;
//
// colSelect
//
this.colSelect.HeaderText = "全选";
this.colSelect.Name = "colSelect";
this.colSelect.ReadOnly = true;
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSelect.Visible = false;
this.colSelect.Width = 28;
//
// colShopLoginName
//
this.colShopLoginName.HeaderText = "店铺登录名";
this.colShopLoginName.Name = "colShopLoginName";
this.colShopLoginName.ReadOnly = true;
this.colShopLoginName.Visible = false;
//
// colShopId
//
this.colShopId.HeaderText = "店铺Id";
this.colShopId.Name = "colShopId";
this.colShopId.ReadOnly = true;
this.colShopId.Visible = false;
this.colShopId.Width = 55;
//
// colShopName
//
this.colShopName.FillWeight = 150F;
this.colShopName.HeaderText = "店铺名称";
this.colShopName.Name = "colShopName";
this.colShopName.ReadOnly = true;
this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colShopName.Width = 75;
//
// colShopNotes
//
this.colShopNotes.HeaderText = "备注";
this.colShopNotes.Name = "colShopNotes";
this.colShopNotes.ReadOnly = true;
this.colShopNotes.Width = 75;
//
// colSelectProduct
//
this.colSelectProduct.HeaderText = "选择商品";
this.colSelectProduct.Name = "colSelectProduct";
this.colSelectProduct.ReadOnly = true;
this.colSelectProduct.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSelectProduct.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSelectProduct.Visible = false;
this.colSelectProduct.Width = 62;
//
// colLoginStatus
//
this.colLoginStatus.HeaderText = "状态";
this.colLoginStatus.Name = "colLoginStatus";
this.colLoginStatus.ReadOnly = true;
this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colLoginStatus.Width = 38;
//
// colApi
//
this.colApi.HeaderText = "Api";
this.colApi.Name = "colApi";
this.colApi.ReadOnly = true;
this.colApi.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colApi.Visible = false;
this.colApi.Width = 38;
//
// colCanUse
//
this.colCanUse.HeaderText = "可用";
this.colCanUse.Name = "colCanUse";
this.colCanUse.ReadOnly = true;
this.colCanUse.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colCanUse.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colCanUse.Visible = false;
this.colCanUse.Width = 28;
//
// colUploadCount
//
this.colUploadCount.HeaderText = "已传";
this.colUploadCount.Name = "colUploadCount";
this.colUploadCount.ReadOnly = true;
this.colUploadCount.Visible = false;
this.colUploadCount.Width = 38;
//
// colOnSaleNum
//
this.colOnSaleNum.HeaderText = "在售";
this.colOnSaleNum.Name = "colOnSaleNum";
this.colOnSaleNum.ReadOnly = true;
this.colOnSaleNum.Visible = false;
this.colOnSaleNum.Width = 38;
//
// colRemaining
//
this.colRemaining.HeaderText = "月限额";
this.colRemaining.Name = "colRemaining";
this.colRemaining.ReadOnly = true;
this.colRemaining.Visible = false;
//
// colMessage
//
this.colMessage.HeaderText = "消息";
this.colMessage.Name = "colMessage";
this.colMessage.ReadOnly = true;
//
// WXShopMultiLoginForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1440, 800);
this.Controls.Add(this.splitContainer2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "WXShopMultiLoginForm";
this.ShowMaximizeBox = true;
this.Text = "店铺登录";
this.TitleText = "店铺登录";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ShopLoginForm_FormClosed);
this.Load += new System.EventHandler(this.ShopLoginForm_Load);
this.Controls.SetChildIndex(this.splitContainer2, 0);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel1.PerformLayout();
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.splitContainer3.Panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
this.splitContainer3.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.TextBox txtAddress;
private System.Windows.Forms.Button btnNext;
private System.Windows.Forms.Button btnPrev;
private System.Windows.Forms.SplitContainer splitContainer3;
private UserComponent.DataGridViewEx dgvShop;
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopLoginName;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopName;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopNotes;
private System.Windows.Forms.DataGridViewLinkColumn colSelectProduct;
private System.Windows.Forms.DataGridViewLinkColumn colLoginStatus;
private System.Windows.Forms.DataGridViewLinkColumn colApi;
private System.Windows.Forms.DataGridViewCheckBoxColumn colCanUse;
private System.Windows.Forms.DataGridViewTextBoxColumn colUploadCount;
private System.Windows.Forms.DataGridViewTextBoxColumn colOnSaleNum;
private System.Windows.Forms.DataGridViewTextBoxColumn colRemaining;
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
}
}
@@ -0,0 +1,315 @@
using AllBase;
using AllBase.Helper;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.WinForms;
//using TemuKJD.DashBoardForms;
using TemuKJD.Helper;
using TemuKJD.BaseForms;
using Microsoft.Win32;
using NaiBa.CefHelper;
using NaiBa.CefHelper.Handler;
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.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
//using System.Web.Hosting;
using System.Windows.Forms;
using Work;
using Work.BLL.Tools;
using TemuKJD.BLL;
using AllBase.Model.Result.PDDResult;
using NaiBa.Util;
namespace TemuKJD.WXForms.ShopForms
{
public partial class WXShopMultiLoginForm : BaseGeneralForm
{
public static WXShopMultiLoginForm shopMultiLoginFormInstance { get; set; } = null;
public int CloseAfterSecond { get; set; }
public EnumOpenType openType = EnumOpenType.manage;
public bool isMultiLogin = false;
public string MultiLoginCookieName = "";
public string InitUrl = "";
public ChromiumWebBrowser cefWebBrowser = null;
const string DefaultUrl = "https://store.weixin.qq.com/shop/home";
const string shopLoginUrl = "https://store.weixin.qq.com/shop?redirect_url=%2Fhome";
private string currentUrl = "";
private string shopCookieHead = "store.weixin.qq.com";
private ShopLoginInfo shop = null;
private ConcurrentList<ShopCompany> lstShopCompany = new ConcurrentList<ShopCompany>();
private ConcurrentList<ShopLoginInfo> lstSwitchShop = new ConcurrentList<ShopLoginInfo>();
public WXShopMultiLoginForm(ShopLoginInfo shopInfo)
{
InitializeComponent();
shopMultiLoginFormInstance = this;
this.shop = shopInfo;
}
private void ShopLoginForm_Load(object sender, EventArgs e)
{
this.splitContainer1.SplitterDistance = this.splitContainer1.Height - 62;
if (string.IsNullOrWhiteSpace(InitUrl))
InitUrl = DefaultUrl;
if (CloseAfterSecond > 0)
{
Task.Run(() =>
{
Thread.Sleep(1000 * CloseAfterSecond);
if (this.Created)
{
Invoke(new Action(() => { this.Close(); }));
}
});
}
initSwitchShop();
initCefAndMainShop();
}
public void initSwitchShop()
{
}
/// <summary>
/// 初始化CEF并登录主店铺
/// </summary>
private void initCefAndMainShop()
{
if (openType != EnumOpenType.login && shop == null)
return;
if (cefWebBrowser == null)
{
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, false);
CustomResourceRequestHandlerLocal resourceRequestHandler = new CustomResourceRequestHandlerLocal();
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad;
cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
cefWebBrowser.KeyboardHandler = new KeyboardHandler();
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowser.LoadError += CefWebBrowser_LoadError;
cefWebBrowser.Dock = DockStyle.Fill;
//js绑定C#对象
WXShopBrowserObject shopObj = new WXShopBrowserObject();
shopObj.OnInfoReceived += ShopObj_OnInfoReceived;
CefSharpSettings.WcfEnabled = true;
cefWebBrowser.JavascriptObjectRepository.Register(
name: "shopObj",
objectToBind: shopObj,
isAsync: false,
options: new BindingOptions { Binder = BindingOptions.DefaultBinder.Binder /*CamelCaseJavascriptNames = false*/ /*cef79*/ }
);
List<Cookie> cookieLst = new List<Cookie>();
try
{
if (shop != null)
{
cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<Cookie>();
}
}
catch
{
}
Task.Run(() =>
{
Invoke(new Action(() =>
{
splitContainer1.Panel1.Controls.Add(cefWebBrowser);
}));
// cef138必须init后方可设置或删除cookie
while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
Thread.Sleep(20);
CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager
//异步设置cookie
//var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null));
string address = InitUrl;
foreach (var cook in cookieLst)
{
// 同步设置cookie
cefWebBrowser.GetCookieManager(null).SetCookie(address, cook);
//var t = CEFBrowser.SetCookieAsync(cook.Domain, cook.Name + "=" + cook.Value + ";", cefWebBrowser.GetCookieManager(null));
//t.Wait(5000);
}
cefWebBrowser.Load(InitUrl);
});
}
}
private void ShopObj_OnInfoReceived(string information)
{
//BaseMsgForm.ShowInfo(information);
if (!string.IsNullOrEmpty(information))
cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync("alert('" + information + "');");
}
private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
{
}
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
if (this.Created && !this.Disposing && !this.IsDisposed)
{
Invoke(new Action(() =>
{
currentUrl = e.Address;
txtAddress.Text = e.Address;
}));
}
}
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
//js绑定C#对象 html页面内声明绑定的C#对象
StringBuilder sb = new StringBuilder();
sb.Append("(function(){");
sb.Append("CefSharp.BindObjectAsync('shopObj');");
sb.Append("})();");
cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString());
}
//public Func<object, string, string, request, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行)
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
return false;
}
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
if (url == "https://store.weixin.qq.com/shop/home" && this.openType == EnumOpenType.login)
{
Task.Run(() =>
{
var data = responseData;
var index = data.IndexOf("window.__INITIAL_PINIA_DATA__=") + "window.__INITIAL_PINIA_DATA__=".Length;
var indexEnd = data.IndexOf(";window.__USE_VITE__=");
if (index < 1000)
{
return;
}
var dataStr = data.Substring(index, indexEnd - index);
dataStr = GetHtml.Unicode2String(dataStr);
var shopId = BaseRegex.GetStringJson(ref data, "appid");
var nickName = BaseRegex.GetStringJson(ref data, "nickName");
var openId = BaseRegex.GetStringJson(ref data, "openid"); // oGu7k7HxmUyOmc1X6VM7GQwS-9cI
if (shop != null && shop.ShopId != shopId)
{
BaseMsgForm.ShowError("cookie与店铺不匹配,请核对店铺!");
return;
}
if (shop == null && GlobalConfig.ShopLoginList.Any(s=>s.ShopId == shopId))
{
BaseMsgForm.ShowError("录入的新店铺已存在,请核对店铺!");
return;
}
ShopCompany sc = new ShopCompany()
{
UserName = BaseClass.UserName, // 登录的用户信息
AccountId = shopId,
AccountName = nickName,
LoginName = shopId,
openid = openId,
LoginStatus = "登录成功",
};
this.lstShopCompany.RemoveAll(s => s.AccountId == sc.AccountId);
this.lstShopCompany.Add(sc);
});
}
}
private void ShopLoginForm_FormClosed(object sender, FormClosedEventArgs e)
{
//OnSaveComplete(shop);
Task.Run(() => {
Thread.Sleep(500);
if (!this.Disposing && !this.IsDisposed)
{
MainForm.instance.Invoke(new Action(() => { this.Dispose(); }));
}
});
}
private void txtAddress_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (cefWebBrowser != null)
{
cefWebBrowser.Load(txtAddress.Text);
}
}
}
private void btnPrev_Click(object sender, EventArgs e)
{
cefWebBrowser.Back();
}
private void btnNext_Click(object sender, EventArgs e)
{
cefWebBrowser.Forward();
}
}
public class WXShopSwitch
{
public static string getShopSwitchList(ShopLoginInfo shop)
{
string url = "https://store.weixin.qq.com/shop-faas/mmecnodelogin/session/getShopSwitchList?token=&lang=zh_CN";
string refere = "https://store.weixin.qq.com/shop/home";
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, refere);
return result;
}
}
public class ShopSwitchInfo
{
public string appid { get; set; } // "wxa20bb379d0961414",
public string nickname { get; set; } // "夜笙服装店",
public string headimgurl { get; set; } // "http://mmbiz.qpic.cn/mmbiz_jpg/ZZIOBibOYfic6CDwhCA8lSSOAZSuEF8HdlBiaJC8RXsTRucB6Xopic49PKgViapwRZDTuGuVxDEtKvhkXNZG63uqUwA/0?wx_fmt=jpeg",
public object appuin { get; set; } // null,
public List<ShopSwitchJobInfo> jobInfoList { get; set; }
public long? lastLoginTime { get; set; } // 1773216675,
public int? ecAcctType { get; set; } // 101,
public int? ecAcctStatus { get; set; } // 100,
public int? ecSubType { get; set; } // 0,
public int? shopType { get; set; } // 6,
public string kfMsgNum { get; set; } // "0",
public string shopMsgNum { get; set; } // "2002"
}
public class ShopSwitchJobInfo
{
public string jobName { get; set; } // "经理人" "资金充值"
public long? jobId { get; set; } // 3 99998
}
}
@@ -0,0 +1,334 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="colSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopLoginName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSelectProduct.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colLoginStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colApi.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colUploadCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colOnSaleNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRemaining.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQYAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzM
zMzMzMzMzMx3d4iIiIiIiIh3fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzMzMzMzMzHeIiIiIj/////////iIiIiId8zMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzMzMzMzMeIiI/////////////////////4iIh8zMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzMzMzMzHiI////////////////////////////iIfMzMzMzMzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMzMzMx3iP///////////////////////////////4iHzMzMzMzMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMzMzMx3iP//////////////////////////////////+IfMzMzMzMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzMzMx3iP/////////////////////////////////////4h8zMzMzMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzMzMzHiP////////////////////////////////////////h3zM
zMzMzMzMzMzMzMzGAAAABMzMzMzMzMzMzMzMzHiP////////////////////////////////////////
//iHzMzMzMzMzMzMzMzMzEAAAAbMzMzMzMzMzMzMzMeI////////////////////////////////////
////////+IfMzMzMzMzMzMzMzMxgAABMzMzMzMzMzMzMzMx4////////////////////////////////
//////////////+IfMzMzMzMzMzMzMzMxAAAbMzMzMzMzMzMzMzHj///////////////////////////
/////////////////////4fMzMzMzMzMzMzMzMYAAMzMzMzMzMzMzMzMeP//////////////////////
///////////////////////////4fMzMzMzMzMzMzMzMAAbMzMzMzMzMzMzMx4//////////////////
/////////////////////////////////4fMzMzMzMzMzMzMzGAGzMzMzMzMzMzMzHj/////////////
///////////////////////////////////////4fMzMzMzMzMzMzMxgDMzMzMzMzMzMzMyI////////
/////////////////////////////////////////////4zMzMzMzMzMzMzMwEzMzMzMzMzMzMzHj///
//////////////////////////////////////////////////+HzMzMzMzMzMzMzMRszMzMzMzMzMzM
eP//////////////////////////////////////////////////////+HzMzMzMzMzMzMzGbMzMzMzM
zMzMzHj///////////////////////////////////////////////////////+MzMzMzMzMzMzMxmzM
zMzMzMzMzMyP////+IiP////////////////////////////////////////+I//////h8zMzMzMzMzM
zMZszMzMzMzMzMzHj////4iIiI//////////////////////////////////////+IiIj/////jMzMzM
zMzMzMzGbMzMzMzMzMzMyP////iIiIiI/////////////////////////////////////4iIiIj////4
fMzMzMzMzMzMxszMzMzMzMzMzHj////4iIiIiP////////////////////////////////////+IiIiI
j////4zMzMzMzMzMzMbMzMzMzMzMzMx4////iIiIiIj////////////////////////////////////4
iIiIiI////+HzMzMzMzMzMzMzMzMzMzMzMzMj////4iIiIiI//////////////+IiP//iI//////////
////+IiIiIiP////h8zMzMzMzMzMzMzMzMzMzMzMzI/////4iIiIiP/////////////4d3eIiIeIj///
//////////+IiIiIj/////jMzMzMzMzMzMzMzMzMzMzMzMyP////+IiIiIj/////////////iIiId3eI
iI//////////////iIiIiI/////4zMzMzMzMzMzMzMzMzMzMzMzHj/////+IiIiP/////////////4//
/4d4j/+P//////////////iIiIj/////+MzMzMzMzMzMzMzMzMzMzMzMx4//////+IiP////////////
///////4j///////////////////iIiP//////jMzMzMzMzMzMzMzMzMzMzMzMeP//////////+IiIj/
///////////////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzH//////////+H
fMx8eP//////////////////////////iId3iP//////////+HzMzMzMzMzMzMzMzMzMzMzMyP//////
///4fMzHh8eP////////////////////////+MzMzMd4//////////h8zMzMzMzMzMzMzMzMzMzMzMf/
////////+MzMePjMeP///////////////////////4zMzMeHx4/////////4fMzMzMzMzMzMzMzMzMzM
zMzH/////////4fMd3eHzMeP//////////////////////iMzMzIiHx4////////+HzMzMzMzMzMzMzM
zMzMzMzMx/////////+Hx4iIfMzMj//////////////////////4h3d8x4h8yP////////jMzMzMzMzM
zMzMzMzMzMzMzMeP////////+HiP+IfMzI//////////////////////+HiIiHd3zHj////////4zMzM
zMzMzMzMzMzMzMzMzMzHj/////////h4//+HzMeP//////////////////////h4//h8zMyP////////
+MzMzMzMzMzMzMzMzMzMzMzMzI/////////4iP//h8x4///////////////////////4j//4fMzHj///
//////jMzMzMzMzMzMzMzMzMzMzMzMyP///////4iIiP+IfHj///////////////////////+Ij/+HzM
eP/////////4zMzMzMzMzMzMzMzMzMzMzMzMj///////iIiIiIh3eP////////////////////////+I
j4h8x3iI////////h8zMzMzMzMzMzMzMzMzMzMzMzH//////+Hj///iIiI//////////////////////
/////4iId4iIiIj//////4zMzMzMzMzMzMzMzMzMzMzMzMx4//////iP////iP//////////////////
/////////////4iP//iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMyP//////////+I//////////////
///////////////////4eP//iP//////jMzMzMzMzMzMzMzMzMzMzMzMzMj///////////iP////////
/////////////////////////4j/////////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj///////////////
//////////////////////////////+I//////////jMzMzMzMzMzMzMzMzMzMzMzMzMzI//////////
//////////////////////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
eP///////////////////////////////////////////////////////4zMzMzMzMzMzMzMzMzMzMzM
zMzMzMj///////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzM
zMzMzMzMzMzHj//////////////////////////////////////////////////////4zMzMzMzMzMzM
zMzMzMzMzMzMzMzMzI//////////////////////////////////////////////////////h8zMzMzM
zMzMzMzMzMzMzMzMzMzMzMx4////////////////////////////////////////////////////+HzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMyI////+I////////////////////////////////////////////
//h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+Ij/////////////////////////////////////
//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+IiIiIj//////////////////////////4
////iI/////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiP/////4iIiP//////////////////////
////+IiIiIj/////iHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////////////////
///////////4iIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP////////////////////
//////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////
//////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////
///////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////
////////////////////////////////////////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI
j/////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMeP//////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMx4////////+I//////////////////////////////////////jMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMeP///////4iIj///////////////////////////iP///////4fMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMx4////////iIiIiP///////////////////////4iIiP///////4zMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIj///////+HzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIj////////////////////4iIiIiIj///////
+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIiI//
//////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiP////////////////////iIiI
iIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiIj/////iIiIiIiIj/////
/4iIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiI/////4zMzMzMzM
j/////+IiIiIiIiP//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP//////+IiIiIiIj/////+MzM
zMzMzI//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iIiIiIiI////
//jMzMzMzMyP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP///////4iIiIiI
iP/////4zMzMzMzMj//////4iIiIiIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iI
iIiIiI//////+MzMzMzMzI//////+IiIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
///4iIiIiIiP//////fMzMzMzMyP//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzH
j///////+IiIiIiI//////+HzMzMzMzMeP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzM
zMzMyP////////iIiIiIiP//////jMzMzMzMzHj///////iIiIiIiI///////4fMzMzMzMzMzMzMzMzM
zMzMzMzMzMj///////+IiIiIiI///////4zMzMzMzMzI///////4iIiIiIiI///////3zMzMzMzMzMzM
zMzMzMzMzMzMzMzI////////iIiIiIiP//////+MzMzMzMzMyP//////+IiIiIiIiP//////+MzMzMzM
zMzMzMzMzMzMzMzMzMzMeP///////4iIiIiIj///////jMzMzMzMzMj///////+IiIiIiIj///////jM
zMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiIiP//////+HzMzMzMzMzHj///////iIiIiIiI////
///4zMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIiI////////jMzMzMzMzMzI///////4iIiIiI
iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMzMj////////4iIiIiP///////4zMzMzMzMzMyP///////4
iIiIiIiP//////jMzMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiI////////h8zMzMzMzMzMeP//
/////4iIiIiIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIj////////4fMzMzMzMzM
zHj///////+IiIiIiI//////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////iIiP////////+MzMzM
zMzMzMzI////////+IiIiIiP//////h8zMzMzMzMzMzMxmzMzMzMzMzMx4/////////4iP/////////4
fMzMzMzMzMzMx4////////+IiIiIj//////4fMzMzMzMzMzMzMZszMzMzMzMzMeP////////////////
////+MzMzMzMzMzMzMyP////////iIiIiP//////+HzMzMzMzMzMzMzGbMzMzMzMzMzH////////////
//////////fMzMzMzMzMzMzMeP////////iIiIj///////98zMzMzMzMzMzMxmzMzMzMzMzMyP//////
//////////////+HzMzMzMzMzMzMzHj/////////+IiP////////jMzMzMzMzMzMzMZszMzMzMzMzMj/
////////////////////jMzMzMzMzMzMzMzIj////////////////////4zMzMzMzMzMzMzGTMzMzMzM
zMzH////////////////////+HzMzMzMzMzMzMzMx4////////////////////+MzMzMzMzMzMzMxAzM
zMzMzMzMx/////////////////////jMzMzMzMzMzMzMzMyI///////////////////4fMzMzMzMzMzM
zMAGzMzMzMzMzMeP//////////////////+HzMzMzMzMzMzMzMzMeP//////////////////+HzMzMzM
zMzMzMxgBszMzMzMzMzHj//////////////////4fMzMzMzMzMzMzMzMzMeP//////////////////h8
zMzMzMzMzMzMYADMzMzMzMzMzI//////////////////+HzMzMzMzMzMzMzMzMzHj///////////////
///4zMzMzMzMzMzMzAAAbMzMzMzMzMyP/////////////////4fMzMzMzMzMzMzMzMzMzHj/////////
////////+MzMzMzMzMzMzMYAAEzMzMzMzMzMj/////////////////+MzMzMzMzMzMzMzMzMzMzIj///
/////////////4fMzMzMzMzMzMzEAAAGzMzMzMzMzHj////////////////4fMzMzMzMzMzMzMzMzMzM
x4////////////////+MzMzMzMzMzMzMYAAABMzMzMzMzMx4////////////////h8zMzMzMzMzMzMzM
zMzMzMx4///////////////4fMzMzMzMzMzMzEAAAABszMzMzMzMx4//////////////+HzMzMzMzMzM
zMzMzMzMzMzMx4//////////////+MzMzMzMzMzMzMYAAAAATMzMzMzMzMyP/////////////4fMzMzM
zMzMzMzMzMzMzMzMzMeI/////////////4fMzMzMzMzMzMzEAAAAAAbMzMzMzMzMeP////////////h8
zMzMzMzMzMzMzMzMzMzMzMzMeI////////////h8zMzMzMzMzMzMYAAAAAAAbMzMzMzMzMeP////////
//iHzMzMzMzMzMzMzMzMzMzMzMzMzMyI//////////+HzMzMzMzMzMzMxgAAAAAAAEzMzMzMzMzMeP//
//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMx4/////////4fMzMzMzMzMzMzMQAAAAAAAAGzMzMzMzM
zMeI//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4j//////4h8zMzMzMzMzMzMxgAAAAAAAAAGzM
zMzMzMzMx4iIiIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiIj/+Ih3zMzMzMzMzMzMzGAAAAAAAA
AAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx3iId8zMzMzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
</value>
</data>
</root>
@@ -712,7 +712,7 @@ namespace TemuKJD.WXForms.ShopForms
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!row.Cells["colShopAccount"].Value.ParseToString().Contains(txtFilterShopName.Text.Trim()))
{
@@ -720,7 +720,7 @@ namespace TemuKJD.WXForms.ShopForms
row.Cells["colSelect"].Value = false;
continue;
}
if (!row.Cells["colNotes"].Value.ParseToString().Contains(notes) && !notesLst.Contains(row.Cells["colNotes"].Value.ParseToString()))
if (!string.IsNullOrWhiteSpace(notes) && !notesLst.Contains(row.Cells["colNotes"].Value.ParseToString()))
{
row.Visible = false;
row.Cells["colSelect"].Value = false;
+54 -1
View File
@@ -36,6 +36,8 @@ namespace TemuKJD.WXForms.TalkForms
this.panel3 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.chkShowShopStatistics = new System.Windows.Forms.CheckBox();
this.chkShowAutoReplyNum = new System.Windows.Forms.CheckBox();
this.chkNotShowMessageWindow = new System.Windows.Forms.CheckBox();
this.cmbMessage = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
@@ -52,9 +54,11 @@ namespace TemuKJD.WXForms.TalkForms
this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn();
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colAutoReplyCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colWaitSend = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colWayBillError = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colAfterSale = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colPunishCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colScore = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.lblTalkCount = new System.Windows.Forms.Label();
@@ -127,7 +131,7 @@ namespace TemuKJD.WXForms.TalkForms
// lblVersionName
//
this.lblVersionName.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblVersionName.Location = new System.Drawing.Point(23685, 33);
this.lblVersionName.Location = new System.Drawing.Point(24753, 33);
//
// panel3
//
@@ -169,6 +173,8 @@ namespace TemuKJD.WXForms.TalkForms
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.chkShowShopStatistics);
this.splitContainer2.Panel1.Controls.Add(this.chkShowAutoReplyNum);
this.splitContainer2.Panel1.Controls.Add(this.chkNotShowMessageWindow);
this.splitContainer2.Panel1.Controls.Add(this.cmbMessage);
this.splitContainer2.Panel1.Controls.Add(this.label1);
@@ -184,6 +190,32 @@ namespace TemuKJD.WXForms.TalkForms
this.splitContainer2.SplitterDistance = 62;
this.splitContainer2.TabIndex = 0;
//
// chkShowShopStatistics
//
this.chkShowShopStatistics.AutoSize = true;
this.chkShowShopStatistics.Checked = true;
this.chkShowShopStatistics.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkShowShopStatistics.Location = new System.Drawing.Point(340, 38);
this.chkShowShopStatistics.Name = "chkShowShopStatistics";
this.chkShowShopStatistics.Size = new System.Drawing.Size(123, 21);
this.chkShowShopStatistics.TabIndex = 206;
this.chkShowShopStatistics.Text = "显示店铺统计信息";
this.chkShowShopStatistics.UseVisualStyleBackColor = true;
this.chkShowShopStatistics.Visible = false;
//
// chkShowAutoReplyNum
//
this.chkShowAutoReplyNum.AutoSize = true;
this.chkShowAutoReplyNum.Checked = true;
this.chkShowAutoReplyNum.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkShowAutoReplyNum.Location = new System.Drawing.Point(211, 38);
this.chkShowAutoReplyNum.Name = "chkShowAutoReplyNum";
this.chkShowAutoReplyNum.Size = new System.Drawing.Size(123, 21);
this.chkShowAutoReplyNum.TabIndex = 205;
this.chkShowAutoReplyNum.Text = "显示自动回复数量";
this.chkShowAutoReplyNum.UseVisualStyleBackColor = true;
this.chkShowAutoReplyNum.Visible = false;
//
// chkNotShowMessageWindow
//
this.chkNotShowMessageWindow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -283,6 +315,7 @@ namespace TemuKJD.WXForms.TalkForms
this.chkIsAutoReply.TabIndex = 0;
this.chkIsAutoReply.Text = "自动回复消息";
this.chkIsAutoReply.UseVisualStyleBackColor = true;
this.chkIsAutoReply.CheckedChanged += new System.EventHandler(this.chkIsAutoReply_CheckedChanged);
//
// splitContainer4
//
@@ -357,9 +390,11 @@ namespace TemuKJD.WXForms.TalkForms
this.colShopNotes,
this.colLoginStatus,
this.colMessage,
this.colAutoReplyCount,
this.colWaitSend,
this.colWayBillError,
this.colAfterSale,
this.colPunishCount,
this.colScore,
this.colCanUse});
this.dgvShop.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -432,6 +467,13 @@ namespace TemuKJD.WXForms.TalkForms
this.colMessage.ReadOnly = true;
this.colMessage.Width = 90;
//
// colAutoReplyCount
//
this.colAutoReplyCount.HeaderText = "自动回复";
this.colAutoReplyCount.Name = "colAutoReplyCount";
this.colAutoReplyCount.ReadOnly = true;
this.colAutoReplyCount.Width = 62;
//
// colWaitSend
//
this.colWaitSend.HeaderText = "待发货";
@@ -453,6 +495,13 @@ namespace TemuKJD.WXForms.TalkForms
this.colAfterSale.ReadOnly = true;
this.colAfterSale.Width = 38;
//
// colPunishCount
//
this.colPunishCount.HeaderText = "店铺违规";
this.colPunishCount.Name = "colPunishCount";
this.colPunishCount.ReadOnly = true;
this.colPunishCount.Width = 62;
//
// colScore
//
this.colScore.HeaderText = "评分";
@@ -1083,6 +1132,8 @@ namespace TemuKJD.WXForms.TalkForms
private DevComponents.DotNetBar.PanelEx btnRefreshMsgCount;
private System.Windows.Forms.Label lblTalkCount;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.CheckBox chkShowShopStatistics;
private System.Windows.Forms.CheckBox chkShowAutoReplyNum;
private UserComponent.UcDataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopLoginName;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
@@ -1090,9 +1141,11 @@ namespace TemuKJD.WXForms.TalkForms
private System.Windows.Forms.DataGridViewTextBoxColumn colShopNotes;
private System.Windows.Forms.DataGridViewLinkColumn colLoginStatus;
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
private System.Windows.Forms.DataGridViewTextBoxColumn colAutoReplyCount;
private System.Windows.Forms.DataGridViewTextBoxColumn colWaitSend;
private System.Windows.Forms.DataGridViewTextBoxColumn colWayBillError;
private System.Windows.Forms.DataGridViewTextBoxColumn colAfterSale;
private System.Windows.Forms.DataGridViewTextBoxColumn colPunishCount;
private System.Windows.Forms.DataGridViewTextBoxColumn colScore;
private System.Windows.Forms.DataGridViewCheckBoxColumn colCanUse;
}
+69 -10
View File
@@ -33,9 +33,19 @@ namespace TemuKJD.WXForms.TalkForms
{
public partial class WxTalkForm : BaseTalkForm
{
/// <summary>
/// 自动回复话术信息
/// </summary>
public static List<KeyValuePair<string, string>> LstTalkTemplatePair { get; set; } = null;
public Dictionary<string, int> dicTalkAutoReplyCount = new Dictionary<string, int>();
/// <summary>
/// 客服统计信息
/// </summary>
public ConcurrentList<WxShopKfStatistics> lstShopKfStatistics = new ConcurrentList<WxShopKfStatistics>();
/// <summary>
/// 店铺主页统计信息
/// </summary>
public ConcurrentList<WxTalkFormShopMainInfo> lstShopAfterSale = new ConcurrentList<WxTalkFormShopMainInfo>();
/// <summary>
@@ -99,13 +109,16 @@ namespace TemuKJD.WXForms.TalkForms
// 初始化自动回复话术
InitAutoReply();
dicTalkAutoReplyCount = NaiBa.Util.Helper.ConfigHelper.LoadConfig<Dictionary<string,int>>("wx_talk_auto_reply_count");
if (dicTalkAutoReplyCount == null)
dicTalkAutoReplyCount = new Dictionary<string, int>();
//this.chkIsAutoReLogin.CheckedChanged -= chkIsAutoReLogin_CheckedChanged;
//this.chkIsAutoReply.CheckedChanged -= chkIsAutoReply_CheckedChanged;
this.chkIsAutoReply.CheckedChanged -= chkIsAutoReply_CheckedChanged;
//this.txtAutoReplyText.TextChanged -= txtAutoReplyText_TextChanged;
//this.cmbMessage.SelectedIndexChanged -= cmbMessage_SelectedIndexChanged;
this.chkNotShowMessageWindow.CheckedChanged -= chkNotShowMessageWindow_CheckedChanged;
if (this.cmbMessage.Items.Contains(ChatConfig.ChatSettingConfig.MessageSound))
this.cmbMessage.SelectedItem = ChatConfig.ChatSettingConfig.MessageSound;
else
@@ -224,8 +237,8 @@ namespace TemuKJD.WXForms.TalkForms
//alert('hello world');
return 'success';
}
return 'fail';
}
return 'fail';
}
clickUser();";
var response1 = shop.Chat.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr1);
@@ -233,6 +246,19 @@ namespace TemuKJD.WXForms.TalkForms
if (response1.Result.Result.ParseToString() != "success")
{
Thread.Sleep(500);
jsStr1 = @"function clickUser() {
var users = document.getElementsByClassName('tab-list-item');
for (i=0; i<users.length; i++) {
if (users[i].innerHTML == '全部' && users[i].parentElement.innerHTML.indexOf('当前会话') !== -1) {
users[i].click();
}
}
}
clickUser();";
response1 = shop.Chat.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr1);
response1.Wait(2000);
Thread.Sleep(500);
continue;
}
Thread.Sleep(1500);
@@ -279,6 +305,18 @@ namespace TemuKJD.WXForms.TalkForms
// 删除队列里的消息
lstAutoReplayParam.RemoveAll(r => r.nickName == autoReplayParam.nickName);
var row = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(x => x.Cells["colShopId"].Value.ToString() == shop.ShopId);
if (row != null)
{
int AutoReplyCount = dicTalkAutoReplyCount.FirstOrDefault(t => t.Key == shop.ShopId).Value.ParseToInt();
AutoReplyCount++;
dicTalkAutoReplyCount[shop.ShopId] = AutoReplyCount;
NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_talk_auto_reply_count", dicTalkAutoReplyCount);
Invoke(new Action(() =>
{
row.Cells["colAutoReplyCount"].Value = AutoReplyCount;
}));
}
Thread.Sleep(Randomx.GetId(100, 200));
}
}
@@ -436,8 +474,10 @@ namespace TemuKJD.WXForms.TalkForms
}
r.Cells["colShopId"].Value = shop.ShopId; // 店铺ID
r.Cells["colShopName"].Value = shop.ShopAccount; // 店铺名称
r.Cells["colShopName"].Style.ForeColor = LstTagShop.Contains(shop.ShopId) ? Color.Green : Control.DefaultForeColor;
//r.Cells["colShopName"].Style.ForeColor = LstTagShop.Contains(shop.ShopId) ? Color.LightGreen : Control.DefaultForeColor;
r.Cells["colShopName"].Style.BackColor = LstTagShop.Contains(shop.ShopId) ? Color.LightGreen : (r.Tag is Color ? (Color)r.Tag : Color.White);
r.Cells["colShopNotes"].Value = shop.Notes; // 备注
r.Cells["colAutoReplyCount"].Value = dicTalkAutoReplyCount.FirstOrDefault(t => t.Key == shop.ShopId).Value.ParseToInt();
r.Cells["colLoginStatus"].Value = shop.LoginStatus == "登录成功" ? "在线" : "掉线"; // 登录状态
bool canUse = shop.LoginStatus == "登录成功";
(r.Cells["colLoginStatus"] as DataGridViewLinkCell).Style.ForeColor = canUse ? Color.Blue : Color.Red;
@@ -525,12 +565,14 @@ namespace TemuKJD.WXForms.TalkForms
if (r != null)
{
r.Cells["colMessage"].Value = msg;
r.Cells["colAfterSale"].Value = shopAfterSale.AfterSaleCount;
r.Cells["colAfterSale"].Style.ForeColor = shopAfterSale.AfterSaleCount > 0 ? Color.OrangeRed : Color.Black;
r.Cells["colWaitSend"].Value = shopAfterSale.WaitSendCount;
r.Cells["colWaitSend"].Style.ForeColor = shopAfterSale.WaitSendCount > 0 ? Color.OrangeRed : Color.Black;
r.Cells["colWaybillError"].Value = shopAfterSale.WaybillError;
r.Cells["colWaybillError"].Style.ForeColor = shopAfterSale.WaybillError > 0 ? Color.OrangeRed : Color.Black;
r.Cells["colAfterSale"].Value = shopAfterSale.AfterSaleCount;
r.Cells["colAfterSale"].Style.ForeColor = shopAfterSale.AfterSaleCount > 0 ? Color.OrangeRed : Color.Black;
r.Cells["colPunishCount"].Value = shopAfterSale.PunishCount;
r.Cells["colPunishCount"].Style.ForeColor = shopAfterSale.PunishCount > 0 ? Color.OrangeRed : Color.Black;
r.Cells["colScore"].Value = shopAfterSale.ShopScore.IsNullOrEmpty() ? "-" : shopAfterSale.ShopScore.ParseToString();
}
}
@@ -1036,6 +1078,20 @@ namespace TemuKJD.WXForms.TalkForms
{
ChatConfig.ChatSettingConfig.IsAutoReply = chkIsAutoReply.Checked;
ChatConfig.SaveChatSettingParam();
if (chkIsAutoReply.Checked == false)
{
dicTalkAutoReplyCount = new Dictionary<string, int>();
NaiBa.Util.Helper.ConfigHelper.SaveConfig<Dictionary<string, int>>("wx_talk_auto_reply_count", dicTalkAutoReplyCount);
}
else
{
var dgvRows = dgvShop.Rows.Cast<DataGridViewRow>();
foreach (var row in dgvRows)
{
row.Cells["colAutoReplyCount"].Value = 0;
}
}
}
private void txtAutoReplyText_TextChanged(object sender, EventArgs e)
@@ -1168,12 +1224,14 @@ namespace TemuKJD.WXForms.TalkForms
if (!LstTagShop.Contains(shop.ShopId))
{
LstTagShop.Add(shop.ShopId);
dgvShop.Rows[e.RowIndex].Cells["colShopName"].Style.ForeColor = Color.Green;
//dgvShop.Rows[e.RowIndex].Cells["colShopName"].Style.ForeColor = Color.LightGreen;
dgvShop.Rows[e.RowIndex].Cells["colShopName"].Style.BackColor = Color.LightGreen;
}
else
{
LstTagShop.Remove(shop.ShopId);
dgvShop.Rows[e.RowIndex].Cells["colShopName"].Style.ForeColor = DefaultForeColor;
dgvShop.Rows[e.RowIndex].Cells["colShopName"].Style.BackColor = dgvShop.Rows[e.RowIndex].Tag is Color ? (Color)dgvShop.Rows[e.RowIndex].Tag : Color.White;
}
NaiBa.Util.Helper.ConfigHelper.SaveConfig<List<string>>("wx_talk_tag_shop_list", LstTagShop);
}
@@ -1324,11 +1382,10 @@ namespace TemuKJD.WXForms.TalkForms
string notes = cmbFiltNotes.Text.Trim().Trim(';');
if (notes == "全部")
notes = "";
List<string> notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> notesLst = notes.Split(new string[] { ";", ";", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
foreach(DataGridViewRow row in dgvShop.Rows)
{
if ((row.Cells["colShopNotes"].Value.ParseToString().Contains(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString())) &&
row.Cells["colShopName"].Value.ParseToString().Contains(shopName))
if (string.IsNullOrEmpty(notes) || notesLst.Contains(row.Cells["colShopNotes"].Value.ParseToString()) && row.Cells["colShopName"].Value.ParseToString().Contains(shopName))
{
row.Visible = true;
}
@@ -1417,6 +1474,7 @@ namespace TemuKJD.WXForms.TalkForms
var afterCount = JsonHelper.JObjectParse(rst)["aftersaleAllRet"]["totalNum"].ParseToInt();
var waitSendCount = JsonHelper.JObjectParse(rst)["orderNumRet"]["pendingShipNum"].ParseToInt();
var waybillErrorCount = JsonHelper.JObjectParse(rst)["waybillErrorRet"]["totalNum"].ParseToInt();
var punishCount = JsonHelper.JObjectParse(rst)["punishRet"]["pendingNum"].ParseToInt();
shopMainInfo = new WxTalkFormShopMainInfo()
{
ShopId = shop.ShopId,
@@ -1424,6 +1482,7 @@ namespace TemuKJD.WXForms.TalkForms
AfterSaleCount = afterCount,
WaitSendCount = waitSendCount,
WaybillError = waybillErrorCount,
PunishCount = punishCount,
};
var shopScoreRst = WxShopStatisticsForm.GetShopScore(shop);
@@ -135,6 +135,9 @@
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colAutoReplyCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colWaitSend.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@@ -144,6 +147,9 @@
<metadata name="colAfterSale.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colPunishCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colScore.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>