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; 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, string spu) { var req = new TransparentImageReadFindByWareIdAndColorIdRequest(); req.wareId = long.Parse(spu); req.colorId = "0000000000"; var response = client.Execute(req, token, DateTime.Now.ToLocalTime()); Console.WriteLine(JsonConvert.SerializeObject(response)); } /// /// 查询SKU细节图 /// 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 = "10022905456671"; var giftSpu = "10023500913672"; var barCode = ""; var categoryId = ""; IList multiCateProps = null; var selectGiftSkuList = new List(); #region 取主商品信息 { 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("skuId"), ProductId = s.Value("wareId"), Price = s.Value("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("logo")}", State = s.Value("status"), //CreateTime = s.Value("created").StampToDateTime(), Source = s }).ToList(); barCode = skuList[0].Source.Value("barCode"); categoryId = skuList[0].Source.Value("categoryId"); multiCateProps = skuList[0].Source["multiCateProps"] != null ? skuList[0].Source["multiCateProps"].ToList() : null; } #endregion #region 取赠品信息 { var giftTitleList = new List() { "粉丝价", "放心购", "闪电退款", "免费", "价格保护", "极速审核", "质量保护", "运费险" }; 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("skuId"), ProductId = s.Value("wareId"), Price = s.Value("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("logo")}", State = s.Value("status"), //CreateTime = s.Value("created").StampToDateTime(), Source = s }).ToList(); foreach (var sku in skuList) { if (!giftTitleList.Contains(sku.Title)) continue; selectGiftSkuList.Add(sku); } } #endregion #region 获取销售属性 IList 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("name") == "颜色"); if (colorProperty == null) throw new Exception("缺少颜色属性"); colorSaleAttrs = colorProperty["attrValueList"].ToList(); } #endregion #region 增量保存sku { var skusParamList = new List(); var takeColorIndex = colorSaleAttrs.Count() - 10; for (var i = 0; i < 3; i++) { var giftSku = selectGiftSkuList[i]; var p = new SkuWriteUpdateSkusItem() { wareId = long.Parse(mainSpu), //skuId = long.Parse(sku.Id), jdPrice = giftSku.Price, stockNum = 500, barCode = barCode, }; var colorProperty = colorSaleAttrs[takeColorIndex]; p.saleAttrs = new List(); var m = new SkuWriteUpdateSkusItemSaleAttrs(); m.type = "com.jd.pop.ware.ic.api.domain.Prop"; m.attrId = colorProperty.Value("attId"); m.attrValues = new List() { colorProperty.Value("id") }; m.attrValueAlias = new List() { giftSku.Title //colorProperty.Value("name") }; m.index = takeColorIndex; p.saleAttrs.Add(m); takeColorIndex--; //foreach (var saleAttr in colorSaleAttrs) //{ // var m = new SkuWriteUpdateSkusItemSaleAttrs(); // m.attrId = saleAttr.Value("attrId"); // m.attrValues = saleAttr.Value("attrValues").Select(x => x.ToString()).ToList(); // p.saleAttrs.Add(m); //} //p.multiCateProps = new List(); //if (multiCateProps != null && multiCateProps.Count() > 0) //{ // foreach (var multiCateProp in multiCateProps) // { // var m = new SkuWriteUpdateSkusItemSaleAttrs(); // m.attrId = multiCateProp.Value("attrId"); // m.attrValues = multiCateProp.Value("attrValues").Select(x => x.ToString()).ToList(); // p.multiCateProps.Add(m); // } //} skusParamList.Add(p); } 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)); } #endregion } public void 修改属性别名(IJdClient client, string token) { var mainSpu = "10022905456671"; var request = new WareWriteUpdateWareSaleAttrvalueAliasRequest(); request.wareId = long.Parse(mainSpu); request.props = new List(); request.props.Add(new WareWriteUpdateWareSaleAttrvalueAliasRequestItem() { attrId = "1001050679", attrValues = new List() { "2912651180" }, attrValueAlias = new List() { "粉丝价" } }); request.props.Add(new WareWriteUpdateWareSaleAttrvalueAliasRequestItem() { attrId = "1001050679", attrValues = new List() { "2912655473" }, attrValueAlias = new List() { "放心购" } }); request.props.Add(new WareWriteUpdateWareSaleAttrvalueAliasRequestItem() { attrId = "1001050679", attrValues = new List() { "2912660446" }, attrValueAlias = new List() { "闪电退款" } }); 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)); } } }