From 207e49de2f420b45ba96d2de36e39f48a9dff812 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 28 Sep 2022 04:26:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E5=B9=BF=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PlatformSDKController.cs | 13 ++- .../PlatformSDK/JDBusiness.cs | 20 ++++- .../PlatformSDK/PlatformSDKBusiness.cs | 5 ++ .../Sync/JDPopularizeSyncBusiness.cs | 87 +++++++++++++++++++ BBWY.Server.Business/TaskSchedulerManager.cs | 3 + .../Request/Sync/SyncShopPopularizeRequest.cs | 13 +++ 6 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 BBWY.Server.Business/Sync/JDPopularizeSyncBusiness.cs create mode 100644 BBWY.Server.Model/Dto/Request/Sync/SyncShopPopularizeRequest.cs diff --git a/BBWY.Server.API/Controllers/PlatformSDKController.cs b/BBWY.Server.API/Controllers/PlatformSDKController.cs index 20823342..9771f710 100644 --- a/BBWY.Server.API/Controllers/PlatformSDKController.cs +++ b/BBWY.Server.API/Controllers/PlatformSDKController.cs @@ -182,9 +182,20 @@ namespace BBWY.Server.API.Controllers /// /// [HttpPost] - public JToken GetNoPayOrder([FromBody]SearchPlatformOrderRequest searchOrderRequest) + public JToken GetNoPayOrder([FromBody] SearchPlatformOrderRequest searchOrderRequest) { return platformSDKBusinessList.FirstOrDefault(p => p.Platform == searchOrderRequest.Platform).GetNoPayOrder(searchOrderRequest); } + + /// + /// 查询京东推广费用 + /// + /// + /// + [HttpPost] + public JArray GetJDShopSopularizeRecordList([FromBody] SyncShopPopularizeRequest syncShopPopularizeRequest) + { + return platformSDKBusinessList.FirstOrDefault(p => p.Platform == syncShopPopularizeRequest.Platform).GetJDShopSopularizeRecordList(syncShopPopularizeRequest); + } } } diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index 4bc0b5d1..39d392fd 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -467,8 +467,26 @@ namespace BBWY.Server.Business response.Json = JsonConvert.DeserializeObject(response.Body); if (response.Json["jingdong_pop_order_notPayOrderById_responce"] == null) throw new BusinessException($"未查询到未付款订单"); - + return response.Json; } + + public override JArray GetJDShopSopularizeRecordList(SyncShopPopularizeRequest syncShopPopularizeRequest) + { + var jdClient = GetJdClient(syncShopPopularizeRequest.AppKey, syncShopPopularizeRequest.AppSecret); + var req = new DspPlatformFinanceOpenapiQuerycostdetailsRequest(); + req.beginDate = syncShopPopularizeRequest.StartDate.ToString("yyyy-MM-dd"); + req.endDate = syncShopPopularizeRequest.EndDate.ToString("yyyy-MM-dd"); + req.pageNo = 1; + req.pageSize = 100; + req.moneyType = 1; + + var response = jdClient.Execute(req, syncShopPopularizeRequest.AppToken, DateTime.Now.ToLocalTime()); + if (response.IsError) + throw new BusinessException($"获取JD推广费用失败,{(string.IsNullOrEmpty(response.ErrorMsg) ? response.ErrMsg : response.ErrorMsg)}"); + if (response.Json == null) + response.Json = JsonConvert.DeserializeObject(response.Body); + return (JArray)response.Json["jingdong_dsp_platform_finance_openapi_querycostdetails_responce"]["returnType"]["data"]["page"]["data"]; + } } } diff --git a/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs b/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs index 825a7679..f70e9349 100644 --- a/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs @@ -107,5 +107,10 @@ namespace BBWY.Server.Business { throw new NotImplementedException(); } + + public virtual JArray GetJDShopSopularizeRecordList(SyncShopPopularizeRequest syncShopPopularizeRequest) + { + throw new NotImplementedException(); + } } } diff --git a/BBWY.Server.Business/Sync/JDPopularizeSyncBusiness.cs b/BBWY.Server.Business/Sync/JDPopularizeSyncBusiness.cs new file mode 100644 index 00000000..5dca9e8f --- /dev/null +++ b/BBWY.Server.Business/Sync/JDPopularizeSyncBusiness.cs @@ -0,0 +1,87 @@ +using BBWY.Common.Http; +using BBWY.Common.Models; +using BBWY.Server.Model; +using BBWY.Server.Model.Dto; +using Microsoft.Extensions.Options; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using NLog; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Yitter.IdGenerator; + +namespace BBWY.Server.Business.Sync +{ + public class JDPopularizeSyncBusiness : BaseSyncBusiness, IDenpendency + { + public JDPopularizeSyncBusiness(RestApiService restApiService, + IOptions options, + ILogger logger, + IFreeSql fsql, + IIdGenerator idGenerator, + TaskSchedulerManager taskSchedulerManager, + VenderBusiness venderBusiness) : base(restApiService, + options, + logger, + fsql, + idGenerator, + taskSchedulerManager, + venderBusiness) + { + + } + + private void SyncShopPopularizeRecord(long shopId, JArray jArray) + { + + } + + private void SyncShopPopularizeRecord(ShopResponse shop, DateTime startDate, DateTime endDate) + { + try + { + var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); + var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDShopSopularizeRecordList", new SyncShopPopularizeRequest() + { + AppKey = shop.AppKey, + AppSecret = shop.AppSecret, + AppToken = shop.AppToken, + EndDate = endDate, + StartDate = startDate, + Platform = shop.PlatformId, + }, null, HttpMethod.Post); + if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) + throw new Exception($"获取JD推广费用失败 {httpResult.Content}"); + + var presponse = JsonConvert.DeserializeObject>(httpResult.Content); + if (!presponse.Success) + throw new Exception($"获取JD推广费用失败 {presponse.Msg}"); + + SyncShopPopularizeRecord(long.Parse(shop.ShopId), presponse.Data); + } + catch (Exception ex) + { + var shopData = JsonConvert.SerializeObject(shop); + logger.Error(ex, $"SyncOrder ShopData:{shopData}"); + } + } + + + public void SyncAllShopPopularizeRecord() + { + var shopList = venderBusiness.GetShopList(); + foreach (var shop in shopList) + { + Task.Factory.StartNew(() => SyncShopPopularizeRecord(shop, + DateTime.Now.Date.AddDays(-1), + DateTime.Now.Date.AddDays(-1)), + System.Threading.CancellationToken.None, + TaskCreationOptions.LongRunning, + taskSchedulerManager.JDPopularizeTaskScheduler); + } + } + } +} diff --git a/BBWY.Server.Business/TaskSchedulerManager.cs b/BBWY.Server.Business/TaskSchedulerManager.cs index 7e966818..189e9c02 100644 --- a/BBWY.Server.Business/TaskSchedulerManager.cs +++ b/BBWY.Server.Business/TaskSchedulerManager.cs @@ -14,6 +14,8 @@ namespace BBWY.Server.Business public LimitedConcurrencyLevelTaskScheduler PurchaseOrderCallbackTaskScheduler { get; private set; } + public LimitedConcurrencyLevelTaskScheduler JDPopularizeTaskScheduler { get; private set; } + public TaskSchedulerManager() { SyncOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); @@ -21,6 +23,7 @@ namespace BBWY.Server.Business SyncAfterOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); PurchaseOrderCallbackTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); ProductSyncTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(5); + JDPopularizeTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); } } } diff --git a/BBWY.Server.Model/Dto/Request/Sync/SyncShopPopularizeRequest.cs b/BBWY.Server.Model/Dto/Request/Sync/SyncShopPopularizeRequest.cs new file mode 100644 index 00000000..f0b0537c --- /dev/null +++ b/BBWY.Server.Model/Dto/Request/Sync/SyncShopPopularizeRequest.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Server.Model.Dto +{ + public class SyncShopPopularizeRequest:PlatformRequest + { + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + } +}