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.
414 lines
17 KiB
414 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;
|
|
using BBWY.Common.Extensions;
|
|
|
|
namespace BBWY.Test
|
|
{
|
|
public class JDProductAPITest
|
|
{
|
|
public void GetSkus(IJdClient client, string token)
|
|
{
|
|
var req_skuList = new SkuReadSearchSkuListRequest()
|
|
{
|
|
pageSize = 50,//50
|
|
field = "logo,saleAttrs,status,created,barCode,categoryId,multiCateProps"
|
|
};
|
|
string sku = "10064036647261,10064036647260";
|
|
var skuList = new List<ProductSkuResponse>();
|
|
IList<string> skuIdList = null;
|
|
var pageIndex = 1;
|
|
var pageSize = 20;
|
|
var totalPageSize = 1;
|
|
skuIdList = sku.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
totalPageSize = (skuIdList.Count() - 1) / 20 + 1;
|
|
|
|
while (true)
|
|
{
|
|
req_skuList.skuId = string.Join(",", skuIdList.Skip((pageIndex - 1) * pageSize).Take(pageSize));
|
|
|
|
var rep_skuList = client.Execute(req_skuList, token, DateTime.Now.ToLocalTime());
|
|
|
|
var currentList = ((JArray)rep_skuList.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();
|
|
|
|
if (currentList != null && currentList.Count() > 0)
|
|
skuList.AddRange(currentList);
|
|
|
|
if (pageIndex >= totalPageSize)
|
|
break;
|
|
pageIndex++;
|
|
}
|
|
Console.WriteLine(JsonConvert.SerializeObject(skuList));
|
|
}
|
|
|
|
public void GetSkusByWareId(IJdClient client, string token)
|
|
{
|
|
var req_skuList = new SkuReadSearchSkuListRequest()
|
|
{
|
|
pageSize = 50,//50
|
|
field = "logo,saleAttrs,status,created,barCode,categoryId,multiCateProps"
|
|
};
|
|
|
|
req_skuList.wareId = "10023496890322";
|
|
|
|
var rep_skuList = client.Execute(req_skuList, token, DateTime.Now.ToLocalTime());
|
|
|
|
Console.WriteLine(JsonConvert.SerializeObject(rep_skuList));
|
|
|
|
}
|
|
|
|
public void GetSpu(IJdClient client, string token, string spu)
|
|
{
|
|
var req_productList = new WareReadSearchWare4ValidRequest()
|
|
{
|
|
orderField = "modified",
|
|
orderType = "desc",
|
|
pageSize = 50,
|
|
pageNo = 1,
|
|
field = "created,logo,brandName"
|
|
};
|
|
|
|
req_productList.wareId = spu;
|
|
|
|
var res = client.Execute(req_productList, token, DateTime.Now.ToLocalTime());
|
|
Console.WriteLine(JsonConvert.SerializeObject(res));
|
|
}
|
|
|
|
|
|
|
|
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 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 imgUrlBuilder = new StringBuilder();
|
|
var imgIndexBuilder = new StringBuilder();
|
|
imgUrlBuilder.Append($"{giftSku.Logo.Substring(giftSku.Logo.IndexOf("jfs"))},");
|
|
imgIndexBuilder.Append("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
|
|
}
|
|
#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 GetPromotionDetailById(IJdClient client, string token)
|
|
{
|
|
var req = new SellerPromotionV2GetRequest();
|
|
req.promoId = 5623871513;
|
|
req.promoType = 4;
|
|
var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
|
|
Console.WriteLine(JsonConvert.SerializeObject(response));
|
|
}
|
|
|
|
public void DeleetePromotion(IJdClient client, string token)
|
|
{
|
|
|
|
/*
|
|
5606604716
|
|
5606617011
|
|
5606602511
|
|
5606589329
|
|
5606583569
|
|
5606578221
|
|
*/
|
|
|
|
var list = new List<long>() {
|
|
5606604716,
|
|
5606617011,
|
|
5606602511,
|
|
5606589329,
|
|
5606583569,
|
|
5606578221
|
|
};
|
|
|
|
foreach (var id in list)
|
|
{
|
|
var req = new SellerPromotionDeleteRequest();
|
|
|
|
req.promoId = id;
|
|
|
|
|
|
var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
|
|
Console.WriteLine(id);
|
|
Console.WriteLine(JsonConvert.SerializeObject(response));
|
|
Console.WriteLine();
|
|
}
|
|
}
|
|
|
|
public void 审核京东活动(IJdClient client, string token)
|
|
{
|
|
var req = new SellerPromotionCheckRequest();
|
|
req.promoId = 5616082560;
|
|
req.status = 4;
|
|
var res = client.Execute(req, token, DateTime.Now.ToLocalTime());
|
|
Console.WriteLine(JsonConvert.SerializeObject(res));
|
|
}
|
|
}
|
|
}
|
|
|