1另外一种拼多多外部商品识别入库并上传到微信小店 2微信订单读取显示佣金 3微信上货裂变逻辑优化
This commit is contained in:
1 parent
3f6a91c164
commit
7601f5b2f3
13 files changed
+1300
-605
No files matched your search
@@ -29,7 +29,6 @@ namespace TemuKJD.BLL
|
||||
try
|
||||
{
|
||||
frontProdInfo = JsonHelper.DeserializeJsonToObject<PDDFrontProductInfo>(outProdJson);
|
||||
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
@@ -387,7 +386,388 @@ namespace TemuKJD.BLL
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 拼多多前端采集转拼多多后台采集数据
|
||||
/// </summary>
|
||||
/// <param name="outProdJson"></param>
|
||||
/// <param name="UpdateOldData"></param>
|
||||
/// <param name="specialProdType"></param>
|
||||
/// <returns></returns>
|
||||
public string PddFrontToPddBackConvert2(string outProdJson, bool UpdateOldData = true, string specialProdType = null)
|
||||
{
|
||||
PDDFrontProductInfo2 frontProdInfo = null;
|
||||
try
|
||||
{
|
||||
frontProdInfo = JsonHelper.DeserializeJsonToObject<PDDFrontProductInfo2>(outProdJson);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "转换错误" + ex.Message;
|
||||
}
|
||||
if (frontProdInfo == null || frontProdInfo.goods.goods_id == null)
|
||||
{
|
||||
return "商品数据信息为空";
|
||||
}
|
||||
|
||||
KJDDBProduct dbProd = new KJDDBProduct() { size_json = "{}" };
|
||||
PDDProductInfo prodInfo = new PDDProductInfo()
|
||||
{
|
||||
source_json = JsonHelper.JObjectParse(outProdJson),
|
||||
sale_count = frontProdInfo.goods.sold_quantity.ParseToLong().ParseToString(),
|
||||
sale_count_text = frontProdInfo.goods.side_sales_tip,
|
||||
};
|
||||
prodInfo.chance_id = null;
|
||||
prodInfo.chance_refere = null;
|
||||
prodInfo.chance_tab = null;
|
||||
prodInfo.decoration = new PDDProductDecorationInfo() { floor_list = new List<PDDProdfloorItem>() };
|
||||
|
||||
// 商品详情
|
||||
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 = frontProdInfo.goods.cat_id.ParseToInt();
|
||||
prodInfo.detail.cat_ids = new List<int?>() { frontProdInfo.goods.cat_id_1.ParseToInt(), frontProdInfo.goods.cat_id_2.ParseToInt(), frontProdInfo.goods.cat_id_3.ParseToInt(), frontProdInfo.goods.cat_id_4.ParseToInt() };
|
||||
prodInfo.detail.check_status = 9;
|
||||
//prodInfo.detail.check_type = null;
|
||||
//prodInfo.detail.client_id = null;
|
||||
prodInfo.detail.commit_deleted = 0;
|
||||
//prodInfo.detail.commit_extension = null;
|
||||
//prodInfo.detail.community_group_buying = null;
|
||||
prodInfo.detail.cost_template_id = 0;
|
||||
//prodInfo.detail.country = null;
|
||||
prodInfo.detail.country_id = 0;
|
||||
//prodInfo.detail.created_at = null;
|
||||
//prodInfo.detail.creator_name = null;
|
||||
prodInfo.detail.customizable = 0;
|
||||
prodInfo.detail.customs = "";
|
||||
prodInfo.detail.damage_claim = 0;
|
||||
prodInfo.detail.delivery_one_day = 0;
|
||||
//prodInfo.detail.delivery_type = null;
|
||||
//prodInfo.detail.elec_goods_attributes = null;
|
||||
prodInfo.detail.estimate_quantity = 0;
|
||||
prodInfo.detail.event_type = 0;
|
||||
prodInfo.detail.extend_warranty_dto = new extend_warranty_dto_item() { extend_warranty = 0 };
|
||||
//prodInfo.detail.fabric = null;
|
||||
//prodInfo.detail.fabric_content = null;
|
||||
prodInfo.detail.galleries = new List<gallery_item>();
|
||||
int galleryIndex = 0;
|
||||
foreach (var frontGallery in frontProdInfo.goods.gallery)
|
||||
{
|
||||
if (frontGallery.type == 6)
|
||||
{
|
||||
prodInfo.detail.galleries.Add(new gallery_item()
|
||||
{
|
||||
url = frontGallery.url,
|
||||
type = frontGallery.type,
|
||||
width = 0,
|
||||
height = 0,
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
//string getImgError;
|
||||
//var image = GetHtml.GetUrlImg(frontGallery.url.Replace("https://", "http://"), out getImgError);
|
||||
//if (!string.IsNullOrEmpty(getImgError))
|
||||
//{
|
||||
// return getImgError;
|
||||
//}
|
||||
prodInfo.detail.galleries.Add(new gallery_item()
|
||||
{
|
||||
url = frontGallery.url,
|
||||
type = frontGallery.type,
|
||||
//width = image.Width,
|
||||
//height = image.Height,
|
||||
});
|
||||
}
|
||||
galleryIndex++;
|
||||
}
|
||||
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 = frontProdInfo.goods.share_desc;
|
||||
prodInfo.detail.goods_id = frontProdInfo.goods.goods_id;
|
||||
prodInfo.detail.goods_name = frontProdInfo.goods.goods_name;
|
||||
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 = frontProdInfo.goods.hd_thumb_url;
|
||||
prodInfo.detail.id = 0; // 编辑id,随意填写
|
||||
prodInfo.detail.image_url = frontProdInfo.goods.image_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 = frontProdInfo.goods.mall_id;
|
||||
prodInfo.detail.mall_info = new mall_info_item() { mall_name = frontProdInfo.mall_entrance?.mall_data?.mall_name };
|
||||
prodInfo.detail.market_price = frontProdInfo.price.line_price;
|
||||
prodInfo.detail.max_group_price = frontProdInfo.price.max_group_price;
|
||||
prodInfo.detail.min_group_price = frontProdInfo.price.min_group_price;
|
||||
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 = "";
|
||||
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 = frontProdInfo.goods.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;
|
||||
prodInfo.detail.sku = new List<sku_item>();
|
||||
foreach (var frontSku in frontProdInfo.sku)
|
||||
{
|
||||
sku_item skuInfo = new sku_item()
|
||||
{
|
||||
id = 0,
|
||||
sku_id = frontSku.sku_id,
|
||||
sku_sn = null,
|
||||
carnival_price = 0,
|
||||
init_quantity = 0,
|
||||
is_onsale = 1,
|
||||
limit_quantity = 999999,
|
||||
multi_price = (int)frontSku.group_price.ParseToDecimal(),
|
||||
multi_price_in_yuan = null,
|
||||
price = (int)frontSku.normal_price.ParseToDecimal(),
|
||||
price_in_yuan = null,
|
||||
quantity = 0,
|
||||
reserve_quantity = 0,
|
||||
weight = 0,
|
||||
thumb_url = frontSku.thumb_url,
|
||||
thumb_url_file_id = null,
|
||||
thumb_url_status = null,
|
||||
thumb_url_is_deleted = null,
|
||||
quantity_delta = frontSku.quantity,
|
||||
spec = new List<spec_item>(),
|
||||
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 = "",
|
||||
};
|
||||
//List<string> specIds = frontSku.spec.Split(',').ToList();
|
||||
//List<string> specKeys = frontSku.spec_keys.Split(';').ToList();
|
||||
//List<string> specValues = frontSku.spec_values.Split(';').ToList();
|
||||
//for (int i = 0; i < specIds.Count; i++)
|
||||
//{
|
||||
// skuInfo.spec.Add(new spec_item()
|
||||
// {
|
||||
// parent_name = specKeys[i],
|
||||
// spec_id = specIds[i].ParseToLong(),
|
||||
// spec_name = specValues[i],
|
||||
// });
|
||||
//}
|
||||
foreach (var frontSpec in frontSku.specs)
|
||||
{
|
||||
skuInfo.spec.Add(new spec_item()
|
||||
{
|
||||
parent_id = frontSpec.spec_key_id,
|
||||
parent_name = frontSpec.spec_key,
|
||||
spec_id = frontSpec.spec_value_id,
|
||||
spec_name = frontSpec.spec_value,
|
||||
});
|
||||
}
|
||||
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 = frontProdInfo.goods.thumb_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>();
|
||||
foreach (var frontProp in frontProdInfo.goods.goods_property)
|
||||
{
|
||||
goods_propertie_item propInfo = new goods_propertie_item();
|
||||
propInfo.name = frontProp.key;
|
||||
propInfo.values = new List<value_item>();
|
||||
foreach (var frontPropValue in frontProp.values)
|
||||
{
|
||||
propInfo.values.Add(new value_item() { value = frontPropValue, raw_value = frontPropValue, unit = "" });
|
||||
}
|
||||
prodInfo.property.goods_properties.Add(propInfo);
|
||||
}
|
||||
dbProd.main_img = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1).url;
|
||||
dbProd.product_json = JsonHelper.SerializeObject(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.goods?.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);
|
||||
if (!string.IsNullOrEmpty(specialProdType))
|
||||
data += "&special_prod_type=" + HttpUtility.UrlEncode(specialProdType, 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 "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 聚水潭转pdd格式
|
||||
/// </summary>
|
||||
|
||||
Reference in new issue
Block a user