聚水潭上传微信小店相关逻辑

This commit is contained in:
wule committed 2026-01-29 20:54:17 +08:00
1 parent 625f4d9420
commit b4fa5cacb1
26 files changed
+2570 -487

No files matched your search

+447 -1
View File
@@ -2,6 +2,7 @@
using AllBase.Model.Result;
using AllBase.Model.Result.PDDResult;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -13,7 +14,14 @@ namespace TemuKJD.BLL
{
public class PDDProdFormConverter
{
public string PddConvert(string outProdJson, bool UpdateOldData = true, string specialProdType = null)
/// <summary>
/// 拼多多前端采集转拼多多后台采集数据
/// </summary>
/// <param name="outProdJson"></param>
/// <param name="UpdateOldData"></param>
/// <param name="specialProdType"></param>
/// <returns></returns>
public string PddFrontToPddBackConvert(string outProdJson, bool UpdateOldData = true, string specialProdType = null)
{
PDDFrontProductInfo frontProdInfo = null;
try
@@ -377,5 +385,443 @@ namespace TemuKJD.BLL
}
return "";
}
public PDDProductInfo JstPddProdToPddConvert(out string convertRst, KJDDBProduct dbProd)
{
convertRst = "";
try
{
var prodObj = JsonHelper.JObjectParse(dbProd.product_json);
if (prodObj["pddData"].IsJTokenNullOrEmpty())
{
convertRst = "缺少指定的数据格式";
return null;
}
var jstGoodsObj = prodObj["pddData"];
var jstPddPropMapLst = JsonHelper.DeserializeJsonToList<PDDPropRefPidNameMap>(JsonHelper.SerializeObject(prodObj["pddPropMap"]));
//{"goodsId":"2016474712785620994","warehouseGoodsId":"C7108311198A4217B022DCA87B6A5863","spuCode":"3783056947394249077","skus":[{"skuId":"2016692758292738050","warehouseSkuId":"C742B3FCB0364448AF92332F8F6005A6","skuCode":"ZH-XP-YWQYW-010"},{"skuId":"2016692758317903874","warehouseSkuId":"703E87F1B7774C14923821A57EEE6EFA","skuCode":"ZH-XP-YWQYW-010-111"},{"skuId":"2016692758338875394","warehouseSkuId":"895EDCDF6ECC4FAE8AD4DB9503719002","skuCode":"ZH-XP-YWQYW-010-222"}]}
var jstSecretCodeLst = JsonHelper.JObjectParse(dbProd.sku_secret_json);
PDDProductInfo prodInfo = new PDDProductInfo()
{
sale_count = dbProd.sale_count.ParseToString(),
sale_count_text = dbProd.sale_count_text,
};
prodInfo.chance_id = null;
prodInfo.chance_refere = null;
prodInfo.chance_tab = null;
prodInfo.decoration = null;
// 商品详情
prodInfo.detail = new PDDProductDetailInfo();
prodInfo.detail.allergy_refund = 0;
prodInfo.detail.allowed_region = new List<object>();
//prodInfo.detail.appeal_status = null;
//prodInfo.detail.app_id = null;
//prodInfo.detail.app_name = null;
//prodInfo.detail.bad_claim_text = null;
prodInfo.detail.bad_fruit_claim = 0;
//prodInfo.detail.business_source_type = null;
prodInfo.detail.can_appeal = null;
prodInfo.detail.card_verification_list = null;
prodInfo.detail.cats = new List<string>();
prodInfo.detail.cat_id = jstGoodsObj["catId"].ParseToInt();
prodInfo.detail.cat_ids = new List<int?>();
var catLst = (jstGoodsObj["categoryData"] as JArray).Select(a => a.ParseToInt()).ToList();
foreach (var cId in catLst)
{
prodInfo.detail.cat_ids.Add(cId);
}
prodInfo.detail.check_status = 9;
//prodInfo.detail.check_type = null;
//prodInfo.detail.client_id = null;
prodInfo.detail.commit_deleted = 0;
//prodInfo.detail.commit_extension = null;
//prodInfo.detail.community_group_buying = null;
prodInfo.detail.cost_template_id = 0;
//prodInfo.detail.country = null;
prodInfo.detail.country_id = 0;
//prodInfo.detail.created_at = null;
//prodInfo.detail.creator_name = null;
prodInfo.detail.customizable = 0;
prodInfo.detail.customs = "";
prodInfo.detail.damage_claim = 0;
prodInfo.detail.delivery_one_day = 0;
//prodInfo.detail.delivery_type = null;
//prodInfo.detail.elec_goods_attributes = null;
prodInfo.detail.estimate_quantity = 0;
prodInfo.detail.event_type = 0;
prodInfo.detail.extend_warranty_dto = new extend_warranty_dto_item() { extend_warranty = 0 };
//prodInfo.detail.fabric = null;
//prodInfo.detail.fabric_content = null;
prodInfo.detail.galleries = new List<gallery_item>();
foreach (var imgObj in jstGoodsObj["carouselGallery"])
{
prodInfo.detail.galleries.Add(new gallery_item()
{
url = imgObj.ParseToString(),
type = 1,
});
}
foreach (var imgObj in jstGoodsObj["detailGallery"])
{
prodInfo.detail.galleries.Add(new gallery_item()
{
url = imgObj.ParseToString(),
type = 2,
});
}
prodInfo.detail.gold_price_template_id = null;
prodInfo.detail.gold_price_type = null;
prodInfo.detail.goods_certificate = null;
prodInfo.detail.goods_commit_check = new List<object>();
prodInfo.detail.goods_desc = jstGoodsObj["goodsDesc"].ParseToString();
// 聚水潭为string,散列取数值
prodInfo.detail.goods_id = jstGoodsObj["itemSpuId"].ParseToString().GetHashCode();
prodInfo.detail.goods_name = jstGoodsObj["itemName"].ParseToString();
prodInfo.detail.goods_name_prefix = "";
prodInfo.detail.goods_pattern = 8;
prodInfo.detail.goods_property_list = null;
prodInfo.detail.goods_sn = null;
prodInfo.detail.goods_srv_templates = new List<object>();
prodInfo.detail.goods_trade_attr = null;
prodInfo.detail.goods_travel_attr = null;
prodInfo.detail.goods_type = 1;
prodInfo.detail.groups = new group_item() { single_price = 0, group_price = 0, customer_num = 2, buy_limit = 999999, order_limit = 999999 };
// 复用前面已经填写过的
prodInfo.detail.hd_thumb_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
// 编辑id,随意填写
prodInfo.detail.id = 0;
// 复用前面已经填写过的
prodInfo.detail.image_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
prodInfo.detail.instruction_vo = new instruction_vo_item() { template_status = -1 };
prodInfo.detail.invoice_mode = null;
prodInfo.detail.invoice_mode_sub_type = null;
prodInfo.detail.invoice_status = 0;
prodInfo.detail.is_all_weight_same = true;
prodInfo.detail.is_app = 0;
prodInfo.detail.is_bangdan = 0;
prodInfo.detail.is_card_secret = false;
prodInfo.detail.is_certificate_provide = 0;
prodInfo.detail.is_customized = 0;
prodInfo.detail.is_customs = 0;
prodInfo.detail.is_deposit = false;
prodInfo.detail.is_draft = false;
prodInfo.detail.is_folt = 0;
prodInfo.detail.is_general_trade = 0;
prodInfo.detail.is_gold_price_matched = null;
prodInfo.detail.is_goods_copy = null;
prodInfo.detail.is_goods_decoration = 1;
prodInfo.detail.is_group_pre_sale = 0;
prodInfo.detail.is_only_for_remote_area = false;
prodInfo.detail.is_pre_sale = 0;
prodInfo.detail.is_refundable = 1;
prodInfo.detail.is_refundable_fifteen_day = 0;
prodInfo.detail.is_shop = 1;
prodInfo.detail.is_size_change_casually = 0;
prodInfo.detail.is_sku_pre_sale = 0;
prodInfo.detail.is_sku_shipment = 0;
prodInfo.detail.is_small_group = null;
prodInfo.detail.is_spring_festival_open_tag = false;
prodInfo.detail.is_two_num_group = false;
prodInfo.detail.is_warranty_one_year = 0;
prodInfo.detail.is_wms = 0;
prodInfo.detail.is_wp_service = 0;
prodInfo.detail.lack_of_weight_claim = 0;
prodInfo.detail.last_commit_check_status = 2;
prodInfo.detail.list_desc = new List<object>();
prodInfo.detail.local_service_id_list = null;
prodInfo.detail.mai_jia_zi_ti = null;
// 聚水潭没有
prodInfo.detail.mall_id = 0;
// 聚水潭没有
prodInfo.detail.mall_info = new mall_info_item();
// 聚水潭没有此处随意填
prodInfo.detail.market_price = 0;
// 聚水潭没有此处随意填
prodInfo.detail.max_group_price = 0;
// 聚水潭没有此处随意填
prodInfo.detail.min_group_price = 0;
prodInfo.detail.must_check_type = 0;
prodInfo.detail.name_prefix = "";
prodInfo.detail.origin_country_id = 0;
prodInfo.detail.origin_country_name = "";
// 货号
prodInfo.detail.out_goods_sn = jstSecretCodeLst["goodsId"].ParseToString();
// 货号直接替换成加密的,注意千万不要入库
dbProd.ext_code = prodInfo.detail.out_goods_sn;
if (prodInfo.detail.out_goods_sn.IsNullOrEmpty())
{
convertRst = "货号不存在";
return null;
}
prodInfo.detail.out_source_goods_id = null;
prodInfo.detail.out_source_type = null;
prodInfo.detail.oversea_goods = null;
prodInfo.detail.oversea_type = 0;
prodInfo.detail.owner = "主账号";
prodInfo.detail.owner_name = "";
prodInfo.detail.paper_length = null;
prodInfo.detail.paper_net_weight = null;
prodInfo.detail.paper_plies_num = null;
prodInfo.detail.paper_width = null;
prodInfo.detail.pre_sale_time = 0;
prodInfo.detail.privacy_delivery = 0;
prodInfo.detail.processing_charges = null;
prodInfo.detail.processing_charges_type = null;
prodInfo.detail.promised_delivery_seconds = null;
prodInfo.detail.purchase_info_supply = 0;
prodInfo.detail.qualification_id_list = new List<object>();
prodInfo.detail.quan_guo_lian_bao = 0;
prodInfo.detail.quick_refund = 0;
prodInfo.detail.reason = null;
prodInfo.detail.region_limit = 1;
prodInfo.detail.reject_reason = null;
prodInfo.detail.reject_status = null;
prodInfo.detail.same_city_template_id = 0;
prodInfo.detail.schedule_sale = new schedule_sale_item() { sale_type = 0 };
prodInfo.detail.second_hand = 0;
prodInfo.detail.sf_markup_template_sn = null;
prodInfo.detail.shang_men_an_zhuang = null;
// 聚水潭没有
prodInfo.detail.share_desc = "";
prodInfo.detail.shipment_limit_second = 172800;
prodInfo.detail.shoes_template_id = null;
prodInfo.detail.shop_group_id = null;
prodInfo.detail.shop_group_name = null;
prodInfo.detail.show_activity_price = false;
prodInfo.detail.size_parent_spec_id = null;
prodInfo.detail.size_spec_id = null;
if (jstGoodsObj["skuInfo"].IsJTokenNullOrEmpty() || jstGoodsObj["skuInfo"]["goodsSkuDetail"].IsJTokenNullOrEmpty())
{
convertRst = "缺少sku信息";
return null;
}
prodInfo.detail.sku = new List<sku_item>();
foreach (JObject jSku in jstGoodsObj["skuInfo"]["goodsSkuDetail"])
{
sku_item skuInfo = new sku_item()
{
id = 0,
// 聚水潭为string,散列取数值
sku_id = jSku["baseSkuId"].ParseToString().GetHashCode(),
sku_sn = null,
carnival_price = 0,
init_quantity = 0,
is_onsale = 1,
limit_quantity = 999999,
multi_price = (int)(jSku["supplyPrice"].ParseToDecimal() * 100),
multi_price_in_yuan = null,
price = (int)(jSku["supplyPrice"].ParseToDecimal() * 100 + 100),
price_in_yuan = null,
quantity = 0,
reserve_quantity = 0,
weight = (int)(jSku["weight"].ParseToDecimal() * 1000),
thumb_url = jSku["pic"].ParseToString(),
thumb_url_file_id = null,
thumb_url_status = null,
thumb_url_is_deleted = null,
quantity_delta = 0,
spec = new List<spec_item>(),
// sku货号
out_sku_sn = "",
batch_id = null,
priority = 1,
ware_id = 0,
ware_biz_type = null,
advice_price = null,
length = null,
oversea_sku = null,
cspu_id = null,
child_skus = null,
ref_sku_commit_id = 0,
start_time = null,
end_time = null,
sku_srv_templates = null,
calendar_rule_id = null,
hot_live_group = null,
pre_sale_time = 0,
out_source_sku_id = null,
dd_grocery_sku_params = null,
sku_extended_attribute_dtos = null,
sku_basic_property_dtos = null,
spec_note_map = null,
delivery_schedule_dtos = null,
shipment_limit_second_list = null,
sku69_code = "",
};
foreach (JObject jSpec in jSku["skus"])
{
skuInfo.spec.Add(new spec_item()
{
parent_id = jSpec["kid"].ParseToLong(),
parent_name = jSpec["k"].ParseToString(),
spec_id = jSpec["vid"].ParseToLong(),
spec_name = jSpec["v"].ParseToString(),
});
}
var itemNo = jSku["itemNo"].ParseToString();
var skuId = jstSecretCodeLst["skus"].FirstOrDefault(s => s["skuCode"].ParseToString() == itemNo)?["skuId"].ParseToString();
skuInfo.out_sku_sn = skuId;
if (skuId.IsNullOrEmpty())
{
convertRst = "SKU货号不存在";
return null;
}
prodInfo.detail.sku.Add(skuInfo);
}
prodInfo.detail.sku_type = null;
prodInfo.detail.song_huo_an_zhuang = null;
prodInfo.detail.song_huo_ru_hu = null;
prodInfo.detail.source = 0;
prodInfo.detail.spu_id = null;
prodInfo.detail.spu_version = null;
prodInfo.detail.submit_time = 0;
prodInfo.detail.thawed_refund = 0;
prodInfo.detail.third_type = 0;
// 复用前面填过的主图
prodInfo.detail.thumb_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
prodInfo.detail.tiny_name = "";
prodInfo.detail.transport_type_list = null;
prodInfo.detail.two_pieces_discount = 99;
prodInfo.detail.user_source = 1;
prodInfo.detail.warehouse = "";
prodInfo.detail.warm_tips = "";
prodInfo.detail.zhi_huan_bu_xiu = 0;
prodInfo.size = null;
prodInfo.material1 = null;
prodInfo.material3 = null;
prodInfo.property = new PDDProductPropertyInfo();
prodInfo.property.sku_properties = new object();
prodInfo.property.goods_properties = new List<goods_propertie_item>();
if (!jstGoodsObj["goodsProperties"].IsJTokenNullOrEmpty())
{
foreach (JObject jProp in jstGoodsObj["goodsProperties"])
{
string name = "";
if (!jProp["propName"].IsJTokenNullOrEmpty())
name = jProp["propName"].ParseToString();
else
{
try
{
if (jstPddPropMapLst != null)
name = jstPddPropMapLst.FirstOrDefault(p => p.ref_pid.ParseToString() == jProp["refPid"].ParseToString())?.name;
if (string.IsNullOrEmpty(name))
name = jProp["refPid"].ParseToString();
}
catch
{
}
}
goods_propertie_item propInfo = new goods_propertie_item();
propInfo.name = name;
propInfo.ref_pid = jProp["refPid"].ParseToInt();
string propStr = JsonHelper.SerializeObject(jProp);
propInfo.values = new List<value_item>();
if (propStr.Contains("multipleValue"))
{
foreach (var propValueObj in jProp["multipleValue"])
{
propInfo.values.Add(new value_item()
{
value = propValueObj["label"].ParseToString(),
raw_value = propValueObj["label"].ParseToString(),
vid = propValueObj["value"].ParseToLong(),
unit = ""
});
}
}
else
{
var label = BaseRegex.GetStringJson(ref propStr, "label");
var valueId = BaseRegex.GetStringJson(ref propStr, "value").ParseToLong();
propInfo.values.Add(new value_item()
{
value = label,
raw_value = label,
vid = valueId,
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;
//bool isExist = false;
//var existUrl = BaseClass.BuildPDDObjString("product/get_product_list");
//string existData = UserLogin.GetSignaturex() + "&search_spu=" + prodInfo.detail.goods_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"))
// html = GetHtml.PostUtf8(existUrl, existData);
//if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200"))
//{
// if (html.Contains("\"data\":[") && !html.Contains("\"data\":[]"))
// isExist = true;
//}
//else
//{
// return "入库失败,产品数据库已存在商品查询失败";
//}
//var url = BaseClass.BuildPDDObjString("product/add_product");
//if (isExist)
//{
// if (UpdateOldData)
// {
// url = BaseClass.BuildPDDObjString("product/mdy_product");
// }
// else
// {
// return "已存在相同id商品,跳过";
// }
//}
//var data = Work.UserLogin.GetSignaturex() +
// "&from_shop_id=" + frontProdInfo.mall?.mall_id +
// "&spu_id=" + prodInfo.detail.goods_id.ParseToString() +
// "&skc_id=" + prodInfo.detail.goods_id.ParseToString() +
// "&price_text=" + prodInfo.detail.sku.Min(s => s.multi_price).ParseToInt() * 0.01m + "-" + prodInfo.detail.sku.Max(s => s.multi_price).ParseToInt() * 0.01m +
// "&main_cat_id=" + (prodInfo.detail.cat_ids?.FirstOrDefault(c => c != null)).ParseToString() +
// "&main_cat_name=" + HttpUtility.UrlEncode((prodInfo.detail.cat_ids?.FirstOrDefault(c => c != null)).ParseToString(), Encoding.UTF8) + // 取不到catname直接用catid,上货时候再取
// "&cat_id=" + prodInfo.detail.cat_id.ParseToString() +
// "&cat_name=" + HttpUtility.UrlEncode(prodInfo.detail.cat_id.ParseToString(), Encoding.UTF8) + // 取不到catname直接用catid,上货时候再取
// "&ext_code=" + HttpUtility.UrlEncode(prodInfo.detail.out_goods_sn, Encoding.UTF8) +
// "&product_name=" + HttpUtility.UrlEncode(prodInfo.detail.goods_name, Encoding.UTF8) +
// "&product_json=" + HttpUtility.UrlEncode(dbProd.product_json, Encoding.UTF8) +
// "&size_json=" + HttpUtility.UrlEncode(dbProd.size_json, Encoding.UTF8) +
// "&main_img=" + HttpUtility.UrlEncode(dbProd.main_img, Encoding.UTF8) +
// "&sale_count=" + HttpUtility.UrlEncode(prodInfo.sale_count, Encoding.UTF8) +
// "&sale_count_text=" + HttpUtility.UrlEncode(prodInfo.sale_count_text, Encoding.UTF8) +
// "&product_get_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"))
//{
// return "商品采集保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg");
//}
//return "";
}
catch (Exception ex)
{
convertRst = "转换错误 " + ex.Message;
return null;
}
}
}
}
+126
View File
@@ -328,5 +328,131 @@ namespace TemuKJD.BLL
result = GetProxyHtml.ReadResponse(response);
return result;
}
public static string e57PostResponse(string _url, string _data, string referer)
{
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request;
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol =
ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
}
else
request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
//request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
//request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36";
request.ContentType = "application/json";
//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"; //request.Accept = "*/*";
//request.Referer = referer;
//request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
//request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
request.Headers.Add("Sec-Fetch-Site", @"none");
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
request.Headers.Add("Sec-Fetch-User", @"?1");
request.Headers.Add("Sec-Fetch-Dest", @"document");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _data;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = GetProxyHtml.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = GetProxyHtml.ReadResponse(response);
return result;
}
public static string e57GetResponse(string _url, string referer)
{
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request;
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol =
ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
}
else
request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
request.Headers.Add("Sec-Fetch-Site", @"none");
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
request.Headers.Add("Sec-Fetch-User", @"?1");
request.Headers.Add("Sec-Fetch-Dest", @"document");
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = GetProxyHtml.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = GetProxyHtml.ReadResponse(response);
return result;
}
}
}
+140
View File
@@ -0,0 +1,140 @@
using AllBase;
using AllBase.Model.Param;
using AllBase.Model.Result;
using AllBase.Model.Result.PDDResult;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TemuKJD.BLL
{
public class WxProdFormConverter
{
/// <summary>
/// 聚水潭拼多多数据格式转换成外部服务器格式
/// </summary>
/// <returns></returns>
public string JstPddConvertToWxOutServer(KJDDBProduct dbProd)
{
OutServerGoodsParam outGoodsParam = new OutServerGoodsParam();
try
{
var prodObj = JsonHelper.JObjectParse(dbProd.product_json);
var jstGoodsObj = prodObj["pddData"];
var jstPddPropMapLst = JsonHelper.DeserializeJsonToList<PDDPropRefPidNameMap>(JsonHelper.SerializeObject(prodObj["pddPropMap"]));
outGoodsParam.categoryId = dbProd.wx_cat_leaf.ParseToString();
outGoodsParam.catId = dbProd.wx_cat_leaf;
outGoodsParam.createBy = "";
outGoodsParam.createTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
outGoodsParam.descImgs = JsonHelper.SerializeObject(jstGoodsObj["detailGallery"]);
outGoodsParam.descText = jstGoodsObj["goodsDesc"].ParseToString();
outGoodsParam.detailImgList = JsonHelper.DeserializeJsonToList<string>(outGoodsParam.descImgs);
outGoodsParam.extStatus = 1;
outGoodsParam.freightPrice = null;
outGoodsParam.goodsIds = null;
outGoodsParam.groupKey = null;
outGoodsParam.headImgs = JsonHelper.SerializeObject(jstGoodsObj["carouselGallery"]);
outGoodsParam.headImgList = JsonHelper.DeserializeJsonToList<string>(outGoodsParam.headImgs);
outGoodsParam.headImg = outGoodsParam.headImgList.FirstOrDefault();
outGoodsParam.isDelete = 0;
outGoodsParam.merchantId = null; // dbProd.skc_id;
outGoodsParam.platform = "WEISHOP";
outGoodsParam.platformCode = "WEISHOP";
outGoodsParam.productAttrs = new List<osProductAttrParam>();
if (!jstGoodsObj["goodsProperties"].IsJTokenNullOrEmpty())
{
foreach (JObject jProp in jstGoodsObj["goodsProperties"])
{
string name = "";
string value = "";
if (!jProp["propName"].IsJTokenNullOrEmpty())
name = jProp["propName"].ParseToString();
else
{
try
{
if (jstPddPropMapLst != null)
name = jstPddPropMapLst.FirstOrDefault(p => p.ref_pid.ParseToString() == jProp["refPid"].ParseToString())?.name;
if (string.IsNullOrEmpty(name))
name = jProp["refPid"].ParseToString();
}
catch
{
}
}
string propStr = JsonHelper.SerializeObject(jProp);
value = BaseRegex.GetStringJson(ref propStr, "label");
outGoodsParam.productAttrs.Add(new osProductAttrParam() { attrKey = name, attrValue = value });
}
}
else
{
outGoodsParam.productAttrs.Add(new osProductAttrParam { attrKey = "品牌", attrValue = "无品牌" });
}
outGoodsParam.remark = "";
outGoodsParam.selectionQuareGoodsExtList = null;
outGoodsParam.selectionQuareGoodsSkus = null;
outGoodsParam.shipType = 20;
outGoodsParam.skus = new List<osSkuParam>();
if (!jstGoodsObj["skuInfo"].IsJTokenNullOrEmpty() && !jstGoodsObj["skuInfo"]["goodsSkuDetail"].IsJTokenNullOrEmpty())
{
foreach (JObject jSku in jstGoodsObj["skuInfo"]["goodsSkuDetail"])
{
osSkuParam skuParam = new osSkuParam()
{
latestPrice = jSku["supplyPrice"].ParseToString(),
latestPriceTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
latestUpdateTime = null,
platform = null,
platformSkuId = null,
remark = "",
salePrice = (jSku["supplyPrice"].ParseToDecimal() * 100).ParseToInt(),
skuAttrs = new List<skuAttrParam>(),
skuCode = jSku["itemNo"].ParseToString(), //jSku["realItemNo"].ParseToString(), // realItemNo有的商品没有
skuId = null,
skuImags = null,
skuWeight = (jSku["weight"].ParseToDecimal() * 1000).ParseToInt(),
status = 1,
stockNum = jSku["quantity"].ParseToInt(),
supplierId = dbProd.skc_id.ParseToLong(), // null
thumbImg = jSku["pic"].ParseToString(),
title = "",
warehouseSkuId = jSku["baseSkuId"].ParseToString(),
};
foreach (JObject jSpec in jSku["skus"])
{
skuParam.skuAttrs.Add(new skuAttrParam()
{
attrKey = jSpec["k"].ParseToString(),
attrValue = jSpec["v"].ParseToString(),
});
}
skuParam.title = string.Join(";", skuParam.skuAttrs.Select(s => s.attrValue));
outGoodsParam.skus.Add(skuParam);
}
}
outGoodsParam.spuCode = jstGoodsObj["styleCode"].ParseToString();
outGoodsParam.status = 1;
outGoodsParam.subTitle = jstGoodsObj["goodsName"].ParseToString();
outGoodsParam.supplier = dbProd.from_shop_name;
outGoodsParam.supplierId = dbProd.skc_id.ParseToLong(); // dbProd.from_shop_id
outGoodsParam.title = jstGoodsObj["goodsName"].ParseToString();
outGoodsParam.updateBy = null;
outGoodsParam.updateTime = null;
outGoodsParam.warehouseDisablePlatformList = null;
outGoodsParam.warehouseGoodsId = dbProd.spu_id;
outGoodsParam.warehouseNum = dbProd.skc_id;
return "{\"success\":true,\"msg\":\"\",\"data\":" + JsonHelper.SerializeObject(outGoodsParam) + "}";
}
catch (Exception ex)
{
return "{\"success\":false,\"msg\":\"" + ex.Message + "\"}";
}
}
}
}