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; }
+ }
+}