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)); } /// /// 查询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 = "10022612803735"; var giftSpu = "10023500913672"; var barCode = ""; var categoryId = ""; IList multiCateProps = null; var selectGiftSkuList = new List(); #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("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 imagesByColorList = new List(); //{ // 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 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 List newSkuList = new List(); { var skusParamList = new List(); var updateSkuTitleParamList = new List(); var transparentImageWriteAddRequestList = new List(); var imageWriteUpdateRequestList = new List(); 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() { new SkuWriteUpdateSkusItemSaleAttrs() { type = "com.jd.pop.ware.ic.api.domain.Prop", attrId = colorProperty.Value("attId"), attrValues = new List() { colorProperty.Value("id") }, index = takeColorIndex } } }; p.multiCateProps = new List(); 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("attrId"); m.attrValues = multiCateProp.Value("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() { giftSku.Title } }); ////修改透图参数 //var transparentImageWriteAddRequest = new TransparentImageWriteAddRequest() //{ // wareId = long.Parse(mainSpu), // colorId = colorProperty.Value("id"), // //colorId = "0000000000", // imageUrl = toutuJToken.Value("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("imgUrl")},"); // imgIndexBuilder.Append($"{imgJToken.Value("imgIndex") + 1},"); //} imageWriteUpdateRequestList.Add(new ImageWriteUpdateRequest() { wareId = long.Parse(mainSpu), colorId = colorProperty.Value("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("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(); 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)); } } }