shanji 2 years ago
parent
commit
60282efd07
  1. 4
      BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs
  2. 62
      BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
  3. 87
      BBWY.Server.Business/PlatformSDK/JDBusiness.cs
  4. 14
      BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs
  5. 65
      BBWY.Test/Program.cs

4
BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs

@ -1,5 +1,4 @@
using BBWY.Common.Extensions;
using BBWY.Common.Http;
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Model;
using BBWY.Server.Model.Db;
@ -11,7 +10,6 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

62
BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs

@ -7,6 +7,7 @@ using BBWY.Server.Model.Dto;
using FreeSql;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
@ -517,7 +518,61 @@ namespace BBWY.Server.Business
if (!string.IsNullOrEmpty(dbPromotionTask.MainProductSku))
CheckRepeatSkuInRuningTask(runingTaskList, dbPromotionTask.MainProductSku);
var host = GetPlatformRelayAPIHost(Enums.Platform.);
var haveGiftTemplateSku = giftTemplateSkuList != null && giftTemplateSkuList.Count() > 0;
string barCode = string.Empty, categoryId = string.Empty;
IList<JToken> multiCateProps = null;
var mainProductSkuInStore = false;
if (haveGiftTemplateSku)
{
var mainSkuResult = restApiService.SendRequest(host, "api/PlatformSDK/GetProductSkuList", new SearchProductSkuRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
IsContainSource = true,
Platform = request.Platform,
Spu = dbPromotionTask.MainProductSpu
}, GetYunDingRequestHeader(), HttpMethod.Post);
if (mainSkuResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException($"获取主商品sku失败 {mainSkuResult.Content}");
var mainSkuListResponse = JsonConvert.DeserializeObject<ApiResponse<IList<ProductSkuResponse>>>(mainSkuResult.Content);
if (!mainSkuListResponse.Success)
throw new BusinessException($"获取主商品sku失败 {mainSkuListResponse.Msg}");
barCode = mainSkuListResponse.Data[0].Source.Value<string>("barCode");
categoryId = mainSkuListResponse.Data[0].Source.Value<string>("categoryId");
multiCateProps = mainSkuListResponse.Data[0].Source["multiCateProps"] != null ? mainSkuListResponse.Data[0].Source["multiCateProps"].ToList() : null;
var jyStoreIdList = fsql.Select<Storehouse>().Where(s => s.Type == Enums.StockType. || s.Name.Contains("云仓")).ToList(s => s.Id);
foreach (var sku in mainSkuListResponse.Data)
{
var stockNumApiResult = restApiService.SendRequest(host, "api/platformsdk/GetStockNumBySku", new SearchProductSkuRequest()
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
Platform = shop.PlatformId,
Sku = sku.Id
}, GetYunDingRequestHeader(), HttpMethod.Post);
if (stockNumApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"{sku} {stockNumApiResult.Content}");
var stockNumListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(stockNumApiResult.Content);
var skuStockNumList = stockNumListResponse.Data.Select(j => new
{
StockNum = j.Value<int>("stockNum"),
StoreId = j.Value<string>("storeId"),
SkuId = sku
});
mainProductSkuInStore = skuStockNumList.Any(s => jyStoreIdList.Contains(s.StoreId));
if (mainProductSkuInStore)
break;
}
}
var httpApiResult = restApiService.SendRequest(host, "api/PlatformSDK/StartJDPromotionTask", new StartPromotionTaskRequest2()
{
Id = dbPromotionTask.Id,
@ -535,7 +590,12 @@ namespace BBWY.Server.Business
MainProductSpu = dbPromotionTask.MainProductSpu,
Platform = Enums.Platform.,
ShopId = dbPromotionTask.ShopId.Value,
TaskCount = dbPromotionTask.TaskCount
TaskCount = dbPromotionTask.TaskCount,
MainProductBarCode = barCode,
MainProductCategoryId = categoryId,
MainProductMultiCateProps = multiCateProps,
MainProductSkuInStore = mainProductSkuInStore
}, GetYunDingRequestHeader(), HttpMethod.Post);
if (httpApiResult.StatusCode != System.Net.HttpStatusCode.OK)

