diff --git a/AllBase/AllBase.csproj b/AllBase/AllBase.csproj index 5c16dd9..26403c4 100644 --- a/AllBase/AllBase.csproj +++ b/AllBase/AllBase.csproj @@ -178,7 +178,7 @@ - + diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 4df0df1..53cdce9 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -27,7 +27,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 900; + public static int VersionCount = 909; //public static int VersionCount = 613; /// diff --git a/AllBase/Model/Config/WxShopAfterSaleInfo.cs b/AllBase/Model/Config/WxShopAfterSaleInfo.cs deleted file mode 100644 index f04e99b..0000000 --- a/AllBase/Model/Config/WxShopAfterSaleInfo.cs +++ /dev/null @@ -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; } - } -} diff --git a/AllBase/Model/Config/WxTalkFormShopMainInfo.cs b/AllBase/Model/Config/WxTalkFormShopMainInfo.cs new file mode 100644 index 0000000..55c8648 --- /dev/null +++ b/AllBase/Model/Config/WxTalkFormShopMainInfo.cs @@ -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; } + /// + /// 待发货 orderNumRet.pendingShipNum + /// + public int? WaitSendCount { get; set; } + /// + /// 物流异常 waybillErrorRet.totalNum + /// + public int? WaybillError { get; set; } + /// + /// 售后 aftersaleAllRet.totalNum + /// + public int? AfterSaleCount { get; set; } + /// + /// 店铺违规 punishRet.pendingNum + /// + public int? PunishCount { get; set; } + + public decimal? ShopScore { get; set; } + public string err_msg { get; set; } + public DateTime RefreshTime { get; set; } + } +} diff --git a/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs b/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs index 0bee9c5..1047963 100644 --- a/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs +++ b/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs @@ -17,6 +17,10 @@ namespace AllBase.Model.Result.PDDResult public string name { get; set; } public int? ref_pid { get; set; } public List values { get; set; } + /// + /// 对应微信输入类型 + /// + //public int? wx_input_type { get; set; } } public class value_item { diff --git a/AllBase/Model/Result/WXResult/WXGetEditProductInfoLite.cs b/AllBase/Model/Result/WXResult/WXGetEditProductInfoLite.cs index c9cb333..1c22092 100644 --- a/AllBase/Model/Result/WXResult/WXGetEditProductInfoLite.cs +++ b/AllBase/Model/Result/WXResult/WXGetEditProductInfoLite.cs @@ -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 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 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 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 headImg { get; set; } = new List(); - public List category { get; set; } = new List(); + public List category { get; set; } = new List(); public List param { get; set; } = new List(); public List qualificationList { get; set; } public List 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 detailImg { get; set; } = new List(); // [ "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 diff --git a/TEMUKJD/BLL/PDDProdFormConverter.cs b/TEMUKJD/BLL/PDDProdFormConverter.cs index 6043b67..e3caefb 100644 --- a/TEMUKJD/BLL/PDDProdFormConverter.cs +++ b/TEMUKJD/BLL/PDDProdFormConverter.cs @@ -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(); 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(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(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(); + //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(); + prodInfo.detail.cat_id = dbProd.cat_id.ParseToInt(); + prodInfo.detail.cat_ids = new List(); + //微信商品的类目直接输入,上传的时候不用。 + 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(); + 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(); + 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(); + 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(); + 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(); + 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(); + //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(), + // 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(); + + 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(); + 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; + } + } } } diff --git a/TEMUKJD/KJD.csproj b/TEMUKJD/KJD.csproj index b827807..3fa3b9d 100644 --- a/TEMUKJD/KJD.csproj +++ b/TEMUKJD/KJD.csproj @@ -240,6 +240,12 @@ WXProductForm.cs + + Form + + + WXShopMultiLoginForm.cs + Form @@ -1157,6 +1163,9 @@ WXProductForm.cs + + WXShopMultiLoginForm.cs + WxShopStatisticsForm.cs diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.Designer.cs index 373784e..6e4eb0f 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.Designer.cs @@ -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; } } \ No newline at end of file diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.Designer.cs index 34ce6be..cdaf935 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.Designer.cs @@ -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; diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs index cb3bc06..a2debe9 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs @@ -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(); } diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs index 5c4bba5..c9db46f 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs @@ -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; diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs index 121e7cf..9f3a239 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs @@ -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 mainImgLst3 = new List(); - if (!prodObj["jstProd"].IsJTokenNullOrEmpty()) + if (dbProd.product_get_type_text == "厂商直采" && !prodObj["jstProd"].IsJTokenNullOrEmpty()) { var jstProd = JsonHelper.DeserializeJsonToObject(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().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(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(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 { diff --git a/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs b/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs index 74ea3bb..da96c06 100644 --- a/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs +++ b/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs @@ -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); diff --git a/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.Designer.cs b/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.Designer.cs index 022e0e7..f645a24 100644 --- a/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.Designer.cs +++ b/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.Designer.cs @@ -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; } diff --git a/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.cs b/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.cs index 82778cf..c904f37 100644 --- a/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.cs +++ b/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.cs @@ -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) diff --git a/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.resx b/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.resx index b03e5d3..e098ea8 100644 --- a/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.resx +++ b/TEMUKJD/WXForms/AdminForms/WXAdminAccountForm.resx @@ -150,6 +150,9 @@ True + + True + True diff --git a/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.Designer.cs b/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.Designer.cs index 6612d22..6acdd4c 100644 --- a/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.Designer.cs +++ b/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.Designer.cs @@ -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; } } \ No newline at end of file diff --git a/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.cs b/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.cs index e3ddfdd..4106c63 100644 --- a/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.cs +++ b/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.cs @@ -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 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 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 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); + })); + }); + } + } } } diff --git a/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.resx b/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.resx index 117b3c0..eecd5b5 100644 --- a/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.resx +++ b/TEMUKJD/WXForms/AdminForms/WXAdminShopListForm.resx @@ -207,4 +207,182 @@ True + + + + 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== + + \ No newline at end of file diff --git a/TEMUKJD/WXForms/AdminForms/WXAdminShopLoginForm.cs b/TEMUKJD/WXForms/AdminForms/WXAdminShopLoginForm.cs index dcf6bd9..d3fea7a 100644 --- a/TEMUKJD/WXForms/AdminForms/WXAdminShopLoginForm.cs +++ b/TEMUKJD/WXForms/AdminForms/WXAdminShopLoginForm.cs @@ -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('"" //addBtnItem.innerHTML += """" //addBtnItem.innerHTML = addBtnItem.innerHTML.replace(""分享 "", ""分享 ""); var newDiv = document.createElement(""div""); - newDiv.innerHTML = ""回采<\a>""; + newDiv.innerHTML = ""回采<\a>采集<\a>""; addBtnItem.lastChild.appendChild(newDiv); } } diff --git a/TEMUKJD/WXForms/AdminForms/WXProdComplateForm.cs b/TEMUKJD/WXForms/AdminForms/WXProdComplateForm.cs index 204ba95..5ec0811 100644 --- a/TEMUKJD/WXForms/AdminForms/WXProdComplateForm.cs +++ b/TEMUKJD/WXForms/AdminForms/WXProdComplateForm.cs @@ -676,7 +676,7 @@ namespace TemuKJD.WXForms.AdminForms string notes = textBox1.Text.Trim().Trim(';'); if (notes == "全部") notes = ""; - List notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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; } diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs index 825b24e..e5e1fa5 100644 --- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs +++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs @@ -1127,6 +1127,7 @@ namespace TemuKJD.WXForms.ProductForms this.cmbSourceType.Items.AddRange(new object[] { "", "厂商直采", + "微信店采", "店铺采集", "机会商品", "以图搜品", diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs index 3ecff43..f255d19 100644 --- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs +++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs @@ -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(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 aiCateIdLst = new List(); + // 聚水潭商品已识别类目使用类目缓存 + // 微信商品使用类目缓存 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(); // 商品属性值 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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"; diff --git a/TEMUKJD/WXForms/ProductForms/WXProdCouponOrderBoomForm.cs b/TEMUKJD/WXForms/ProductForms/WXProdCouponOrderBoomForm.cs index b968f9e..1c34a66 100644 --- a/TEMUKJD/WXForms/ProductForms/WXProdCouponOrderBoomForm.cs +++ b/TEMUKJD/WXForms/ProductForms/WXProdCouponOrderBoomForm.cs @@ -956,7 +956,7 @@ namespace TemuKJD.WXForms.ProductForms string notes = cmbFilterShopNotes.Text.Trim().Trim(';'); if (notes == "全部") notes = ""; - List notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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; } diff --git a/TEMUKJD/WXForms/ProductForms/WXProdPreSaleForm.cs b/TEMUKJD/WXForms/ProductForms/WXProdPreSaleForm.cs index 7ed524a..3f7b844 100644 --- a/TEMUKJD/WXForms/ProductForms/WXProdPreSaleForm.cs +++ b/TEMUKJD/WXForms/ProductForms/WXProdPreSaleForm.cs @@ -954,7 +954,7 @@ namespace TemuKJD.WXForms.ProductForms string notes = cmbFilterShopNotes.Text.Trim().Trim(';'); if (notes == "全部") notes = ""; - List notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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; } diff --git a/TEMUKJD/WXForms/ProductForms/WXProdSyncForm.cs b/TEMUKJD/WXForms/ProductForms/WXProdSyncForm.cs index 2659e26..8e02a10 100644 --- a/TEMUKJD/WXForms/ProductForms/WXProdSyncForm.cs +++ b/TEMUKJD/WXForms/ProductForms/WXProdSyncForm.cs @@ -696,7 +696,7 @@ namespace TemuKJD.WXForms.ProductForms string notes = cmbFilterShopNotes.Text.Trim().Trim(';'); if (notes == "全部") notes = ""; - List notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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 notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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; } diff --git a/TEMUKJD/WXForms/ShopForms/WXShopBrowserObject.cs b/TEMUKJD/WXForms/ShopForms/WXShopBrowserObject.cs index 242c8d3..54144ac 100644 --- a/TEMUKJD/WXForms/ShopForms/WXShopBrowserObject.cs +++ b/TEMUKJD/WXForms/ShopForms/WXShopBrowserObject.cs @@ -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(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(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 complateDbProdExistLst = JsonHelper.DeserializeJsonToList(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 "商品采集失败!"; } } } diff --git a/TEMUKJD/WXForms/ShopForms/WXShopListForm.cs b/TEMUKJD/WXForms/ShopForms/WXShopListForm.cs index c8e9f43..2721f0e 100644 --- a/TEMUKJD/WXForms/ShopForms/WXShopListForm.cs +++ b/TEMUKJD/WXForms/ShopForms/WXShopListForm.cs @@ -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; diff --git a/TEMUKJD/WXForms/ShopForms/WXShopLoginForm.cs b/TEMUKJD/WXForms/ShopForms/WXShopLoginForm.cs index 6f0bfa4..e280258 100644 --- a/TEMUKJD/WXForms/ShopForms/WXShopLoginForm.cs +++ b/TEMUKJD/WXForms/ShopForms/WXShopLoginForm.cs @@ -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); } } diff --git a/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.Designer.cs b/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.Designer.cs new file mode 100644 index 0000000..f24736c --- /dev/null +++ b/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.Designer.cs @@ -0,0 +1,355 @@ +namespace TemuKJD.WXForms.ShopForms +{ + partial class WXShopMultiLoginForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + 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; + } +} \ No newline at end of file diff --git a/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.cs b/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.cs new file mode 100644 index 0000000..4c2549b --- /dev/null +++ b/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.cs @@ -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 lstShopCompany = new ConcurrentList(); + private ConcurrentList lstSwitchShop = new ConcurrentList(); + + + 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() + { + + } + + /// + /// 初始化CEF并登录主店铺 + /// + 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 cookieLst = new List(); + try + { + if (shop != null) + { + cookieLst = JsonHelper.DeserializeJsonToList(shop.Cookies.ParseToString()); + if (cookieLst == null) + cookieLst = new List(); + } + } + 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 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 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 + } +} diff --git a/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.resx b/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.resx new file mode 100644 index 0000000..a65de0c --- /dev/null +++ b/TEMUKJD/WXForms/ShopForms/WXShopMultiLoginForm.resx @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + + + 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== + + + \ No newline at end of file diff --git a/TEMUKJD/WXForms/ShopForms/WxShopStatisticsForm.cs b/TEMUKJD/WXForms/ShopForms/WxShopStatisticsForm.cs index 6e244af..7c179bd 100644 --- a/TEMUKJD/WXForms/ShopForms/WxShopStatisticsForm.cs +++ b/TEMUKJD/WXForms/ShopForms/WxShopStatisticsForm.cs @@ -712,7 +712,7 @@ namespace TemuKJD.WXForms.ShopForms string notes = cmbFilterShopNotes.Text.Trim().Trim(';'); if (notes == "全部") notes = ""; - List notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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; diff --git a/TEMUKJD/WXForms/TalkForms/WxTalkForm.Designer.cs b/TEMUKJD/WXForms/TalkForms/WxTalkForm.Designer.cs index 830fa55..f63c842 100644 --- a/TEMUKJD/WXForms/TalkForms/WxTalkForm.Designer.cs +++ b/TEMUKJD/WXForms/TalkForms/WxTalkForm.Designer.cs @@ -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; } diff --git a/TEMUKJD/WXForms/TalkForms/WxTalkForm.cs b/TEMUKJD/WXForms/TalkForms/WxTalkForm.cs index 20279f0..2b9930b 100644 --- a/TEMUKJD/WXForms/TalkForms/WxTalkForm.cs +++ b/TEMUKJD/WXForms/TalkForms/WxTalkForm.cs @@ -33,9 +33,19 @@ namespace TemuKJD.WXForms.TalkForms { public partial class WxTalkForm : BaseTalkForm { + /// + /// 自动回复话术信息 + /// public static List> LstTalkTemplatePair { get; set; } = null; + public Dictionary dicTalkAutoReplyCount = new Dictionary(); + /// + /// 客服统计信息 + /// public ConcurrentList lstShopKfStatistics = new ConcurrentList(); + /// + /// 店铺主页统计信息 + /// public ConcurrentList lstShopAfterSale = new ConcurrentList(); /// @@ -99,13 +109,16 @@ namespace TemuKJD.WXForms.TalkForms // 初始化自动回复话术 InitAutoReply(); + dicTalkAutoReplyCount = NaiBa.Util.Helper.ConfigHelper.LoadConfig>("wx_talk_auto_reply_count"); + if (dicTalkAutoReplyCount == null) + dicTalkAutoReplyCount = new Dictionary(); //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 r.nickName == autoReplayParam.nickName); + var row = dgvShop.Rows.Cast().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(); + NaiBa.Util.Helper.ConfigHelper.SaveConfig>("wx_talk_auto_reply_count", dicTalkAutoReplyCount); + } + else + { + var dgvRows = dgvShop.Rows.Cast(); + 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>("wx_talk_tag_shop_list", LstTagShop); } @@ -1324,11 +1382,10 @@ namespace TemuKJD.WXForms.TalkForms string notes = cmbFiltNotes.Text.Trim().Trim(';'); if (notes == "全部") notes = ""; - List notesLst = notes.Split(new string[] { ";", ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); + List 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); diff --git a/TEMUKJD/WXForms/TalkForms/WxTalkForm.resx b/TEMUKJD/WXForms/TalkForms/WxTalkForm.resx index b76bbb2..ffc2c12 100644 --- a/TEMUKJD/WXForms/TalkForms/WxTalkForm.resx +++ b/TEMUKJD/WXForms/TalkForms/WxTalkForm.resx @@ -135,6 +135,9 @@ True + + True + True @@ -144,6 +147,9 @@ True + + True + True