From 694049cba1068c820beb2680e4c357e81ad32711 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 10 Feb 2023 03:49:44 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E4=B8=8A=E6=9E=B6sku=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=8E=9F=E5=A7=8B=E9=94=99=E8=AF=AF=20.=E5=BC=80=E5=A7=8B?= =?UTF-8?q?=EF=BC=8C=E5=AE=8C=E6=88=90=E5=8F=91=E9=92=89=E9=92=89=20?= =?UTF-8?q?=E4=BF=83=E9=94=80sku=E6=95=B0=E9=87=8F=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EvaluationAssistantBusiness.cs | 52 ++++++++++++++----- .../PlatformSDK/JDBusiness.cs | 18 ++++--- .../StartPromotionTaskRequest.cs | 5 ++ 3 files changed, 54 insertions(+), 21 deletions(-) diff --git a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs index abb7fd32..67510544 100644 --- a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs +++ b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs @@ -534,7 +534,8 @@ namespace BBWY.Server.Business CustomMotherSku = dbPromotionTask.CustomMotherSku, MainProductSpu = dbPromotionTask.MainProductSpu, Platform = Enums.Platform.京东, - ShopId = dbPromotionTask.ShopId.Value + ShopId = dbPromotionTask.ShopId.Value, + TaskCount = dbPromotionTask.TaskCount }, GetYunDingRequestHeader(), HttpMethod.Post); if (httpApiResult.StatusCode != System.Net.HttpStatusCode.OK) @@ -550,6 +551,13 @@ namespace BBWY.Server.Business startResponse.DeleteGiftSkuList.Count() != 0) dbPromotionTask.GiftTemplatePutNewSku = string.Join(",", startResponse.DeleteGiftSkuList); + try + { + if (!string.IsNullOrEmpty(shop.PJZSDingDingKey) && !string.IsNullOrEmpty(shop.PJZSDingDingWebHook)) + dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{dbPromotionTask.ActivityName}]已开始"); + } + catch { } + fsql.Update(request.Id).Set(pt => pt.PromotionId, startResponse.JDPromotionId) .SetIf(!string.IsNullOrEmpty(dbPromotionTask.GiftTemplatePutNewSku), pt => pt.GiftTemplatePutNewSku, dbPromotionTask.GiftTemplatePutNewSku) .Set(pt => pt.StartTime, DateTime.Now) @@ -827,7 +835,7 @@ namespace BBWY.Server.Business List> updatePromotionTaskList = new List>(); List insertPromotionTaskSkuRecordList = new List(); IList jobDoneTaskIdList = new List(); - + IList jobDoneTaskList = new List(); foreach (var promotionTask in runningTaskList) { var productSkuList = new List(); @@ -915,23 +923,24 @@ namespace BBWY.Server.Business GetYunDingRequestHeader(), HttpMethod.Post); - if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) - { - Error(shop, loggerName, $"监控任务-暂停京东活动-任务Id {promotionTask.Id}", new Exception(httpResult.Content)); - } - else - { - var response = JsonConvert.DeserializeObject(httpResult.Content); - if (!response.Success) - { - Error(shop, loggerName, $"监控任务-暂停京东活动-任务Id {promotionTask.Id}", new Exception(response.Msg)); - } - } + //if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) + //{ + // Error(shop, loggerName, $"监控任务-暂停京东活动-任务Id {promotionTask.Id}", new Exception(httpResult.Content)); + //} + //else + //{ + // var response = JsonConvert.DeserializeObject(httpResult.Content); + // if (!response.Success) + // { + // Error(shop, loggerName, $"监控任务-暂停京东活动-任务Id {promotionTask.Id}", new Exception(response.Msg)); + // } + //} } #endregion } jobDoneTaskIdList.Add(promotionTask.Id); //记录完成任务 + jobDoneTaskList.Add(promotionTask); } } } @@ -945,6 +954,21 @@ namespace BBWY.Server.Business fsql.Insert(insertPromotionTaskSkuRecordList).ExecuteAffrows(); }); + #region 钉钉通知结束 + if (!string.IsNullOrEmpty(shop.PJZSDingDingKey) && !string.IsNullOrEmpty(shop.PJZSDingDingWebHook)) + { + foreach (var jobDoneTask in jobDoneTaskList) + { + try + { + dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{jobDoneTask.ActivityName}]已结束"); + } + catch { } + } + } + + #endregion + #region 开始后续任务 //下一轮开始任务 if (jobDoneTaskIdList.Count() > 0) diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index 43594011..e0025c72 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -739,8 +739,9 @@ namespace BBWY.Server.Business /// /// /// + /// /// - private void AddJDPromotionSku(IJdClient jdClient, string token, long promotionId, IList skuList, bool isGift) + private void AddJDPromotionSku(IJdClient jdClient, string token, long promotionId, IList skuList, bool isGift, int taskCount) { var req = new SellerPromotionSkuAddRequest(); req.promoId = promotionId; @@ -763,7 +764,7 @@ namespace BBWY.Server.Business req.skuIds = $"{req.skuIds}{sku.Id},"; req.jdPrices = $"{req.jdPrices}{sku.Price},"; req.bindType = $"{req.bindType}{(isGift ? 2 : 1)},"; - req.num = $"{req.num}{(isGift ? 1 : 100)},"; + req.num = $"{req.num}{(isGift ? 1 : taskCount)},"; req.promoPrices = $"{req.promoPrices}{(isGift ? 0 : sku.Price)},"; } @@ -1020,7 +1021,10 @@ namespace BBWY.Server.Business { RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false); - throw new BusinessException($"上架sku失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}"); + if (res.Body.Contains("en_desc")) + throw new BusinessException($"上架sku失败-{res.Json["error_response"].Value("en_desc")}"); + else + throw new BusinessException($"上架sku失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}"); /*{"error_response":{"code":"501","en_desc":"com.jd.bk.saf.exception.SafJosException:京东价超出该类目允许范围:12.15-39437元!#821c1c3b382f476abeb21f1f515274c7(Solution reference: https://jos.jd.com/commondoc?listId=171)","zh_desc":"调用参数错误(解决方案参考: https://jos.jd.com/commondoc?listId=171)"}}*/ } @@ -1131,25 +1135,25 @@ namespace BBWY.Server.Business if (motherTemplateSkuList != null && motherTemplateSkuList.Count() > 0) { stepText = "添加奶妈模板SKU"; - AddJDPromotionSku(jdClient, request.AppToken, promotionId, motherTemplateSkuList, false); + AddJDPromotionSku(jdClient, request.AppToken, promotionId, motherTemplateSkuList, false, request.TaskCount); } if (customerMotherSkuList != null && customerMotherSkuList.Count() > 0) { stepText = "添加自定义奶妈SKU"; - AddJDPromotionSku(jdClient, request.AppToken, promotionId, customerMotherSkuList, false); + AddJDPromotionSku(jdClient, request.AppToken, promotionId, customerMotherSkuList, false, request.TaskCount); } if (mainProductSkuList != null && mainProductSkuList.Count() > 0) { stepText = "添加主商品SKU"; - AddJDPromotionSku(jdClient, request.AppToken, promotionId, mainProductSkuList, false); + AddJDPromotionSku(jdClient, request.AppToken, promotionId, mainProductSkuList, false, request.TaskCount); } if (giftSkuList != null && giftSkuList.Count() > 0) { stepText = "添加赠品SKU"; - AddJDPromotionSku(jdClient, request.AppToken, promotionId, giftSkuList, true); + AddJDPromotionSku(jdClient, request.AppToken, promotionId, giftSkuList, true, request.TaskCount); } } #endregion diff --git a/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs b/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs index 0a4fd60f..8908a072 100644 --- a/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs +++ b/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs @@ -55,6 +55,11 @@ namespace BBWY.Server.Model.Dto /// 自定义奶妈sku /// public string CustomMotherSku { get; set; } + + /// + /// 任务量 + /// + public int TaskCount { get; set; } } public class StartPromotionTaskDelayRequest : PlatformRequest From 60282efd073eccae77bfa17c9056f08c8c9e5ea6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 10 Feb 2023 21:08:11 +0800 Subject: [PATCH 02/12] 1 --- .../JD/JDStockNumWarningBusiness.cs | 4 +- .../EvaluationAssistantBusiness.cs | 62 ++++++++++++- .../PlatformSDK/JDBusiness.cs | 87 ++++++++++--------- .../StartPromotionTaskRequest.cs | 14 ++- BBWY.Test/Program.cs | 65 +++++++++----- 5 files changed, 162 insertions(+), 70 deletions(-) diff --git a/BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs b/BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs index 2805b920..2fab3607 100644 --- a/BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs +++ b/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; diff --git a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs index 67510544..ccc91a07 100644 --- a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs +++ b/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 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>>(mainSkuResult.Content); + if (!mainSkuListResponse.Success) + throw new BusinessException($"获取主商品sku失败 {mainSkuListResponse.Msg}"); + + barCode = mainSkuListResponse.Data[0].Source.Value("barCode"); + categoryId = mainSkuListResponse.Data[0].Source.Value("categoryId"); + multiCateProps = mainSkuListResponse.Data[0].Source["multiCateProps"] != null ? mainSkuListResponse.Data[0].Source["multiCateProps"].ToList() : null; + + var jyStoreIdList = fsql.Select().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>(stockNumApiResult.Content); + + var skuStockNumList = stockNumListResponse.Data.Select(j => new + { + StockNum = j.Value("stockNum"), + StoreId = j.Value("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) diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index e0025c72..583de442 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/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 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("barCode"); - categoryId = mainSkuList[0].Source.Value("categoryId"); - multiCateProps = mainSkuList[0].Source["multiCateProps"] != null ? mainSkuList[0].Source["multiCateProps"].ToList() : null; - } - #endregion + //string barCode = string.Empty, categoryId = string.Empty; + //IList 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("barCode"); + // categoryId = mainSkuList[0].Source.Value("categoryId"); + // multiCateProps = mainSkuList[0].Source["multiCateProps"] != null ? mainSkuList[0].Source["multiCateProps"].ToList() : null; + //} + //#endregion #region 获取销售属性 stepText = "获取销售属性"; IList 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() { new SkuWriteUpdateSkusItemSaleAttrs() @@ -969,9 +969,9 @@ namespace BBWY.Server.Business }; p.multiCateProps = new List(); - 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 diff --git a/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs b/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs index 8908a072..da8190bf 100644 --- a/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs +++ b/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 /// 任务量 /// public int TaskCount { get; set; } + + public string MainProductBarCode { get; set; } + + public string MainProductCategoryId { get; set; } + + public IList MainProductMultiCateProps { get; set; } + + /// + /// 主商品Sku是否入仓 + /// + public bool MainProductSkuInStore { get; set; } } public class StartPromotionTaskDelayRequest : PlatformRequest diff --git a/BBWY.Test/Program.cs b/BBWY.Test/Program.cs index 652be87e..0b783f2c 100644 --- a/BBWY.Test/Program.cs +++ b/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("saleAttrs").Select(s => new - //{ - // attrId = s.Value("attrId"), - // attrValues = s.Value("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() { +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(); } } From a23f93ae86bf965b16766fb0bfc8f6ea0a688479 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 12 Feb 2023 13:11:19 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=9F=A5=E8=AF=A2sku=E5=B9=B6=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E9=AA=8C=E8=AF=81=E6=97=B6=EF=BC=8C=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E5=85=B7=E4=BD=93=E7=BC=BA=E7=A4=BA=E7=9A=84sku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.Business/PlatformSDK/JDBusiness.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index 583de442..0916af8e 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -174,7 +174,9 @@ namespace BBWY.Server.Business !string.IsNullOrEmpty(searchProductSkuRequest.Sku) && skuIdList.Count() != skuList.Count()) { - throw new BusinessException($"{searchProductSkuRequest.CheckStep}-sku条件数量和查询结果数量不一致"); + var targetSkuIdList = skuList.Select(s => s.Id); + var exceptSkuIdList = skuIdList.Except(targetSkuIdList); + throw new BusinessException($"{searchProductSkuRequest.CheckStep}-sku条件数量和查询结果数量不一致\r\n{string.Join(",", exceptSkuIdList)}"); } return skuList; From 06400e0248231eb5c63fea7d2bf98be9099e78cb Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Feb 2023 02:30:09 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=BF=BB=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlatformSDK/JDBusiness.cs | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index 0916af8e..33edd198 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -258,6 +258,8 @@ namespace BBWY.Server.Business } else if (searchOrderRequest.JDColType == "0") { + var pageIndex = 1; + var pageSize = 100; var sopReq = new PopOrderEnSearchRequest(); if (searchOrderRequest.StartDate != null) sopReq.startDate = searchOrderRequest.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); @@ -273,24 +275,32 @@ namespace BBWY.Server.Business sopReq.orderState = searchOrderRequest.OrderState; //待转换 } sopReq.optionalFields = searchFields; - sopReq.page = searchOrderRequest.PageIndex.ToString(); - sopReq.pageSize = searchOrderRequest.PageSize.ToString(); + //sopReq.page = searchOrderRequest.PageIndex.ToString(); + sopReq.pageSize = pageSize.ToString(); sopReq.sortType = "1"; if (searchOrderRequest.SortTimeType != null) sopReq.dateType = ((int)searchOrderRequest.SortTimeType).ToString(); - //sopReq.dateType = ""; - var sopResponse = jdClient.Execute(sopReq, searchOrderRequest.AppToken, DateTime.Now.ToLocalTime()); - if (searchOrderRequest.SaveResponseLog) - nLogManager.Default().Info($"sopRequest\r\n{JsonConvert.SerializeObject(searchOrderRequest)} \r\nsopResponse\r\n{JsonConvert.SerializeObject(sopResponse)}"); - if (sopResponse.IsError) - throw new BusinessException($"获取SOP订单失败 {(string.IsNullOrEmpty(sopResponse.ErrorMsg) ? sopResponse.ErrMsg : sopResponse.ErrorMsg)}"); - - if (sopResponse.Json == null) - sopResponse.Json = JObject.Parse(sopResponse.Body); - //orderCount = sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"].Value("orderTotal"); - orderJtokens.AddRange((JArray)sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"]["orderInfoList"]); + while (true) + { + sopReq.page = pageIndex.ToString(); + var sopResponse = jdClient.Execute(sopReq, searchOrderRequest.AppToken, DateTime.Now.ToLocalTime()); + if (searchOrderRequest.SaveResponseLog) + nLogManager.Default().Info($"sopRequest\r\n{JsonConvert.SerializeObject(searchOrderRequest)} \r\nsopResponse\r\n{JsonConvert.SerializeObject(sopResponse)}"); + if (sopResponse.IsError) + throw new BusinessException($"获取SOP订单失败 {(string.IsNullOrEmpty(sopResponse.ErrorMsg) ? sopResponse.ErrMsg : sopResponse.ErrorMsg)}"); + + if (sopResponse.Json == null) + sopResponse.Json = JObject.Parse(sopResponse.Body); + + //orderCount = sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"].Value("orderTotal"); + var orderJarray = (JArray)sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"]["orderInfoList"]; + orderJtokens.AddRange(orderJarray); + if (orderJarray.Count() < pageSize) + break; + pageIndex++; + } } } else From 9701ec8b26827fb68c07646c3f19d5b7b194bbda Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Feb 2023 12:04:11 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E5=BB=B6=E9=95=BF=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.Business/Sync/OrderSyncBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 5da570a1..f8e5ff08 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -86,7 +86,7 @@ namespace BBWY.Server.Business //SaveResponseLog = true, OrderId = orderId, SortTimeType = sortTimeType - }, GetYunDingRequestHeader(), HttpMethod.Post); + }, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 100); if (orderListApiResult.StatusCode != System.Net.HttpStatusCode.OK) throw new Exception($"获取订单失败 {orderListApiResult.Content}"); From 8c011f25e6372aed3e1f1b371dced175bd6e8412 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Feb 2023 12:40:08 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2120?= =?UTF-8?q?=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.Business/Sync/OrderSyncBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index f8e5ff08..001e6d6c 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -86,7 +86,7 @@ namespace BBWY.Server.Business //SaveResponseLog = true, OrderId = orderId, SortTimeType = sortTimeType - }, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 100); + }, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 120); if (orderListApiResult.StatusCode != System.Net.HttpStatusCode.OK) throw new Exception($"获取订单失败 {orderListApiResult.Content}"); From 201b02f70963f30aa4593c842fe1aa8f394a8bbc Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 13 Feb 2023 23:02:37 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E9=99=8D=E4=BD=8E=E4=B8=BA1=E5=B0=8F=E6=97=B6=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.Business/Sync/OrderSyncBusiness.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 001e6d6c..24b03da2 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -74,7 +74,7 @@ namespace BBWY.Server.Business var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var orderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetOrderList", new SearchPlatformOrderRequest() { - StartDate = startTime ?? DateTime.Now.AddHours(-3), + StartDate = startTime ?? DateTime.Now.AddHours(-1), EndDate = endTime ?? DateTime.Now, AppKey = shop.AppKey, AppSecret = shop.AppSecret, From 1d92fde1772b364f07bd6b46a02bbca0bc61dbe2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 14 Feb 2023 00:48:26 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BB=93=E5=82=A8?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=97=B6=E5=90=8C=E6=97=B6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E4=B8=BA=E5=BE=85=E5=87=BA?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.Business/Order/OrderBusiness.cs | 11 ++++++++--- BBWY.Server.Business/Sync/OrderSyncBusiness.cs | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index fb561459..48fa7d9e 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -462,7 +462,9 @@ namespace BBWY.Server.Business List insertOrderCostDetailList = new List(); if (autoCalculationCostRequest.IsSetStorageType) - orderUpdate = fsql.Update(autoCalculationCostRequest.OrderId).Set(o => o.StorageType, autoCalculationCostRequest.StorageType); + orderUpdate = fsql.Update(autoCalculationCostRequest.OrderId) + .Set(o => o.StorageType, autoCalculationCostRequest.StorageType) + .SetIf(dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Enums.OrderState.待出库); var orderCostPurchaseAmount = 0M; var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 @@ -610,7 +612,9 @@ namespace BBWY.Server.Business var dbAfterSaleOrderList = fsql.Select().Where(aso => aso.OrderId == manualCalculationCostRequest.OrderId).ToList(); if (manualCalculationCostRequest.IsSetStorageType) - orderUpdate = fsql.Update(manualCalculationCostRequest.OrderId).Set(o => o.StorageType, manualCalculationCostRequest.StorageType); + orderUpdate = fsql.Update(manualCalculationCostRequest.OrderId) + .Set(o => o.StorageType, manualCalculationCostRequest.StorageType) + .SetIf(dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Enums.OrderState.待出库); insertOrderCostDetailList.AddRange(manualCalculationCostRequest.OrderCostDetailList.Map>()); foreach (var orderCostDetail in insertOrderCostDetailList) @@ -727,7 +731,8 @@ namespace BBWY.Server.Business .Set(o => o.SDOperator, sdCalculationCostRequest.SDOperator) .SetIf(sdCalculationCostRequest.SDPayChannel != null, o => o.SDPayChannel, sdCalculationCostRequest.SDPayChannel); if (sdCalculationCostRequest.IsSetStorageType) - orderUpdate = orderUpdate.Set(o => o.StorageType, Enums.StorageType.SD); + orderUpdate = orderUpdate.Set(o => o.StorageType, Enums.StorageType.SD) + .SetIf(dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Enums.OrderState.待出库); var orderCost = fsql.Select(sdCalculationCostRequest.OrderId).ToOne(); if (orderCost == null) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 24b03da2..001e6d6c 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -74,7 +74,7 @@ namespace BBWY.Server.Business var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var orderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetOrderList", new SearchPlatformOrderRequest() { - StartDate = startTime ?? DateTime.Now.AddHours(-1), + StartDate = startTime ?? DateTime.Now.AddHours(-3), EndDate = endTime ?? DateTime.Now, AppKey = shop.AppKey, AppSecret = shop.AppSecret, From bdaf1e84870aadab045b2134121bd4cdc81c66b6 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 14 Feb 2023 11:18:24 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E7=AD=89=E5=BE=85=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=97=B6=E8=AE=BE=E7=BD=AE=E4=BB=93=E5=82=A8=EF=BC=8C=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Client/ViewModels/Order/OrderListViewModel.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs index fa294bd4..7c8e1596 100644 --- a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs +++ b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs @@ -320,6 +320,15 @@ namespace BBWY.Client.ViewModels return; } + if (OrderState == Models.OrderState.等待采购 && order.StorageType == null) + { + IsLoading = false; + Application.Current.Dispatcher.Invoke(() => + { + OrderList.Remove(order); + }); + } + var orderResponse = orderService.GetOrderById(orderId); IsLoading = false; if (!orderResponse.Success) From 11470297f3825e84ae16192c3044c650aa34e4b3 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 14 Feb 2023 11:22:46 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BA=91=E9=BC=8Ekey?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Server.API/Controllers/YunDingController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWY.Server.API/Controllers/YunDingController.cs b/BBWY.Server.API/Controllers/YunDingController.cs index 4154de19..f07a638d 100644 --- a/BBWY.Server.API/Controllers/YunDingController.cs +++ b/BBWY.Server.API/Controllers/YunDingController.cs @@ -20,7 +20,7 @@ namespace BBWY.Server.API.Controllers [HttpGet] public void CreateKey() { - yunDingBusiness.CreateKey(); + //yunDingBusiness.CreateKey(); } } } From 52e7632f1e29dc8aa3923f893e84f601c9e14f7f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 14 Feb 2023 11:25:09 +0800 Subject: [PATCH 11/12] 10078 --- BBWY.Client/Views/MainWindow.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWY.Client/Views/MainWindow.xaml b/BBWY.Client/Views/MainWindow.xaml index 95d68eeb..24e9a60b 100644 --- a/BBWY.Client/Views/MainWindow.xaml +++ b/BBWY.Client/Views/MainWindow.xaml @@ -26,7 +26,7 @@ - + From 18ada5989676408003ec7d3e16cfebab594257ea Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 14 Feb 2023 12:25:32 +0800 Subject: [PATCH 12/12] 1 --- BBWY.Client/Views/MainWindow.xaml | 2 +- BBWY.Server.API/Startup.cs | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/BBWY.Client/Views/MainWindow.xaml b/BBWY.Client/Views/MainWindow.xaml index 24e9a60b..f6135c21 100644 --- a/BBWY.Client/Views/MainWindow.xaml +++ b/BBWY.Client/Views/MainWindow.xaml @@ -26,7 +26,7 @@ - + diff --git a/BBWY.Server.API/Startup.cs b/BBWY.Server.API/Startup.cs index c4f5d3d6..beeb2875 100644 --- a/BBWY.Server.API/Startup.cs +++ b/BBWY.Server.API/Startup.cs @@ -138,12 +138,12 @@ namespace BBWY.Server.API public void Configure(IApplicationBuilder app, IWebHostEnvironment env, YunDingBusiness yunDingBusiness) { yunDingBusiness.RefreshKey(); - app.UseSwagger(c => c.SerializeAsV2 = true) - .UseSwaggerUI(c => - { - c.SwaggerEndpoint("/swagger/v1/swagger.json", "BBWY API"); - c.RoutePrefix = string.Empty; - }); + //app.UseSwagger(c => c.SerializeAsV2 = true) + // .UseSwaggerUI(c => + // { + // c.SwaggerEndpoint("/swagger/v1/swagger.json", "BBWY API"); + // c.RoutePrefix = string.Empty; + // }); //if (env.IsDevelopment()) //{