87
BBWY.Server.Business/PlatformSDK/JDBusiness.cs

@ -894,36 +894,36 @@ namespace BBWY.Server.Business
if (haveGiftTemplateSku)
{
#region 上架赠品
string barCode = string.Empty, categoryId = string.Empty;
IList<JToken> multiCateProps = null;
#region 获取主商品sku信息 barCode,categoryId,multiCateProps
{
stepText = "获取主商品sku信息";
var mainSkuList = GetProductSkuList(new SearchProductSkuRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
IsContainSource = true,
Platform = request.Platform,
Spu = request.MainProductSpu
});
if (mainSkuList.Count() == 0)
throw new BusinessException($"获取主商品sku信息-未查询到sku信息");
barCode = mainSkuList[0].Source.Value<string>("barCode");
categoryId = mainSkuList[0].Source.Value<string>("categoryId");
multiCateProps = mainSkuList[0].Source["multiCateProps"] != null ? mainSkuList[0].Source["multiCateProps"].ToList() : null;
}
#endregion
//string barCode = string.Empty, categoryId = string.Empty;
//IList<JToken> multiCateProps = null;
//#region 获取主商品sku信息 barCode,categoryId,multiCateProps
//{
// stepText = "获取主商品sku信息";
// var mainSkuList = GetProductSkuList(new SearchProductSkuRequest()
// {
// AppKey = request.AppKey,
// AppSecret = request.AppSecret,
// AppToken = request.AppToken,
// IsContainSource = true,
// Platform = request.Platform,
// Spu = request.MainProductSpu
// });
// if (mainSkuList.Count() == 0)
// throw new BusinessException($"获取主商品sku信息-未查询到sku信息");
// barCode = mainSkuList[0].Source.Value<string>("barCode");
// categoryId = mainSkuList[0].Source.Value<string>("categoryId");
// multiCateProps = mainSkuList[0].Source["multiCateProps"] != null ? mainSkuList[0].Source["multiCateProps"].ToList() : null;
//}
//#endregion
#region 获取销售属性
stepText = "获取销售属性";
IList<JToken> colorSaleAttrs = null;
{
var req = new CategoryReadFindAttrsByCategoryIdUnlimitCateRequest();
req.cid = long.Parse(categoryId);
req.cid = long.Parse(request.MainProductCategoryId);
req.attributeType = 4;
req.field = "attrValueList,attrGroup";
var response = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime());
@ -955,7 +955,7 @@ namespace BBWY.Server.Business
//skuId = long.Parse(sku.Id),
jdPrice = giftSku.Price ?? 0,
stockNum = 9999,
barCode = barCode,
barCode = request.MainProductBarCode,
saleAttrs = new List<SkuWriteUpdateSkusItemSaleAttrs>()
{
new SkuWriteUpdateSkusItemSaleAttrs()
@ -969,9 +969,9 @@ namespace BBWY.Server.Business
};
p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
if (multiCateProps != null && multiCateProps.Count() > 0)
if (request.MainProductMultiCateProps != null && request.MainProductMultiCateProps.Count() > 0)
{
foreach (var multiCateProp in multiCateProps)
foreach (var multiCateProp in request.MainProductMultiCateProps)
{
var m = new SkuWriteUpdateSkusItemSaleAttrs();
m.type = "com.jd.pop.ware.ic.api.domain.Prop";
@ -1060,24 +1060,27 @@ namespace BBWY.Server.Business
#region 设置sku全国仓库存
{
stepText = "设置sku全国仓库存";
try
if (request.MainProductSkuInStore)
{
foreach (var giftSkuId in giftSkuIdList)
stepText = "设置sku全国仓库存";
try
{
var req = new StockWriteUpdateSkuStockRequest();
req.skuId = long.Parse(giftSkuId);
req.stockNum = 9999;
req.storeId = 0;
var res = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime());
if (res.IsError)
throw new BusinessException($"设置全国仓库存失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}");
foreach (var giftSkuId in giftSkuIdList)
{
var req = new StockWriteUpdateSkuStockRequest();
req.skuId = long.Parse(giftSkuId);
req.stockNum = 9999;
req.storeId = 0;
var res = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime());
if (res.IsError)
throw new BusinessException($"设置全国仓库存失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}");
}
}
catch (Exception ex)
{
RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, giftSkuIdList, request.MainProductSpu, request.FullTitle, brandName, true);
throw ex;
}
}
catch (Exception ex)
{
RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, giftSkuIdList, request.MainProductSpu, request.FullTitle, brandName, true);
throw ex;
}
}
#endregion

