步步为盈
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

389 lines
17 KiB

using BBWY.Server.Model.Dto;
using Jd.Api;
using Jd.Api.Request;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BBWY.Test
{
public class JDProductAPITest
{
public void GetSkus(IJdClient client, string token, string spu)
{
var req_skuList = new SkuReadSearchSkuListRequest()
{
pageSize = 50,//50
field = "logo,saleAttrs,status,created,barCode,categoryId,multiCateProps"
};
req_skuList.wareId = spu;
var response = client.Execute(req_skuList, token, DateTime.Now.ToLocalTime());
Console.WriteLine(JsonConvert.SerializeObject(response));
}
public void QueryTouTu(IJdClient client, string token)
{
var req = new TransparentImageReadFindByWareIdAndColorIdRequest();
var mainSpu = "10022905456671";
req.wareId = long.Parse(mainSpu);
req.colorId = "0000000000";
var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine(JsonConvert.SerializeObject(response));
}
/// <summary>
/// 查询SKU细节图
/// </summary>
public void FindImageByColor(IJdClient client, string token, string spu)
{
var req = new ImageReadFindImagesByColorRequest();
req.wareId = long.Parse(spu);
req.colorId = "0000000000";
var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine(JsonConvert.SerializeObject(response));
}
public void ShangJiaTest(IJdClient client, string token)
{
var mainSpu = "10022612803735";
var giftSpu = "10023500913672";
var barCode = "";
var categoryId = "";
IList<JToken> multiCateProps = null;
var selectGiftSkuList = new List<ProductSkuResponse>();
#region 取主商品sku信息
{
var req = new SkuReadSearchSkuListRequest()
{
pageSize = 50,//50
field = "logo,saleAttrs,status,created,barCode,categoryId,multiCateProps"
};
req.wareId = mainSpu;
var res = client.Execute(req, token, DateTime.Now.ToLocalTime());
var skuList = ((JArray)res.Json["jingdong_sku_read_searchSkuList_responce"]["page"]["data"]).Select(s => new ProductSkuResponse()
{
Id = s.Value<string>("skuId"),
ProductId = s.Value<string>("wareId"),
Price = s.Value<decimal>("jdPrice"),
Title = s["saleAttrs"] != null ? string.Join("-", s["saleAttrs"].Select(a => a["attrValueAlias"][0].ToString())) : string.Empty,
Logo = $"https://img13.360buyimg.com/n9/s80x80_{s.Value<string>("logo")}",
State = s.Value<int>("status"),
//CreateTime = s.Value<long>("created").StampToDateTime(),
Source = s
}).ToList();
barCode = skuList[0].Source.Value<string>("barCode");
categoryId = skuList[0].Source.Value<string>("categoryId");
multiCateProps = skuList[0].Source["multiCateProps"] != null ? skuList[0].Source["multiCateProps"].ToList() : null;
}
#endregion
#region 取赠品信息
{
var giftTitleList = new List<string>() { "粉丝价", "放心购", "闪电退款", "免费", "价格保护", "极速审核", "质量保护", "运费险" };
var req = new SkuReadSearchSkuListRequest()
{
pageSize = 50,//50
field = "logo,saleAttrs,status,created,barCode,categoryId,multiCateProps"
};
req.wareId = giftSpu;
var res = client.Execute(req, token, DateTime.Now.ToLocalTime());
var skuList = ((JArray)res.Json["jingdong_sku_read_searchSkuList_responce"]["page"]["data"]).Select(s => new ProductSkuResponse()
{
Id = s.Value<string>("skuId"),
ProductId = s.Value<string>("wareId"),
Price = s.Value<decimal>("jdPrice"),
Title = s["saleAttrs"] != null ? string.Join("-", s["saleAttrs"].Select(a => a["attrValueAlias"][0].ToString())) : string.Empty,
Logo = $"https://img13.360buyimg.com/n9/s80x80_{s.Value<string>("logo")}",
State = s.Value<int>("status"),
//CreateTime = s.Value<long>("created").StampToDateTime(),
Source = s
}).ToList();
foreach (var sku in skuList)
{
if (!giftTitleList.Contains(sku.Title))
continue;
selectGiftSkuList.Add(sku);
}
}
#endregion
#region 获取细节图
//IList<JToken> imagesByColorList = new List<JToken>();
//{
// var req = new ImageReadFindImagesByColorRequest();
// req.wareId = long.Parse(mainSpu);
// req.colorId = "0000000000";
// var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
// if (response.Json == null)
// response.Json = JObject.Parse(response.Body);
// imagesByColorList = response.Json["jingdong_image_read_findImagesByColor_responce"]["images"].ToList();
//}
#endregion
//#region 获取透图
//JToken toutuJToken = null;
//{
// var req = new TransparentImageReadFindByWareIdAndColorIdRequest();
// req.wareId = long.Parse(mainSpu);
// req.colorId = "0000000000";
// var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
// if (response.Json == null)
// response.Json = JObject.Parse(response.Body);
// toutuJToken = response.Json["jingdong_transparentImage_read_findByWareIdAndColorId_responce"]["imageList"];
//}
//#endregion
#region 获取销售属性
IList<JToken> colorSaleAttrs = null;
{
var req = new CategoryReadFindAttrsByCategoryIdUnlimitCateRequest();
req.cid = long.Parse(categoryId);
req.attributeType = 4;
req.field = "attrValueList,attrGroup";
var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine("销售属性");
if (response.Json == null)
response.Json = JObject.Parse(response.Body);
var colorProperty = response.Json["jingdong_category_read_findAttrsByCategoryIdUnlimitCate_responce"]["findattrsbycategoryidunlimitcate_result"].FirstOrDefault(j => j.Value<string>("name") == "颜色");
if (colorProperty == null)
throw new Exception("缺少颜色属性");
colorSaleAttrs = colorProperty["attrValueList"].ToList();
}
#endregion
#region 增量保存sku
List<string> newSkuList = new List<string>();
{
var skusParamList = new List<SkuWriteUpdateSkusItem>();
var updateSkuTitleParamList = new List<WareWriteUpdateWareSaleAttrvalueAliasRequestItem>();
var transparentImageWriteAddRequestList = new List<TransparentImageWriteAddRequest>();
var imageWriteUpdateRequestList = new List<ImageWriteUpdateRequest>();
var takeColorIndex = colorSaleAttrs.Count() - 1;
for (var i = 0; i < selectGiftSkuList.Count(); i++)
{
var giftSku = selectGiftSkuList[i];
var colorProperty = colorSaleAttrs[takeColorIndex];
var p = new SkuWriteUpdateSkusItem()
{
type = "com.jd.pop.ware.ic.api.domain.Sku",
wareId = long.Parse(mainSpu),
//skuId = long.Parse(sku.Id),
jdPrice = giftSku.Price,
stockNum = 500,
barCode = barCode,
saleAttrs = new List<SkuWriteUpdateSkusItemSaleAttrs>()
{
new SkuWriteUpdateSkusItemSaleAttrs()
{
type = "com.jd.pop.ware.ic.api.domain.Prop",
attrId = colorProperty.Value<string>("attId"),
attrValues = new List<string>() { colorProperty.Value<string>("id") },
index = takeColorIndex
}
}
};
p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
if (multiCateProps != null && multiCateProps.Count() > 0)
{
foreach (var multiCateProp in multiCateProps)
{
var m = new SkuWriteUpdateSkusItemSaleAttrs();
m.type = "com.jd.pop.ware.ic.api.domain.Prop";
m.attrId = multiCateProp.Value<string>("attrId");
m.attrValues = multiCateProp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
p.multiCateProps.Add(m);
}
}
//修改标题参数
updateSkuTitleParamList.Add(new WareWriteUpdateWareSaleAttrvalueAliasRequestItem()
{
attrId = p.saleAttrs[0].attrId,
attrValues = p.saleAttrs[0].attrValues,
attrValueAlias = new List<string>() { giftSku.Title }
});
////修改透图参数
//var transparentImageWriteAddRequest = new TransparentImageWriteAddRequest()
//{
// wareId = long.Parse(mainSpu),
// colorId = colorProperty.Value<string>("id"),
// //colorId = "0000000000",
// imageUrl = toutuJToken.Value<string>("imageUrl")
//};
//transparentImageWriteAddRequestList.Add(transparentImageWriteAddRequest);
//修改商品细节图参数
var imgUrlBuilder = new StringBuilder();
var imgIndexBuilder = new StringBuilder();
imgUrlBuilder.Append($"{giftSku.Logo.Substring(giftSku.Logo.IndexOf("jfs"))},");
imgIndexBuilder.Append("1,");
//for (var ii = 0; ii <= 3; ii++)
//{
// var imgJToken = imagesByColorList[ii];
// imgUrlBuilder.Append($"{imgJToken.Value<string>("imgUrl")},");
// imgIndexBuilder.Append($"{imgJToken.Value<int>("imgIndex") + 1},");
//}
imageWriteUpdateRequestList.Add(new ImageWriteUpdateRequest()
{
wareId = long.Parse(mainSpu),
colorId = colorProperty.Value<string>("id"),
imgUrl = imgUrlBuilder.ToString().Trim(','),
imgIndex = imgIndexBuilder.ToString().Trim(',')
});
takeColorIndex--;
skusParamList.Add(p);
}
#region 上架sku
{
var req = new SkuWriteUpdateSkusRequest();
req.wareId = long.Parse(mainSpu);
req.skus = skusParamList;
Console.WriteLine("上架请求参数");
Console.WriteLine(JsonConvert.SerializeObject(req));
var res = client.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine();
Console.WriteLine("上架返回内容");
Console.WriteLine(JsonConvert.SerializeObject(res));
if (res.Json == null)
res.Json = JObject.Parse(res.Body);
newSkuList = res.Json["jingdong_sku_write_updateSkus_responce"]["skuList"].ToList().Select(x => x.Value<string>("skuId")).ToList();
}
#endregion
#region 改名
{
Console.WriteLine();
Console.WriteLine();
var request = new WareWriteUpdateWareSaleAttrvalueAliasRequest()
{
wareId = long.Parse(mainSpu),
props = updateSkuTitleParamList
};
Console.WriteLine("改名请求参数");
Console.WriteLine(JsonConvert.SerializeObject(request));
var res = client.Execute(request, token, DateTime.Now.ToLocalTime());
Console.WriteLine();
Console.WriteLine("改名返回内容");
Console.WriteLine(JsonConvert.SerializeObject(res));
}
#endregion
#region 修改细节图
foreach (var request in imageWriteUpdateRequestList)
{
Console.WriteLine("修改细节图请求参数");
Console.WriteLine(JsonConvert.SerializeObject(request));
var res = client.Execute(request, token, DateTime.Now.ToLocalTime());
Console.WriteLine();
Console.WriteLine("修改细节图返回内容");
Console.WriteLine(JsonConvert.SerializeObject(res));
Console.WriteLine();
}
#endregion
//#region 修改透图
//foreach (var request in transparentImageWriteAddRequestList)
//{
// Console.WriteLine("修改透图请求参数");
// Console.WriteLine(JsonConvert.SerializeObject(request));
// var res = client.Execute(request, token, DateTime.Now.ToLocalTime());
// Console.WriteLine();
// Console.WriteLine("修改透图返回内容");
// Console.WriteLine(JsonConvert.SerializeObject(res));
// Console.WriteLine();
//}
//#endregion
}
#endregion
#region 删除SKU
foreach (var sku in newSkuList)
{
var req = new SkuWriteDeleteSkuRequest();
req.skuId = long.Parse(sku);
var res = client.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine();
Console.WriteLine("删除sku返回结果");
Console.WriteLine(JsonConvert.SerializeObject(res));
Console.WriteLine();
}
#endregion
}
public void (IJdClient client, string token)
{
var mainSpu = "10022905456671";
var request = new WareWriteUpdateWareSaleAttrvalueAliasRequest();
request.wareId = long.Parse(mainSpu);
request.props = new List<WareWriteUpdateWareSaleAttrvalueAliasRequestItem>();
request.props.Add(new WareWriteUpdateWareSaleAttrvalueAliasRequestItem()
{
attrId = "1001050679",
attrValues = new List<string>() { "2912651180" },
attrValueAlias = new List<string>() { "粉丝价" }
});
request.props.Add(new WareWriteUpdateWareSaleAttrvalueAliasRequestItem()
{
attrId = "1001050679",
attrValues = new List<string>() { "2912655473" },
attrValueAlias = new List<string>() { "放心购" }
});
request.props.Add(new WareWriteUpdateWareSaleAttrvalueAliasRequestItem()
{
attrId = "1001050679",
attrValues = new List<string>() { "2912660446" },
attrValueAlias = new List<string>() { "闪电退款" }
});
Console.WriteLine("请求参数");
Console.WriteLine(JsonConvert.SerializeObject(request));
var res = client.Execute(request, token, DateTime.Now.ToLocalTime());
Console.WriteLine();
Console.WriteLine("返回内容");
Console.WriteLine(JsonConvert.SerializeObject(res));
}
}
}