shanji 3 years ago
parent
commit
b35d84ac0d
  1. 138
      BBWY.JDSDK/Request/SellerPromotionV2CountRequest.cs
  2. 28
      BBWY.JDSDK/Request/SkuWriteDeleteSkuRequest.cs
  3. 46
      BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs
  4. 17
      BBWY.JDSDK/Response/ActivityStatisticsReadServiceGetShoppingCartActivityStatisticsResponse.cs
  5. 10
      BBWY.JDSDK/Response/SkuWriteUpdateSkusResponse.cs
  6. 2
      BBWY.Server.Model/Dto/Response/Product/ProductResponse.cs
  7. 167
      BBWY.Test/JDProductAPITest.cs
  8. 32
      BBWY.Test/Program.cs

138
BBWY.JDSDK/Request/SellerPromotionV2CountRequest.cs

@ -6,85 +6,85 @@ namespace Jd.Api.Request
{
public class SellerPromotionV2CountRequest : JdRequestBase<SellerPromotionV2CountResponse>
{
public string
ip
{get; set;}
public string
port
{get; set;}
public Nullable<long>
promoId
{get; set;}
public string
name
{get; set;}
public Nullable<int>
type
{get; set;}
public Nullable<int>
favorMode
{get; set;}
public string
beginTime
{get; set;}
public string
endTime
{get; set;}
public Nullable<int>
promoStatus
{get; set;}
public Nullable<long>
wareId
{get; set;}
public Nullable<long>
skuId
{get; set;}
public Nullable<int>
srcType
{get; set;}
public override string ApiName
{
get{return "jingdong.seller.promotion.v2.count";}
}
protected override void PrepareParam(IDictionary<String, Object> parameters)
{
parameters.Add("ip", this. ip
public string
ip
{ get; set; }
public string
port
{ get; set; }
public Nullable<long>
promoId
{ get; set; }
public string
name
{ get; set; }
public Nullable<int>
type
{ get; set; }
public Nullable<int>
favorMode
{ get; set; }
public string
beginTime
{ get; set; }
public string
endTime
{ get; set; }
public Nullable<int>
promoStatus
{ get; set; }
public Nullable<long>
wareId
{ get; set; }
public Nullable<long>
skuId
{ get; set; }
public Nullable<int>
srcType
{ get; set; }
public override string ApiName
{
get { return "jingdong.seller.promotion.v2.count"; }
}
protected override void PrepareParam(IDictionary<String, Object> parameters)
{
parameters.Add("ip", this.ip
);
parameters.Add("port", this. port
parameters.Add("port", this.port
);
parameters.Add("promo_id", this. promoId
parameters.Add("promo_id", this.promoId
);
parameters.Add("name", this. name
parameters.Add("name", this.name
);
parameters.Add("type", this. type
parameters.Add("type", this.type
);
parameters.Add("favor_mode", this. favorMode
parameters.Add("favor_mode", this.favorMode
);
parameters.Add("begin_time", this. beginTime
parameters.Add("begin_time", this.beginTime
);
parameters.Add("end_time", this. endTime
parameters.Add("end_time", this.endTime
);
parameters.Add("promo_status", this. promoStatus
parameters.Add("promo_status", this.promoStatus
);
parameters.Add("ware_id", this. wareId
parameters.Add("ware_id", this.wareId
);
parameters.Add("sku_id", this. skuId
parameters.Add("sku_id", this.skuId
);
parameters.Add("src_type", this. srcType
parameters.Add("src_type", this.srcType
);
}
}
}
}
@ -92,6 +92,6 @@ namespace Jd.Api.Request

28
BBWY.JDSDK/Request/SkuWriteDeleteSkuRequest.cs

@ -6,19 +6,19 @@ namespace Jd.Api.Request
{
public class SkuWriteDeleteSkuRequest : JdRequestBase<SkuWriteDeleteSkuResponse>
{
public Nullable<long>
skuId
{get; set;}
public override string ApiName
{
get{return "jingdong.sku.write.deleteSku";}
}
protected override void PrepareParam(IDictionary<String, Object> parameters)
{
parameters.Add("skuId", this. skuId
public Nullable<long>
skuId
{ get; set; }
public override string ApiName
{
get { return "jingdong.sku.write.deleteSku"; }
}
protected override void PrepareParam(IDictionary<String, Object> parameters)
{
parameters.Add("skuId", this.skuId
);
}
}
}
}
@ -26,6 +26,6 @@ namespace Jd.Api.Request

46
BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs

@ -0,0 +1,46 @@
using Jd.Api.Response;
using System;
using System.Collections.Generic;
namespace Jd.Api.Request
{
public class SkuWriteUpdateSkusRequest : JdRequestBase<SkuWriteUpdateSkusResponse>
{
public override string ApiName => "jingdong.sku.write.updateSkus";
public Nullable<long> wareId { get; set; }
public IList<SkuWriteUpdateSkusItem> skus { get; set; }
//public string skus { get; set; }
protected override void PrepareParam(IDictionary<string, object> paramters)
{
paramters.Add("wareId", wareId);
paramters.Add("skus", skus);
}
}
public class SkuWriteUpdateSkusItem
{
public Nullable<long> wareId { get; set; }
public Nullable<long> skuId { get; set; }
public List<SkuWriteUpdateSkusItemSaleAttrs> saleAttrs { get; set; }
public decimal jdPrice { get; set; }
public int stockNum { get; set; }
public string barCode { get; set; }
public List<SkuWriteUpdateSkusItemSaleAttrs> multiCateProps { get; set; }
}
public class SkuWriteUpdateSkusItemSaleAttrs
{
public string attrId { get; set; }
public List<string> attrValues { get; set; }
}
}

17
BBWY.JDSDK/Response/ActivityStatisticsReadServiceGetShoppingCartActivityStatisticsResponse.cs

@ -2,15 +2,16 @@ using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Newtonsoft.Json;
using Jd.Api.Domain;
namespace Jd.Api.Response
using Jd.Api.Domain;
namespace Jd.Api.Response
{
public class ActivityStatisticsReadServiceGetShoppingCartActivityStatisticsResponse:JdResponse{
[JsonProperty("returnType")]
public ActivityStatistics
public class ActivityStatisticsReadServiceGetShoppingCartActivityStatisticsResponse : JdResponse
{
[JsonProperty("returnType")]
public ActivityStatistics
returnType
{ get; set; }
}
returnType
{ get; set; }
}
}

10
BBWY.JDSDK/Response/SkuWriteUpdateSkusResponse.cs

@ -0,0 +1,10 @@
using Jd.Api.Domain;
using Newtonsoft.Json;
namespace Jd.Api.Response
{
public class SkuWriteUpdateSkusResponse: JdResponse
{
}
}

2
BBWY.Server.Model/Dto/Response/Product/ProductResponse.cs

@ -59,7 +59,7 @@ namespace BBWY.Server.Model.Dto
public DateTime? CreateTime { get; set; }
public JToken? Source { get; set; }
public JToken Source { get; set; }
}
public class SimpleProductSkuResponse

167
BBWY.Test/JDProductAPITest.cs

@ -1,8 +1,11 @@
using Jd.Api;
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
@ -21,5 +24,167 @@ namespace BBWY.Test
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));
}
/// <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 = "10022515718131";
var giftSpu = "10023500913672";
var barCode = "";
var categoryId = "";
IList<JToken> saleAttrs = null;
IList<JToken> multiCateProps = null;
var selectGiftSkuList = new List<ProductSkuResponse>();
#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<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");
saleAttrs = skuList[0].Source["saleAttrs"] != null ? skuList[0].Source["saleAttrs"].ToList() : null;
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 增量保存sku
{
var skusParamList = new List<SkuWriteUpdateSkusItem>();
foreach (var sku in selectGiftSkuList)
{
var p = new SkuWriteUpdateSkusItem()
{
wareId = long.Parse(mainSpu),
skuId = long.Parse(sku.Id),
//saleAttrs = sku.Source["saleAttrs"].Select(s => new SkuWriteUpdateSkusItemSaleAttrs()
//{
// attrId = s.Value<string>("attrId"),
// attrValues = s.Value<JArray>("attrValues").Select(x => x.ToString()).ToList()
//}).ToList(),
jdPrice = sku.Price,
stockNum = 5000,
barCode = barCode,
//multiCateProps = multiCateProps.Select(mp => new SkuWriteUpdateSkusItemSaleAttrs()
//{
// attrId = mp.Value<string>("attrId"),
// attrValues = mp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList()
//}).ToList()
};
p.saleAttrs = new List<SkuWriteUpdateSkusItemSaleAttrs>();
foreach (var saleAttr in saleAttrs)
{
var m = new SkuWriteUpdateSkusItemSaleAttrs();
m.attrId = saleAttr.Value<string>("attrId");
m.attrValues = saleAttr.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
p.saleAttrs.Add(m);
}
p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
if (multiCateProps != null && multiCateProps.Count() > 0)
{
foreach (var multiCateProp in multiCateProps)
{
var m = new SkuWriteUpdateSkusItemSaleAttrs();
m.attrId = multiCateProp.Value<string>("attrId");
m.attrValues = multiCateProp.Value<JArray>("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
}
}
}

32
BBWY.Test/Program.cs

@ -1,5 +1,8 @@
using Jd.Api;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
namespace BBWY.Test
{
@ -18,17 +21,36 @@ namespace BBWY.Test
//2ace3023200c4ea9aa682bbf8bffee18jztm 布莱特玩具
var token = "0e61c4a8ec3e4df4b5836e10884db9220yth"; //"b46065ef5b894f2297686e28d39cb37a2mdy";//"";
//var path = @"C:\Users\pengcong001\Desktop\含赠品SKU.txt";
//var j = JToken.Parse(System.IO.File.ReadAllText(path, System.Text.Encoding.UTF8));
//var firstJ = j["Json"]["jingdong_sku_read_searchSkuList_responce"]["page"]["data"].Children().FirstOrDefault();
//var saleAtters = firstJ.Value<JArray>("saleAttrs").Select(s => new
//{
// attrId = s.Value<string>("attrId"),
// attrValues = s.Value<JArray>("attrValues").Select(x => x.ToString()).ToList()
//}).ToList();
//10023500913672 含赠品SPU
//10022515718131 需要进行赠品上架的SPU
IJdClient client = GetJdClient(appkey, appSecret);
var test1 = new JDProductAPITest();
test1.GetSkus(client,token, "10023500913672");
var test1 = new JDProductAPITest();
//Console.WriteLine("-------------获取包含赠品的sku-------------");
//test1.GetSkus(client,token, "10023500913672");
//Console.WriteLine("-------------获取需要进行赠品SKU上架的本款产品的sku-------------");
//test1.GetSkus(client, token, "10022515718131");
Console.WriteLine();
//Console.WriteLine("-------------查询本款产品透图-------------");
test1.GetSkus(client, token, "10022515718131");
//test1.QueryTouTu(client,token, "10022515718131");
//Console.WriteLine("-------------查询本款产品细节图-------------");
//test1.FindImageByColor(client, token, "10022515718131");
//var testService = new JDServiceAPITest();
//testService.GetServiceDetail(client, token);
@ -36,6 +58,8 @@ namespace BBWY.Test
//var ddTest = new DingDingAPITest();
//ddTest.Send();
test1.ShangJiaTest(client, token);
Console.ReadKey();
}
}

Loading…
Cancel
Save