14
BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs

@ -1,4 +1,5 @@
using System;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Text;
@ -60,6 +61,17 @@ namespace BBWY.Server.Model.Dto
/// 任务量
/// </summary>
public int TaskCount { get; set; }
public string MainProductBarCode { get; set; }
public string MainProductCategoryId { get; set; }
public IList<JToken> MainProductMultiCateProps { get; set; }
/// <summary>
/// 主商品Sku是否入仓
/// </summary>
public bool MainProductSkuInStore { get; set; }
}
public class StartPromotionTaskDelayRequest : PlatformRequest

65
BBWY.Test/Program.cs

@ -18,33 +18,52 @@ namespace BBWY.Test
static void Main(string[] args)
{
var appkey = "E1AA9247D5583A6D87449CE6AB290185";
var appSecret = "e479558ddd9e40f8929cfc00c6cbbc9c";
//var appkey = "E1AA9247D5583A6D87449CE6AB290185";
//var appSecret = "e479558ddd9e40f8929cfc00c6cbbc9c";
var appkey = "120EA9EC65AB017567D78CC1139EEEA5";
var appSecret = "8a42bc2301e8439b896e99f5475e0a9b";
////0e61c4a8ec3e4df4b5836e10884db9220yth 齐盛
////2ace3023200c4ea9aa682bbf8bffee18jztm 布莱特玩具
//var token = "01f5be2cb4d741dda66bce2356941597mdfm"; //布莱特玩具 token2
//var token = "01dc6f6e7fc34dcd99090d690312556cmdfk"; //齐盛
//var token = "9fffa982da23446fb035499ae5622f49odjk"; //腾奇
//var token = "c22ff4d37b6c4bbd82cd9e8d0dab42dbziyz"; //森王车品
var token = "44c19a1c1fbd4641957e6e8985ed1358jmtl"; //森王玩具
//var appkey = "120EA9EC65AB017567D78CC1139EEEA5";
//var appSecret = "8a42bc2301e8439b896e99f5475e0a9b";
//var token = "2ace3023200c4ea9aa682bbf8bffee18jztm";
//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();
var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; //布莱特玩具
//var token = "01f5be2cb4d741dda66bce2356941597mdfm"; //布莱特玩具 token2
//var token = "01dc6f6e7fc34dcd99090d690312556cmdfk"; //齐盛
//var token = "9fffa982da23446fb035499ae5622f49odjk"; //腾奇
//var token = "c22ff4d37b6c4bbd82cd9e8d0dab42dbziyz"; //森王车品
//var token = "44c19a1c1fbd4641957e6e8985ed1358jmtl"; //森王玩具
IJdClient client = GetJdClient(appkey, appSecret);
var p = new JDPromotionAPITest();
p.GetPromotionDetailById(client,token, 5629024225);
{
var skuList = new List<long>() {
10025658468477,
10026219782038,
10026279996161,
10026279996162,
10026279996163,
10026463915671,
10029572468081,
10029572468082,
10029572468083,
10029572468084,
10030302993587,
10063391438691,
10063391438692,
10063391438693,
10063391438694
};
foreach (var sku in skuList)
{
var jdClient = GetJdClient(appkey, appSecret);
var req = new StockReadFindSkuStockRequest();
req.skuId = sku;
var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
}
}
Console.ReadKey();
}
}

Loading…
Cancel
Save