shanji 2 years ago
parent
commit
90b5c1021f
  1. 4
      BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
  2. 18
      BBWY.Server.Business/BaseBusiness.cs
  3. 3
      BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs
  4. 2
      BBWY.Server.Business/DingDingBusiness.cs
  5. 55
      BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs
  6. 3
      BBWY.Server.Business/FinancialTerminal/FinancialTerminalBusiness.cs
  7. 144
      BBWY.Server.Business/Order/OrderBusiness.cs
  8. 50
      BBWY.Server.Business/Product/ProductBusiness.cs
  9. 6
      BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  10. 4
      BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs
  11. 4
      BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  12. 5
      BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs
  13. 11
      BBWY.Server.Business/SiNan/GOIWarningBusiness.cs
  14. 4
      BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs
  15. 2
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  16. 455
      BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs
  17. 29
      BBWY.Server.Business/Sync/BaseSyncBusiness.cs
  18. 52
      BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdGroupLevelSyncBusiness.cs
  19. 56
      BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs
  20. 53
      BBWY.Server.Business/Sync/JD/JDPopularizeReportFormCampaignLevelSyncBusiness.cs
  21. 55
      BBWY.Server.Business/Sync/JD/JDPopularizeReportFormOrderLevelSyncBusiness.cs
  22. 73
      BBWY.Server.Business/Sync/JD/JDPopularizeReportFormSkuLevelSyncBusiness.cs
  23. 68
      BBWY.Server.Business/Sync/JD/JDPopularizeSyncBusiness.cs
  24. 127
      BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs
  25. 3
      BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs
  26. 115
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  27. 27
      BBWY.Server.Business/Sync/ProductSyncBusiness.cs
  28. 40
      BBWY.Server.Business/Sync/StoreHouseSyncBusiness.cs
  29. 70
      BBWY.Server.Business/Vender/VenderBusiness.cs

4
BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs

@ -3,6 +3,7 @@ using BBWY.Server.Business.Extensions;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -11,9 +12,8 @@ namespace BBWY.Server.Business
{ {
public class AfterSaleOrderBusiness : BaseBusiness, IDenpendency public class AfterSaleOrderBusiness : BaseBusiness, IDenpendency
{ {
public AfterSaleOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) public AfterSaleOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
} }
private Expression<Func<AfterSaleOrder, OrderSku, OrderConsignee, AfterSaleOrderResponse>> GetExpressionField() private Expression<Func<AfterSaleOrder, OrderSku, OrderConsignee, AfterSaleOrderResponse>> GetExpressionField()

18
BBWY.Server.Business/BaseBusiness.cs

@ -1,4 +1,8 @@
using Yitter.IdGenerator; using BBWY.Common.Models;
using BBWY.Server.Model;
using System.Collections.Generic;
using System.Linq;
using Yitter.IdGenerator;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class BaseBusiness public class BaseBusiness
@ -6,12 +10,22 @@ namespace BBWY.Server.Business
protected IFreeSql fsql; protected IFreeSql fsql;
protected NLogManager nLogManager; protected NLogManager nLogManager;
protected IIdGenerator idGenerator; protected IIdGenerator idGenerator;
protected IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;
public BaseBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) public BaseBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList)
{ {
this.fsql = fsql; this.fsql = fsql;
this.nLogManager = nLogManager; this.nLogManager = nLogManager;
this.idGenerator = idGenerator; this.idGenerator = idGenerator;
this.platformSDKBusinessList = platformSDKBusinessList;
}
public PlatformSDKBusiness GetPlatformSDKBusiness(Enums.Platform platofrm)
{
var pb = platformSDKBusinessList.FirstOrDefault(p => p.Platform == platofrm);
if (pb == null)
throw new BusinessException($"不支持平台{platofrm}");
return pb;
} }
} }
} }

3
BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs

@ -11,9 +11,8 @@ namespace BBWY.Server.Business
{ {
public class BillCorrectionBusiness : BaseBusiness, IDenpendency public class BillCorrectionBusiness : BaseBusiness, IDenpendency
{ {
public BillCorrectionBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) public BillCorrectionBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
} }
public IList<BillCorrectionOrderResponse> GetBillCorrectionOrderList(QueryBillCorrectionOrderRequest request) public IList<BillCorrectionOrderResponse> GetBillCorrectionOrderList(QueryBillCorrectionOrderRequest request)

2
BBWY.Server.Business/DingDingBusiness.cs

@ -14,7 +14,7 @@ namespace BBWY.Server.Business
{ {
private RestApiService restApiService; private RestApiService restApiService;
public DingDingBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) public DingDingBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, RestApiService restApiService, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
this.restApiService = restApiService; this.restApiService = restApiService;
} }

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

@ -1,15 +1,10 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -22,7 +17,7 @@ namespace BBWY.Server.Business
private IList<Enums.StorageType> validStorageTypeList; private IList<Enums.StorageType> validStorageTypeList;
private DingDingBusiness dingDingBusiness; private DingDingBusiness dingDingBusiness;
public JDStockNumWarningBusiness(RestApiService restApiService, IOptions<GlobalConfig> options, NLogManager nLogManager, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness, DingDingBusiness dingDingBusiness) : base(restApiService, options, nLogManager, fsql, idGenerator, taskSchedulerManager, venderBusiness, yunDingBusiness) public JDStockNumWarningBusiness(NLogManager nLogManager, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList, VenderBusiness venderBusiness, DingDingBusiness dingDingBusiness) : base(nLogManager, fsql, idGenerator, taskSchedulerManager, platformSDKBusinessList, venderBusiness)
{ {
validStorageTypeList = new List<Enums.StorageType>() { validStorageTypeList = new List<Enums.StorageType>() {
Enums.StorageType., Enums.StorageType.,
@ -32,6 +27,16 @@ namespace BBWY.Server.Business
this.dingDingBusiness = dingDingBusiness; this.dingDingBusiness = dingDingBusiness;
} }
//public JDStockNumWarningBusiness( NLogManager nLogManager, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, DingDingBusiness dingDingBusiness, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(restApiService, options, nLogManager, fsql, idGenerator, taskSchedulerManager, venderBusiness, platformSDKBusinessList)
//{
// validStorageTypeList = new List<Enums.StorageType>() {
// Enums.StorageType.云仓,
// Enums.StorageType.京仓,
// Enums.StorageType.本地自发
// };
// this.dingDingBusiness = dingDingBusiness;
//}
public void StartCheckStockNum() public void StartCheckStockNum()
{ {
var storeHouseList = fsql.Select<Storehouse>().Where(s => s.Platform == Enums.Platform.).ToList(); var storeHouseList = fsql.Select<Storehouse>().Where(s => s.Platform == Enums.Platform.).ToList();
@ -155,25 +160,35 @@ namespace BBWY.Server.Business
} }
Thread.Sleep(1000); Thread.Sleep(1000);
var restApiResult = restApiService.SendRequest(GetPlatformRelayAPIHost(shop.PlatformId), "api/platformsdk/GetStockNumBySku", new SearchProductSkuRequest() var response = GetPlatformSDKBusiness(Enums.Platform.).GetStockNumBySku(
{ new SearchProductSkuRequest()
AppKey = shop.AppKey, {
AppSecret = shop.AppSecret, AppKey = shop.AppKey,
AppToken = shop.AppToken, AppSecret = shop.AppSecret,
Platform = shop.PlatformId, AppToken = shop.AppToken,
Sku = sku Platform = shop.PlatformId,
}, GetYunDingRequestHeader(), HttpMethod.Post); Sku = sku
if (restApiResult.StatusCode != System.Net.HttpStatusCode.OK) });
throw new Exception($"{sku} {restApiResult.Content}");
var response = JsonConvert.DeserializeObject<ApiResponse<JArray>>(restApiResult.Content); //var restApiResult = restApiService.SendRequest(GetPlatformRelayAPIHost(shop.PlatformId), "api/platformsdk/GetStockNumBySku", new SearchProductSkuRequest()
if (response.Data == null || response.Data.Count() == 0) //{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// Platform = shop.PlatformId,
// Sku = sku
//}, GetYunDingRequestHeader(), HttpMethod.Post);
//if (restApiResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"{sku} {restApiResult.Content}");
//var response = JsonConvert.DeserializeObject<ApiResponse<JArray>>(restApiResult.Content);
if (response == null || response?.Count() == 0)
{ {
logContentBuilder.AppendLine("未查询到JD库存数据"); logContentBuilder.AppendLine("未查询到JD库存数据");
nLogManager.GetLogger(loggerName).Info(logContentBuilder); nLogManager.GetLogger(loggerName).Info(logContentBuilder);
continue; continue;
} }
var skuStockNumList = response.Data.Select(j => new var skuStockNumList = response.Select(j => new
{ {
StockNum = j.Value<int>("stockNum"), StockNum = j.Value<int>("stockNum"),
Store = storeHouseList.FirstOrDefault(s => s.Id == j.Value<string>("storeId")), Store = storeHouseList.FirstOrDefault(s => s.Id == j.Value<string>("storeId")),

3
BBWY.Server.Business/FinancialTerminal/FinancialTerminalBusiness.cs

@ -10,9 +10,8 @@ namespace BBWY.Server.Business
{ {
public class FinancialTerminalBusiness : BaseBusiness, IDenpendency public class FinancialTerminalBusiness : BaseBusiness, IDenpendency
{ {
public FinancialTerminalBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) public FinancialTerminalBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
} }
public IList<AuditPayBillResponse> GetAuditPayBillList(QueryAuditPayBillRequest request) public IList<AuditPayBillResponse> GetAuditPayBillList(QueryAuditPayBillRequest request)

144
BBWY.Server.Business/Order/OrderBusiness.cs

@ -1,5 +1,4 @@
using BBWY.Common.Extensions; using BBWY.Common.Extensions;
using BBWY.Common.Http;
using BBWY.Common.Models; using BBWY.Common.Models;
using BBWY.Server.Business.Extensions; using BBWY.Server.Business.Extensions;
using BBWY.Server.Model; using BBWY.Server.Model;
@ -9,24 +8,16 @@ using BBWY.Server.Model.Dto;
using FreeSql; using FreeSql;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Net.Http;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class OrderBusiness : BasePlatformRelayBusiness, IDenpendency public class OrderBusiness : BaseBusiness, IDenpendency
{ {
private IFreeSql fsql;
private IIdGenerator idGenerator;
private Lazy<ProductBusiness> productBusinessLazy; private Lazy<ProductBusiness> productBusinessLazy;
private ProductBusiness productBusiness => productBusinessLazy.Value; private ProductBusiness productBusiness => productBusinessLazy.Value;
@ -36,12 +27,12 @@ namespace BBWY.Server.Business
private IMemoryCache memoryCache; private IMemoryCache memoryCache;
private static TimeSpan sdGroupExpirationTimeSpan = TimeSpan.FromMinutes(20); private static TimeSpan sdGroupExpirationTimeSpan = TimeSpan.FromMinutes(20);
public OrderBusiness(RestApiService restApiService, public OrderBusiness(IFreeSql fsql,
IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
IOptions<GlobalConfig> options, NLogManager nLogManager,
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
IMemoryCache memoryCache, YunDingBusiness yunDingBusiness) : base(restApiService, options, yunDingBusiness) IMemoryCache memoryCache,
IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
this.fsql = fsql; this.fsql = fsql;
this.idGenerator = idGenerator; this.idGenerator = idGenerator;
@ -408,28 +399,30 @@ namespace BBWY.Server.Business
/// <exception cref="BusinessException"></exception> /// <exception cref="BusinessException"></exception>
public ConsigneeSimpleResponse DecryptConsignee(DecryptConsigneeRequest decryptConsigneeRequest) public ConsigneeSimpleResponse DecryptConsignee(DecryptConsigneeRequest decryptConsigneeRequest)
{ {
var relayAPIHost = GetPlatformRelayAPIHost(decryptConsigneeRequest.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(decryptConsigneeRequest.Platform);
var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/DecryptConsignee", decryptConsigneeRequest, GetYunDingRequestHeader(), HttpMethod.Post); //var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/DecryptConsignee", decryptConsigneeRequest, GetYunDingRequestHeader(), HttpMethod.Post);
if (sendResult.StatusCode != System.Net.HttpStatusCode.OK) //if (sendResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode }; // throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode };
var response = JsonConvert.DeserializeObject<ApiResponse<ConsigneeSimpleResponse>>(sendResult.Content); //var response = JsonConvert.DeserializeObject<ApiResponse<ConsigneeSimpleResponse>>(sendResult.Content);
if (!response.Success) //if (!response.Success)
throw new BusinessException(response.Msg) { Code = response.Code }; // throw new BusinessException(response.Msg) { Code = response.Code };
var response = GetPlatformSDKBusiness(decryptConsigneeRequest.Platform).DecryptConsignee(decryptConsigneeRequest);
if (!string.IsNullOrEmpty(decryptConsigneeRequest.PlaintextMobile)) if (!string.IsNullOrEmpty(decryptConsigneeRequest.PlaintextMobile))
response.Data.Mobile = decryptConsigneeRequest.PlaintextMobile; response.Mobile = decryptConsigneeRequest.PlaintextMobile;
//将解密后的收货人信息存至数据库 //将解密后的收货人信息存至数据库
if (decryptConsigneeRequest.SaveDb) if (decryptConsigneeRequest.SaveDb)
{ {
fsql.Update<OrderConsignee>(decryptConsigneeRequest.OrderId).Set(oc => oc.ContactName, response.Data.ContactName) fsql.Update<OrderConsignee>(decryptConsigneeRequest.OrderId).Set(oc => oc.ContactName, response.ContactName)
.Set(oc => oc.Address, response.Data.Address) .Set(oc => oc.Address, response.Address)
.SetIf(!string.IsNullOrEmpty(response.Data.Mobile), oc => oc.Mobile, response.Data.Mobile) .SetIf(!string.IsNullOrEmpty(response.Mobile), oc => oc.Mobile, response.Mobile)
.SetIf(!string.IsNullOrEmpty(response.Data.TelePhone), oc => oc.TelePhone, response.Data.TelePhone) .SetIf(!string.IsNullOrEmpty(response.TelePhone), oc => oc.TelePhone, response.TelePhone)
.Set(oc => oc.IsDecode, true) .Set(oc => oc.IsDecode, true)
.ExecuteAffrows(); .ExecuteAffrows();
} }
return response.Data; return response;
} }
/// <summary> /// <summary>
@ -701,9 +694,7 @@ namespace BBWY.Server.Business
return; return;
} }
//修改平台订单备注 GetPlatformSDKBusiness(sdCalculationCostRequest.Platform).EditVenderRemark(new EditVenderRemarkRequest()
var relayAPIHost = GetPlatformRelayAPIHost(sdCalculationCostRequest.Platform);
var editApiResult = restApiService.SendRequest(relayAPIHost, "/Api/PlatformSDK/EditVenderRemark", new EditVenderRemarkRequest()
{ {
AppKey = sdCalculationCostRequest.AppKey, AppKey = sdCalculationCostRequest.AppKey,
AppSecret = sdCalculationCostRequest.AppSecret, AppSecret = sdCalculationCostRequest.AppSecret,
@ -712,12 +703,25 @@ namespace BBWY.Server.Business
OrderId = sdCalculationCostRequest.OrderId, OrderId = sdCalculationCostRequest.OrderId,
Platform = sdCalculationCostRequest.Platform, Platform = sdCalculationCostRequest.Platform,
VenderRemark = sdCalculationCostRequest.VenderRemark VenderRemark = sdCalculationCostRequest.VenderRemark
}, GetYunDingRequestHeader(), HttpMethod.Post); });
if (editApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException($"修改商家备注失败 {editApiResult.Content}") { Code = (int)editApiResult.StatusCode }; //修改平台订单备注
var editResponse = JsonConvert.DeserializeObject<ApiResponse>(editApiResult.Content); //var relayAPIHost = GetPlatformRelayAPIHost(sdCalculationCostRequest.Platform);
if (!editResponse.Success) //var editApiResult = restApiService.SendRequest(relayAPIHost, "/Api/PlatformSDK/EditVenderRemark", new EditVenderRemarkRequest()
throw new BusinessException(editResponse.Msg); //{
// AppKey = sdCalculationCostRequest.AppKey,
// AppSecret = sdCalculationCostRequest.AppSecret,
// AppToken = sdCalculationCostRequest.AppToken,
// Flag = sdCalculationCostRequest.Flag,
// OrderId = sdCalculationCostRequest.OrderId,
// Platform = sdCalculationCostRequest.Platform,
// VenderRemark = sdCalculationCostRequest.VenderRemark
//}, GetYunDingRequestHeader(), HttpMethod.Post);
//if (editApiResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new BusinessException($"修改商家备注失败 {editApiResult.Content}") { Code = (int)editApiResult.StatusCode };
//var editResponse = JsonConvert.DeserializeObject<ApiResponse>(editApiResult.Content);
//if (!editResponse.Success)
// throw new BusinessException(editResponse.Msg);
IUpdate<Order> orderUpdate = null; IUpdate<Order> orderUpdate = null;
IUpdate<OrderCost> updateOrderCost = null; IUpdate<OrderCost> updateOrderCost = null;
@ -986,13 +990,15 @@ namespace BBWY.Server.Business
if (dbOrder.OrderState != Enums.OrderState.) if (dbOrder.OrderState != Enums.OrderState.)
throw new BusinessException($"订单{outStockRequest.OrderId} 只有在待出库时才允许出库"); throw new BusinessException($"订单{outStockRequest.OrderId} 只有在待出库时才允许出库");
var relayAPIHost = GetPlatformRelayAPIHost(outStockRequest.Platform); GetPlatformSDKBusiness(outStockRequest.Platform).OutStock(outStockRequest);
var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/OutStock", outStockRequest, GetYunDingRequestHeader(), HttpMethod.Post);
if (sendResult.StatusCode != System.Net.HttpStatusCode.OK) //var relayAPIHost = GetPlatformRelayAPIHost(outStockRequest.Platform);
throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode }; //var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/OutStock", outStockRequest, GetYunDingRequestHeader(), HttpMethod.Post);
var response = JsonConvert.DeserializeObject<ApiResponse<ConsigneeSimpleResponse>>(sendResult.Content); //if (sendResult.StatusCode != System.Net.HttpStatusCode.OK)
if (!response.Success) // throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode };
throw new BusinessException(response.Msg) { Code = response.Code }; //var response = JsonConvert.DeserializeObject<ApiResponse<ConsigneeSimpleResponse>>(sendResult.Content);
//if (!response.Success)
// throw new BusinessException(response.Msg) { Code = response.Code };
fsql.Update<Order>(outStockRequest.OrderId).Set(o => o.OrderState, Enums.OrderState.) fsql.Update<Order>(outStockRequest.OrderId).Set(o => o.OrderState, Enums.OrderState.)
.Set(o => o.WaybillNo, outStockRequest.WayBillNo) .Set(o => o.WaybillNo, outStockRequest.WayBillNo)
@ -1006,16 +1012,18 @@ namespace BBWY.Server.Business
public void EditVenderRemark(EditVenderRemarkRequest editVenderRemarkRequest) public void EditVenderRemark(EditVenderRemarkRequest editVenderRemarkRequest)
{ {
//修改平台订单备注 //修改平台订单备注
var relayAPIHost = GetPlatformRelayAPIHost(editVenderRemarkRequest.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(editVenderRemarkRequest.Platform);
if (editVenderRemarkRequest.Platform == Enums.Platform.) if (editVenderRemarkRequest.Platform == Enums.Platform.)
{ {
var editApiResult = restApiService.SendRequest(relayAPIHost, "/Api/PlatformSDK/EditVenderRemark", editVenderRemarkRequest, GetYunDingRequestHeader(), HttpMethod.Post); //var editApiResult = restApiService.SendRequest(relayAPIHost, "/Api/PlatformSDK/EditVenderRemark", editVenderRemarkRequest, GetYunDingRequestHeader(), HttpMethod.Post);
if (editApiResult.StatusCode != System.Net.HttpStatusCode.OK) //if (editApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException($"修改商家备注失败 {editApiResult.Content}") { Code = (int)editApiResult.StatusCode }; // throw new BusinessException($"修改商家备注失败 {editApiResult.Content}") { Code = (int)editApiResult.StatusCode };
var editResponse = JsonConvert.DeserializeObject<ApiResponse>(editApiResult.Content); //var editResponse = JsonConvert.DeserializeObject<ApiResponse>(editApiResult.Content);
if (!editResponse.Success) //if (!editResponse.Success)
throw new BusinessException(editResponse.Msg); // throw new BusinessException(editResponse.Msg);
GetPlatformSDKBusiness(editVenderRemarkRequest.Platform).EditVenderRemark(editVenderRemarkRequest);
} }
else else
{ {
@ -1041,19 +1049,29 @@ namespace BBWY.Server.Business
if (orderResponse == null) if (orderResponse == null)
{ {
var relayAPIHost = GetPlatformRelayAPIHost(request.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(request.Platform);
var orderApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetNoPayOrder", new SearchPlatformOrderRequest() //var orderApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetNoPayOrder", new SearchPlatformOrderRequest()
{ //{
OrderId = request.OrderId, // OrderId = request.OrderId,
AppKey = request.AppKey, // AppKey = request.AppKey,
AppSecret = request.AppSecret, // AppSecret = request.AppSecret,
AppToken = request.AppToken, // AppToken = request.AppToken,
Platform = request.Platform, // Platform = request.Platform,
}, GetYunDingRequestHeader(), HttpMethod.Post); //}, GetYunDingRequestHeader(), HttpMethod.Post);
if (orderApiResult.StatusCode != System.Net.HttpStatusCode.OK) //if (orderApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException($"获取未付款订单失败 {orderApiResult.Content}"); // throw new BusinessException($"获取未付款订单失败 {orderApiResult.Content}");
var orderJToken = JToken.Parse(orderApiResult.Content); var orderJToken = GetPlatformSDKBusiness(request.Platform).GetNoPayOrder(
new SearchPlatformOrderRequest()
{
OrderId = request.OrderId,
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
Platform = request.Platform,
});
//var orderJToken = JToken.Parse(orderApiResult.Content);
var orderInfoJToken = orderJToken["Data"]["jingdong_pop_order_notPayOrderById_responce"]["orderDataNotPayInfo"]; var orderInfoJToken = orderJToken["Data"]["jingdong_pop_order_notPayOrderById_responce"]["orderDataNotPayInfo"];
if (orderInfoJToken == null || !orderInfoJToken.HasValues) if (orderInfoJToken == null || !orderInfoJToken.HasValues)
throw new BusinessException("未查询到待付款订单"); throw new BusinessException("未查询到待付款订单");

50
BBWY.Server.Business/Product/ProductBusiness.cs

@ -1,44 +1,42 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net.Http; using System.Linq;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class ProductBusiness : BasePlatformRelayBusiness, IDenpendency public class ProductBusiness : IDenpendency
{ {
public ProductBusiness(RestApiService restApiService, IConfiguration configuration, IOptions<GlobalConfig> options, YunDingBusiness yunDingBusiness) : base(restApiService, options, yunDingBusiness) private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;
public ProductBusiness(IEnumerable<PlatformSDKBusiness> platformSDKBusinessList)
{ {
this.platformSDKBusinessList = platformSDKBusinessList;
} }
public ProductListResponse GetProductList(SearchProductRequest searchProductRequest) public ProductListResponse GetProductList(SearchProductRequest searchProductRequest)
{ {
var relayAPIHost = GetPlatformRelayAPIHost(searchProductRequest.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(searchProductRequest.Platform);
var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetProductList", searchProductRequest, GetYunDingRequestHeader(), HttpMethod.Post); //var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetProductList", searchProductRequest, GetYunDingRequestHeader(), HttpMethod.Post);
if (sendResult.StatusCode != System.Net.HttpStatusCode.OK) //if (sendResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode }; // throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode };
var response = JsonConvert.DeserializeObject<ApiResponse<ProductListResponse>>(sendResult.Content); //var response = JsonConvert.DeserializeObject<ApiResponse<ProductListResponse>>(sendResult.Content);
if (!response.Success) //if (!response.Success)
throw new BusinessException(response.Msg) { Code = response.Code }; // throw new BusinessException(response.Msg) { Code = response.Code };
return response.Data; //return response.Data;
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == searchProductRequest.Platform).GetProductList(searchProductRequest);
} }
public IList<ProductSkuResponse> GetProductSkuList(SearchProductSkuRequest searchProductSkuRequest) public IList<ProductSkuResponse> GetProductSkuList(SearchProductSkuRequest searchProductSkuRequest)
{ {
var relayAPIHost = GetPlatformRelayAPIHost(searchProductSkuRequest.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(searchProductSkuRequest.Platform);
var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetProductSkuList", searchProductSkuRequest, GetYunDingRequestHeader(), HttpMethod.Post); //var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetProductSkuList", searchProductSkuRequest, GetYunDingRequestHeader(), HttpMethod.Post);
if (sendResult.StatusCode != System.Net.HttpStatusCode.OK) //if (sendResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode }; // throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode };
var response = JsonConvert.DeserializeObject<ApiResponse<IList<ProductSkuResponse>>>(sendResult.Content); //var response = JsonConvert.DeserializeObject<ApiResponse<IList<ProductSkuResponse>>>(sendResult.Content);
if (!response.Success) //if (!response.Success)
throw new BusinessException(response.Msg) { Code = response.Code }; // throw new BusinessException(response.Msg) { Code = response.Code };
return response.Data; //return response.Data;
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == searchProductSkuRequest.Platform).GetProductSkuList(searchProductSkuRequest);
} }
} }
} }

6
BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -4,15 +4,12 @@ using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using FreeSql; using FreeSql;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using QuanTan.SDK.Model; using QuanTan.SDK.Model;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions;
using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -21,7 +18,6 @@ namespace BBWY.Server.Business
{ {
public class PurchaseOrderBusiness : BaseBusiness, IDenpendency public class PurchaseOrderBusiness : BaseBusiness, IDenpendency
{ {
private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;
private TaskSchedulerManager taskSchedulerManager; private TaskSchedulerManager taskSchedulerManager;
private OrderBusiness orderBusiness; private OrderBusiness orderBusiness;
private MDSBusiness mdsBusiness; private MDSBusiness mdsBusiness;
@ -37,7 +33,7 @@ namespace BBWY.Server.Business
OrderBusiness orderBusiness, OrderBusiness orderBusiness,
MDSBusiness mdsBusiness, MDSBusiness mdsBusiness,
VenderBusiness venderBusiness, VenderBusiness venderBusiness,
LogisticsCompanyConverter logisticsCompanyConverter) : base(fsql, nLogManager, idGenerator) LogisticsCompanyConverter logisticsCompanyConverter) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
this.platformSDKBusinessList = platformSDKBusinessList; this.platformSDKBusinessList = platformSDKBusinessList;
this.taskSchedulerManager = taskSchedulerManager; this.taskSchedulerManager = taskSchedulerManager;

4
BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs

@ -3,7 +3,6 @@ using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using FreeSql; using FreeSql;
using Jd.Api.Domain;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using System;
@ -17,13 +16,12 @@ namespace BBWY.Server.Business
public class BatchPurchaseBusiness : BaseBusiness, IDenpendency public class BatchPurchaseBusiness : BaseBusiness, IDenpendency
{ {
private ProductBusiness productBusiness; private ProductBusiness productBusiness;
private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;
public BatchPurchaseBusiness(IFreeSql fsql, public BatchPurchaseBusiness(IFreeSql fsql,
NLogManager nLogManager, NLogManager nLogManager,
IIdGenerator idGenerator, IIdGenerator idGenerator,
ProductBusiness productBusiness, ProductBusiness productBusiness,
IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator) IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
this.productBusiness = productBusiness; this.productBusiness = productBusiness;
this.platformSDKBusinessList = platformSDKBusinessList; this.platformSDKBusinessList = platformSDKBusinessList;

4
BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -11,7 +11,9 @@ namespace BBWY.Server.Business
{ {
public class PurchaseSchemeBusiness : BaseBusiness, IDenpendency public class PurchaseSchemeBusiness : BaseBusiness, IDenpendency
{ {
public PurchaseSchemeBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) { } public PurchaseSchemeBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{
}
private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest
{ {

5
BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs

@ -1,18 +1,15 @@
using BBWY.Common.Models; using BBWY.Common.Models;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class ServiceOrderBusiness : BaseBusiness, IDenpendency public class ServiceOrderBusiness : BaseBusiness, IDenpendency
{ {
public ServiceOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) public ServiceOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
} }
public ServiceOrderResponse GetList(ClientQueryServiceOrderRequest request) public ServiceOrderResponse GetList(ClientQueryServiceOrderRequest request)

11
BBWY.Server.Business/SiNan/GOIWarningBusiness.cs

@ -1,6 +1,4 @@
using BBWY.Common.Extensions; using BBWY.Common.Models;
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Business.Statistics; using BBWY.Server.Business.Statistics;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
@ -8,7 +6,6 @@ using BBWY.Server.Model.Dto;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -23,7 +20,7 @@ namespace BBWY.Server.Business.SiNan
private JDReportFormStatisticsBusiness jDReportFormStatisticsBusiness; private JDReportFormStatisticsBusiness jDReportFormStatisticsBusiness;
private DingDingBusiness dingDingBusiness; private DingDingBusiness dingDingBusiness;
public GOIWarningBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, JDReportFormStatisticsBusiness jDReportFormStatisticsBusiness, DingDingBusiness dingDingBusiness) : base(fsql, nLogManager, idGenerator) public GOIWarningBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, JDReportFormStatisticsBusiness jDReportFormStatisticsBusiness, DingDingBusiness dingDingBusiness, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
this.taskSchedulerManager = taskSchedulerManager; this.taskSchedulerManager = taskSchedulerManager;
this.venderBusiness = venderBusiness; this.venderBusiness = venderBusiness;
@ -509,8 +506,8 @@ namespace BBWY.Server.Business.SiNan
#endregion #endregion
if (dingdingSendBuilderList.Count > 0) if (dingdingSendBuilderList.Count > 0)
{ {
foreach(var sendBuilder in dingdingSendBuilderList) foreach (var sendBuilder in dingdingSendBuilderList)
dingDingBusiness.SendDingDingBotMessage(shop.SiNanDingDingKey, shop.SiNanDingDingWebHook, sendBuilder.ToString()); dingDingBusiness.SendDingDingBotMessage(shop.SiNanDingDingKey, shop.SiNanDingDingWebHook, sendBuilder.ToString());
} }
} }

4
BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs

@ -5,16 +5,14 @@ using BBWY.Server.Model.Dto;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWY.Server.Business.Statistics namespace BBWY.Server.Business.Statistics
{ {
public class JDReportFormStatisticsBusiness : BaseBusiness, IDenpendency public class JDReportFormStatisticsBusiness : BaseBusiness, IDenpendency
{ {
public JDReportFormStatisticsBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) public JDReportFormStatisticsBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
} }
public IList<JDMultiLevelGOIResponse> CalculationCampaignLevelGOI(GOIRequest gOIRequest) public IList<JDMultiLevelGOIResponse> CalculationCampaignLevelGOI(GOIRequest gOIRequest)

2
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -16,7 +16,7 @@ namespace BBWY.Server.Business
private IList<Enums.OrderState> invalidOrderStateList; private IList<Enums.OrderState> invalidOrderStateList;
private FreeSqlMultiDBManager freeSqlMultiDBManager; private FreeSqlMultiDBManager freeSqlMultiDBManager;
public StatisticsBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, FreeSqlMultiDBManager freeSqlMultiDBManager) : base(fsql, nLogManager, idGenerator) public StatisticsBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, FreeSqlMultiDBManager freeSqlMultiDBManager, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
invalidOrderStateList = new List<Enums.OrderState>() { Enums.OrderState., Enums.OrderState. }; invalidOrderStateList = new List<Enums.OrderState>() { Enums.OrderState., Enums.OrderState. };
this.freeSqlMultiDBManager = freeSqlMultiDBManager; this.freeSqlMultiDBManager = freeSqlMultiDBManager;

455
BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs

@ -1,244 +1,233 @@
using BBWY.Common.Extensions; using BBWY.Common.Models;
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Model;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using FreeSql;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NLog;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class AfterSaleOrderSyncBusiness : BaseSyncBusiness, IDenpendency public class AfterSaleOrderSyncBusiness : BaseSyncBusiness, IDenpendency
{ {
private IDictionary<Enums.Platform, Action<JArray, ShopResponse>> syncAfterSaleOrderMethodDic; //private IDictionary<Enums.Platform, Action<JArray, ShopResponse>> syncAfterSaleOrderMethodDic;
private IDictionary<int, Enums.ServiceResult> processResultDic; //private IDictionary<int, Enums.ServiceResult> processResultDic;
public AfterSaleOrderSyncBusiness(RestApiService restApiService, //public AfterSaleOrderSyncBusiness(RestApiService restApiService,
IOptions<GlobalConfig> options, // IOptions<GlobalConfig> options,
NLogManager nLogManager, // NLogManager nLogManager,
IFreeSql fsql, // IFreeSql fsql,
IIdGenerator idGenerator, // IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, // TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness) : base(restApiService, // VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness) : base(restApiService,
options, // options,
nLogManager, // nLogManager,
fsql, // fsql,
idGenerator, // idGenerator,
taskSchedulerManager, // taskSchedulerManager,
venderBusiness, // venderBusiness,
yunDingBusiness) // yunDingBusiness)
//{
// syncAfterSaleOrderMethodDic = new Dictionary<Enums.Platform, Action<JArray, ShopResponse>>()
// {
// { Enums.Platform.京东, SyncJDAfterOrder }
// };
// processResultDic = new Dictionary<int, Enums.ServiceResult>()
// {
// { 23,Enums.ServiceResult.换新},
// { 40,Enums.ServiceResult.退货},
// { 60,Enums.ServiceResult.原返},
// { 90,Enums.ServiceResult.线下换新},
// { 110,Enums.ServiceResult.商品补发}
// };
//}
//private void SyncJDAfterOrder(JArray afterOrderTokenJArray, ShopResponse shop)
//{
// var shopId = long.Parse(shop.ShopId);
// var validAfterOrderJArray = afterOrderTokenJArray.Where(j => (j.Value<int>("serviceStatus") == 10010 || j.Value<int>("serviceStatus") == 10009) && //完成
// processResultDic.ContainsKey(j.Value<int>("processResult")));
// var orderIds = validAfterOrderJArray.Select(j => j["orderId"].ToString()).Distinct().ToList();
// var orderSkuIds = validAfterOrderJArray.Select(j => j["skuId"].ToString()).Distinct().ToList();
// var updateOrders = fsql.Select<Order>().Where(o => orderIds.Contains(o.Id) && o.IsAfterSaleOrder == false).ToList();
// var dbOrderSkus = fsql.Select<OrderSku>().Where(osku => orderIds.Contains(osku.OrderId) &&
// orderSkuIds.Contains(osku.SkuId) &&
// osku.Price != 0).ToList();
// var updateOrderSkus = dbOrderSkus.Where(osku => osku.IsRefund == false).ToList();
// var afterOrders = fsql.Select<AfterSaleOrder>().Where(aso => orderIds.Contains(aso.OrderId)).ToList();
// List<AfterSaleOrder> insertAfterSaleOrders = new List<AfterSaleOrder>();
// List<IUpdate<AfterSaleOrder>> updateAfterSaleOrders = new List<IUpdate<AfterSaleOrder>>();
// foreach (var afterOrderJToken in validAfterOrderJArray)
// {
// var orderId = afterOrderJToken.Value<string>("orderId");
// var skuId = afterOrderJToken.Value<string>("skuId");
// var serviceId = afterOrderJToken.Value<string>("serviceId");
// var processResult = processResultDic[afterOrderJToken.Value<int>("processResult")];
// var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId);
// if (afterOrder == null)
// {
// var dbOrderSku = dbOrderSkus.FirstOrDefault(osku => osku.OrderId == orderId && osku.SkuId == skuId);
// if (dbOrderSku == null)
// continue;
// decimal refundAmount = 0M;
// try
// {
// if (processResult == Enums.ServiceResult.退货)
// refundAmount = SyncJDRefundOrder(shop, orderId, serviceId);
// }
// catch (Exception ex)
// {
// nLogManager.Default().Error(ex, $"SyncAfterOrder-SyncRefound ServiceId:{serviceId} OrderId:{orderId} ShopData:{JsonConvert.SerializeObject(shop)}");
// }
// insertAfterSaleOrders.Add(new AfterSaleOrder()
// {
// Id = idGenerator.NewLong(),
// CreateTime = DateTime.Now,
// OrderId = dbOrderSku.OrderId,
// ProductId = dbOrderSku.ProductId,
// RefundAmount = refundAmount,
// SkuId = skuId,
// ShopId = shopId,
// ServiceResult = processResult,
// ServiceId = serviceId,
// ApplyTime = afterOrderJToken.Value<long>("applyTime").StampToDateTime()
// });
// }
// else
// {
// if (afterOrder.ServiceResult == null ||
// (afterOrder.ServiceResult != processResult &&
// afterOrder.ServiceResult != Enums.ServiceResult.维修 &&
// afterOrder.ServiceResult != Enums.ServiceResult.仅退款 &&
// afterOrder.ServiceResult != Enums.ServiceResult.SD退货))
// {
// var update = fsql.Update<AfterSaleOrder>(afterOrder.Id).Set(aso => aso.ServiceResult, processResult);
// updateAfterSaleOrders.Add(update);
// }
// }
// }
// fsql.Transaction(() =>
// {
// if (updateOrders.Count() > 0)
// foreach (var updateOrder in updateOrders)
// fsql.Update<Order>(updateOrder.Id).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows();
// if (updateOrderSkus.Count() > 0)
// foreach (var updateOrderSku in updateOrderSkus)
// fsql.Update<OrderSku>(updateOrderSku.Id).Set(osku => osku.IsRefund, true).ExecuteAffrows();
// if (insertAfterSaleOrders.Count() > 0)
// fsql.Insert(insertAfterSaleOrders).ExecuteAffrows();
// if (updateAfterSaleOrders.Count() > 0)
// foreach (var update in updateAfterSaleOrders)
// update.ExecuteAffrows();
// });
//}
//private void SyncAfterOrder(ShopResponse shop, string orderId, DateTime? startTime = null, DateTime? endTime = null, bool isAuto = false)
//{
// try
// {
// //logger.Info($"售后订单同步 {shop.ShopName} isAuto {isAuto}");
// if (!syncAfterSaleOrderMethodDic.ContainsKey(shop.PlatformId))
// throw new Exception("不支持的平台");
// var shopId = long.Parse(shop.ShopId);
// var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
// var afterOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetAfterOrderList", new SyncAfterOrderRequest()
// {
// StartDate = startTime ?? DateTime.Now.Date.AddDays(-3),
// EndDate = endTime ?? DateTime.Now,
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// PageIndex = 1,
// PageSize = 50,
// Platform = shop.PlatformId,
// SaveResponseLog = true,
// OrderId = orderId,
// VenderId = shop.VenderId
// }, GetYunDingRequestHeader(), HttpMethod.Post);
// if (afterOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"获取退款订单失败 {afterOrderListApiResult.Content}");
// var afterOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(afterOrderListApiResult.Content);
// if (!afterOrderListResponse.Success)
// throw new Exception($"获取退款订单失败 {afterOrderListApiResult.Content}");
// if (afterOrderListResponse.Data == null || afterOrderListResponse.Data.Count == 0)
// return;
// syncAfterSaleOrderMethodDic[shop.PlatformId](afterOrderListResponse.Data, shop);
// }
// catch (Exception ex)
// {
// var shopData = JsonConvert.SerializeObject(shop);
// nLogManager.Default().Error(ex, $"SyncAfterOrder ShopData:{shopData}");
// }
//}
//public void SyncAllShopAfterOrder()
//{
// var shopList = venderBusiness.GetShopList(platform: Enums.Platform.京东);
// //SyncAfterOrder(shopList.FirstOrDefault(s => s.ShopName == "布莱特玩具专营店"), string.Empty, isAuto: true);
// foreach (var shop in shopList)
// {
// Task.Factory.StartNew(() => SyncAfterOrder(shop, string.Empty, isAuto: true),
// System.Threading.CancellationToken.None,
// TaskCreationOptions.LongRunning,
// taskSchedulerManager.SyncAfterOrderTaskScheduler);
// }
//}
///// <summary>
///// 获取退款单
///// </summary>
///// <param name="shop"></param>
///// <param name="orderId"></param>
///// <param name="serviceId"></param>
///// <returns></returns>
///// <exception cref="Exception"></exception>
//private decimal SyncJDRefundOrder(ShopResponse shop, string orderId, string serviceId)
//{
// var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
// var refundOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetRefundList", new SearchRefundPlatformOrderRequest()
// {
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// PageIndex = 1,
// PageSize = 50,
// Platform = shop.PlatformId,
// SaveResponseLog = false,
// OrderId = orderId
// }, GetYunDingRequestHeader(), HttpMethod.Post);
// if (refundOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"获取退款订单失败 {refundOrderListApiResult.Content}");
// var refundOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(refundOrderListApiResult.Content);
// if (!refundOrderListResponse.Success)
// throw new Exception($"获取退款订单失败 {refundOrderListApiResult.Content}");
// if (refundOrderListResponse.Data == null || refundOrderListResponse.Data.Count == 0)
// return 0M;
// var jtoken = refundOrderListResponse.Data.FirstOrDefault(j => j["sameOrderServiceBill"]["serviceId"].ToString() == serviceId &&
// j.Value<int>("status") == 13 &&
// j.Value<decimal>("refoundAmount") != 0M);
// return jtoken == null ? 0M : jtoken.Value<decimal>("refoundAmount");
//}
public AfterSaleOrderSyncBusiness(NLogManager nLogManager, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList, VenderBusiness venderBusiness) : base(nLogManager, fsql, idGenerator, taskSchedulerManager, platformSDKBusinessList, venderBusiness)
{ {
syncAfterSaleOrderMethodDic = new Dictionary<Enums.Platform, Action<JArray, ShopResponse>>()
{
{ Enums.Platform., SyncJDAfterOrder }
};
processResultDic = new Dictionary<int, Enums.ServiceResult>()
{
{ 23,Enums.ServiceResult.},
{ 40,Enums.ServiceResult.退},
{ 60,Enums.ServiceResult.},
{ 90,Enums.ServiceResult.线},
{ 110,Enums.ServiceResult.}
};
}
private void SyncJDAfterOrder(JArray afterOrderTokenJArray, ShopResponse shop)
{
var shopId = long.Parse(shop.ShopId);
var validAfterOrderJArray = afterOrderTokenJArray.Where(j => (j.Value<int>("serviceStatus") == 10010 || j.Value<int>("serviceStatus") == 10009) && //完成
processResultDic.ContainsKey(j.Value<int>("processResult")));
var orderIds = validAfterOrderJArray.Select(j => j["orderId"].ToString()).Distinct().ToList();
var orderSkuIds = validAfterOrderJArray.Select(j => j["skuId"].ToString()).Distinct().ToList();
var updateOrders = fsql.Select<Order>().Where(o => orderIds.Contains(o.Id) && o.IsAfterSaleOrder == false).ToList();
var dbOrderSkus = fsql.Select<OrderSku>().Where(osku => orderIds.Contains(osku.OrderId) &&
orderSkuIds.Contains(osku.SkuId) &&
osku.Price != 0).ToList();
var updateOrderSkus = dbOrderSkus.Where(osku => osku.IsRefund == false).ToList();
var afterOrders = fsql.Select<AfterSaleOrder>().Where(aso => orderIds.Contains(aso.OrderId)).ToList();
List<AfterSaleOrder> insertAfterSaleOrders = new List<AfterSaleOrder>();
List<IUpdate<AfterSaleOrder>> updateAfterSaleOrders = new List<IUpdate<AfterSaleOrder>>();
foreach (var afterOrderJToken in validAfterOrderJArray)
{
var orderId = afterOrderJToken.Value<string>("orderId");
var skuId = afterOrderJToken.Value<string>("skuId");
var serviceId = afterOrderJToken.Value<string>("serviceId");
var processResult = processResultDic[afterOrderJToken.Value<int>("processResult")];
var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId);
if (afterOrder == null)
{
var dbOrderSku = dbOrderSkus.FirstOrDefault(osku => osku.OrderId == orderId && osku.SkuId == skuId);
if (dbOrderSku == null)
continue;
decimal refundAmount = 0M;
try
{
if (processResult == Enums.ServiceResult.退)
refundAmount = SyncJDRefundOrder(shop, orderId, serviceId);
}
catch (Exception ex)
{
nLogManager.Default().Error(ex, $"SyncAfterOrder-SyncRefound ServiceId:{serviceId} OrderId:{orderId} ShopData:{JsonConvert.SerializeObject(shop)}");
}
insertAfterSaleOrders.Add(new AfterSaleOrder()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
OrderId = dbOrderSku.OrderId,
ProductId = dbOrderSku.ProductId,
RefundAmount = refundAmount,
SkuId = skuId,
ShopId = shopId,
ServiceResult = processResult,
ServiceId = serviceId,
ApplyTime = afterOrderJToken.Value<long>("applyTime").StampToDateTime()
});
}
else
{
if (afterOrder.ServiceResult == null ||
(afterOrder.ServiceResult != processResult &&
afterOrder.ServiceResult != Enums.ServiceResult. &&
afterOrder.ServiceResult != Enums.ServiceResult.退 &&
afterOrder.ServiceResult != Enums.ServiceResult.SD退货))
{
var update = fsql.Update<AfterSaleOrder>(afterOrder.Id).Set(aso => aso.ServiceResult, processResult);
updateAfterSaleOrders.Add(update);
}
}
}
fsql.Transaction(() =>
{
if (updateOrders.Count() > 0)
foreach (var updateOrder in updateOrders)
fsql.Update<Order>(updateOrder.Id).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows();
if (updateOrderSkus.Count() > 0)
foreach (var updateOrderSku in updateOrderSkus)
fsql.Update<OrderSku>(updateOrderSku.Id).Set(osku => osku.IsRefund, true).ExecuteAffrows();
if (insertAfterSaleOrders.Count() > 0)
fsql.Insert(insertAfterSaleOrders).ExecuteAffrows();
if (updateAfterSaleOrders.Count() > 0)
foreach (var update in updateAfterSaleOrders)
update.ExecuteAffrows();
});
}
private void SyncAfterOrder(ShopResponse shop, string orderId, DateTime? startTime = null, DateTime? endTime = null, bool isAuto = false)
{
try
{
//logger.Info($"售后订单同步 {shop.ShopName} isAuto {isAuto}");
if (!syncAfterSaleOrderMethodDic.ContainsKey(shop.PlatformId))
throw new Exception("不支持的平台");
var shopId = long.Parse(shop.ShopId);
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var afterOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetAfterOrderList", new SyncAfterOrderRequest()
{
StartDate = startTime ?? DateTime.Now.Date.AddDays(-3),
EndDate = endTime ?? DateTime.Now,
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
PageIndex = 1,
PageSize = 50,
Platform = shop.PlatformId,
SaveResponseLog = true,
OrderId = orderId,
VenderId = shop.VenderId
}, GetYunDingRequestHeader(), HttpMethod.Post);
if (afterOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取退款订单失败 {afterOrderListApiResult.Content}");
var afterOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(afterOrderListApiResult.Content);
if (!afterOrderListResponse.Success)
throw new Exception($"获取退款订单失败 {afterOrderListApiResult.Content}");
if (afterOrderListResponse.Data == null || afterOrderListResponse.Data.Count == 0)
return;
syncAfterSaleOrderMethodDic[shop.PlatformId](afterOrderListResponse.Data, shop);
}
catch (Exception ex)
{
var shopData = JsonConvert.SerializeObject(shop);
nLogManager.Default().Error(ex, $"SyncAfterOrder ShopData:{shopData}");
}
}
public void SyncAllShopAfterOrder()
{
var shopList = venderBusiness.GetShopList(platform: Enums.Platform.);
//SyncAfterOrder(shopList.FirstOrDefault(s => s.ShopName == "布莱特玩具专营店"), string.Empty, isAuto: true);
foreach (var shop in shopList)
{
Task.Factory.StartNew(() => SyncAfterOrder(shop, string.Empty, isAuto: true),
System.Threading.CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.SyncAfterOrderTaskScheduler);
}
}
/// <summary>
/// 获取退款单
/// </summary>
/// <param name="shop"></param>
/// <param name="orderId"></param>
/// <param name="serviceId"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
private decimal SyncJDRefundOrder(ShopResponse shop, string orderId, string serviceId)
{
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var refundOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetRefundList", new SearchRefundPlatformOrderRequest()
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
PageIndex = 1,
PageSize = 50,
Platform = shop.PlatformId,
SaveResponseLog = false,
OrderId = orderId
}, GetYunDingRequestHeader(), HttpMethod.Post);
if (refundOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取退款订单失败 {refundOrderListApiResult.Content}");
var refundOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(refundOrderListApiResult.Content);
if (!refundOrderListResponse.Success)
throw new Exception($"获取退款订单失败 {refundOrderListApiResult.Content}");
if (refundOrderListResponse.Data == null || refundOrderListResponse.Data.Count == 0)
return 0M;
var jtoken = refundOrderListResponse.Data.FirstOrDefault(j => j["sameOrderServiceBill"]["serviceId"].ToString() == serviceId &&
j.Value<int>("status") == 13 &&
j.Value<decimal>("refoundAmount") != 0M);
return jtoken == null ? 0M : jtoken.Value<decimal>("refoundAmount");
} }
} }
} }

29
BBWY.Server.Business/Sync/BaseSyncBusiness.cs

@ -1,34 +1,41 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using Microsoft.Extensions.Options; using System.Collections.Generic;
using NLog; using System.Linq;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class BaseSyncBusiness : BasePlatformRelayBusiness, IDenpendency public class BaseSyncBusiness : IDenpendency
{ {
protected NLogManager nLogManager; protected NLogManager nLogManager;
protected IFreeSql fsql; protected IFreeSql fsql;
protected IIdGenerator idGenerator; protected IIdGenerator idGenerator;
protected TaskSchedulerManager taskSchedulerManager; protected TaskSchedulerManager taskSchedulerManager;
protected IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;
protected VenderBusiness venderBusiness; protected VenderBusiness venderBusiness;
public BaseSyncBusiness(RestApiService restApiService, public BaseSyncBusiness(NLogManager nLogManager,
IOptions<GlobalConfig> options,
NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList,
YunDingBusiness yunDingBusiness) : base(restApiService, options, yunDingBusiness) VenderBusiness venderBusiness)
{ {
this.nLogManager = nLogManager; this.nLogManager = nLogManager;
this.fsql = fsql; this.fsql = fsql;
this.idGenerator = idGenerator; this.idGenerator = idGenerator;
this.venderBusiness = venderBusiness;
this.taskSchedulerManager = taskSchedulerManager; this.taskSchedulerManager = taskSchedulerManager;
this.platformSDKBusinessList = platformSDKBusinessList;
this.venderBusiness = venderBusiness;
}
public PlatformSDKBusiness GetPlatformSDKBusiness(Enums.Platform platofrm)
{
var pb = platformSDKBusinessList.FirstOrDefault(p => p.Platform == platofrm);
if (pb == null)
throw new BusinessException($"不支持平台{platofrm}");
return pb;
} }
} }
} }

52
BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdGroupLevelSyncBusiness.cs

@ -1,17 +1,12 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -20,20 +15,19 @@ namespace BBWY.Server.Business.Sync
{ {
public class JDPopularizeReportFormAdGroupLevelSyncBusiness : BaseSyncBusiness, IDenpendency public class JDPopularizeReportFormAdGroupLevelSyncBusiness : BaseSyncBusiness, IDenpendency
{ {
public JDPopularizeReportFormAdGroupLevelSyncBusiness(RestApiService restApiService, public JDPopularizeReportFormAdGroupLevelSyncBusiness(
IOptions<GlobalConfig> options,
NLogManager nLogManager, NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness) : base(restApiService, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList,
options, VenderBusiness venderBusiness) : base(
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList,
yunDingBusiness) venderBusiness)
{ {
} }
@ -93,8 +87,7 @@ namespace BBWY.Server.Business.Sync
currentCount = 0; currentCount = 0;
try try
{ {
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var response = GetPlatformSDKBusiness(Enums.Platform.).GetJDSopularizeReportFormByAdGroupLevel(new SyncJDPopularizeReportFormRequest()
var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByAdGroupLevel", new SyncJDPopularizeReportFormRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
@ -104,19 +97,32 @@ namespace BBWY.Server.Business.Sync
Platform = shop.PlatformId, Platform = shop.PlatformId,
PageIndex = pageIndex, PageIndex = pageIndex,
Business = 2 Business = 2
}, GetYunDingRequestHeader(), HttpMethod.Post); });
//var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
//var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByAdGroupLevel", new SyncJDPopularizeReportFormRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// EndDate = endDate,
// StartDate = startDate,
// Platform = shop.PlatformId,
// PageIndex = pageIndex,
// Business = 2
//}, GetYunDingRequestHeader(), HttpMethod.Post);
nLogManager.GetLogger($"单元维度-{shop.ShopName}").Info(httpResult.Content); nLogManager.GetLogger($"单元维度-{shop.ShopName}").Info(JsonConvert.SerializeObject(response));
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) //if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取JD推广报表-单元维度失败 {httpResult.Content}"); // throw new Exception($"获取JD推广报表-单元维度失败 {httpResult.Content}");
var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content); //var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content);
if (!presponse.Success) //if (!presponse.Success)
throw new Exception($"获取JD推广报表-单元维度失败 {presponse.Msg}"); // throw new Exception($"获取JD推广报表-单元维度失败 {presponse.Msg}");
SyncShopPopularizeReportFormAdGroupLevel(long.Parse(shop.ShopId), presponse.Data); SyncShopPopularizeReportFormAdGroupLevel(long.Parse(shop.ShopId), response);
currentCount = presponse.Data?.Count() ?? 0; currentCount = response?.Count() ?? 0;
} }
catch (Exception ex) catch (Exception ex)
{ {

56
BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs

@ -1,16 +1,12 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -22,20 +18,18 @@ namespace BBWY.Server.Business.Sync
{ {
private char[] separator_dx = new char[] { '-' }; private char[] separator_dx = new char[] { '-' };
public JDPopularizeReportFormAdLevelSyncBusiness(RestApiService restApiService, public JDPopularizeReportFormAdLevelSyncBusiness(
IOptions<GlobalConfig> options,
NLogManager nLogManager, NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness) : base(restApiService, VenderBusiness venderBusiness, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(
options,
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList,
yunDingBusiness) venderBusiness)
{ {
} }
@ -95,8 +89,7 @@ namespace BBWY.Server.Business.Sync
currentCount = 0; currentCount = 0;
try try
{ {
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var response = GetPlatformSDKBusiness(Enums.Platform.).GetJDSopularizeReportFormByAdLevel(new SyncJDPopularizeReportFormRequest()
var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByAdLevel", new SyncJDPopularizeReportFormRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
@ -106,19 +99,32 @@ namespace BBWY.Server.Business.Sync
Platform = shop.PlatformId, Platform = shop.PlatformId,
PageIndex = pageIndex, PageIndex = pageIndex,
Business = 2 Business = 2
}, GetYunDingRequestHeader(), HttpMethod.Post); });
nLogManager.GetLogger($"创意维度-{shop.ShopName}").Info(httpResult.Content);
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取JD推广报表-创意维度失败 {httpResult.Content}");
var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content);
if (!presponse.Success)
throw new Exception($"获取JD推广报表-创意维度失败 {presponse.Msg}");
SyncShopPopularizeReportFormAdLevel(shop.ShopName, long.Parse(shop.ShopId), presponse.Data); //var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
currentCount = presponse.Data?.Count() ?? 0; //var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByAdLevel", new SyncJDPopularizeReportFormRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// EndDate = endDate,
// StartDate = startDate,
// Platform = shop.PlatformId,
// PageIndex = pageIndex,
// Business = 2
//}, GetYunDingRequestHeader(), HttpMethod.Post);
nLogManager.GetLogger($"创意维度-{shop.ShopName}").Info(JsonConvert.SerializeObject(response));
//if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"获取JD推广报表-创意维度失败 {httpResult.Content}");
//var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content);
//if (!presponse.Success)
// throw new Exception($"获取JD推广报表-创意维度失败 {presponse.Msg}");
SyncShopPopularizeReportFormAdLevel(shop.ShopName, long.Parse(shop.ShopId), response);
currentCount = response?.Count() ?? 0;
} }
catch (Exception ex) catch (Exception ex)
{ {

53
BBWY.Server.Business/Sync/JD/JDPopularizeReportFormCampaignLevelSyncBusiness.cs

@ -1,16 +1,12 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -19,21 +15,18 @@ namespace BBWY.Server.Business.Sync
{ {
public class JDPopularizeReportFormCampaignLevelSyncBusiness : BaseSyncBusiness, IDenpendency public class JDPopularizeReportFormCampaignLevelSyncBusiness : BaseSyncBusiness, IDenpendency
{ {
public JDPopularizeReportFormCampaignLevelSyncBusiness(RestApiService restApiService, public JDPopularizeReportFormCampaignLevelSyncBusiness(NLogManager nLogManager,
IOptions<GlobalConfig> options,
NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList,
YunDingBusiness yunDingBusiness) : base(restApiService, VenderBusiness venderBusiness) : base(
options,
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList,
yunDingBusiness) venderBusiness)
{ {
} }
@ -102,8 +95,7 @@ namespace BBWY.Server.Business.Sync
currentCount = 0; currentCount = 0;
try try
{ {
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var response = GetPlatformSDKBusiness(Enums.Platform.).GetJDSopularizeReportFormByCampaignLevel(new SyncJDPopularizeReportFormRequest()
var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByCampaignLevel", new SyncJDPopularizeReportFormRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
@ -113,19 +105,32 @@ namespace BBWY.Server.Business.Sync
Platform = shop.PlatformId, Platform = shop.PlatformId,
PageIndex = pageIndex, PageIndex = pageIndex,
Business = businessType Business = businessType
}, GetYunDingRequestHeader(), HttpMethod.Post); });
//var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
//var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByCampaignLevel", new SyncJDPopularizeReportFormRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// EndDate = endDate,
// StartDate = startDate,
// Platform = shop.PlatformId,
// PageIndex = pageIndex,
// Business = businessType
//}, GetYunDingRequestHeader(), HttpMethod.Post);
nLogManager.GetLogger($"计划维度-{shop.ShopName}-{(businessType == 2 ? "" : "")}").Info(httpResult.Content); nLogManager.GetLogger($"计划维度-{shop.ShopName}-{(businessType == 2 ? "" : "")}").Info(JsonConvert.SerializeObject(response));
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) //if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取JD推广报表-计划维度失败 {httpResult.Content}"); // throw new Exception($"获取JD推广报表-计划维度失败 {httpResult.Content}");
var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content); //var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content);
if (!presponse.Success) //if (!presponse.Success)
throw new Exception($"获取JD推广报表-计划维度失败 {presponse.Msg}"); // throw new Exception($"获取JD推广报表-计划维度失败 {presponse.Msg}");
SyncShopPopularizeReportFormCampaignLevel(long.Parse(shop.ShopId), presponse.Data, businessType); SyncShopPopularizeReportFormCampaignLevel(long.Parse(shop.ShopId), response, businessType);
currentCount = presponse.Data?.Count() ?? 0; currentCount = response?.Count() ?? 0;
} }
catch (Exception ex) catch (Exception ex)
{ {

55
BBWY.Server.Business/Sync/JD/JDPopularizeReportFormOrderLevelSyncBusiness.cs

@ -1,16 +1,12 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -20,21 +16,16 @@ namespace BBWY.Server.Business.Sync
{ {
public class JDPopularizeReportFormOrderLevelSyncBusiness : BaseSyncBusiness, IDenpendency public class JDPopularizeReportFormOrderLevelSyncBusiness : BaseSyncBusiness, IDenpendency
{ {
public JDPopularizeReportFormOrderLevelSyncBusiness(RestApiService restApiService, public JDPopularizeReportFormOrderLevelSyncBusiness(NLogManager nLogManager,
IOptions<GlobalConfig> options,
NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, VenderBusiness venderBusiness, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(
YunDingBusiness yunDingBusiness) : base(restApiService,
options,
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager, platformSDKBusinessList,
venderBusiness, venderBusiness)
yunDingBusiness)
{ {
} }
@ -105,8 +96,7 @@ namespace BBWY.Server.Business.Sync
currentCount = 0; currentCount = 0;
try try
{ {
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var response = GetPlatformSDKBusiness(Enums.Platform.).GetJDSopularizeReportFormByOrderLevel(new SyncJDPopularizeReportFormRequest()
var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByOrderLevel", new SyncJDPopularizeReportFormRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
@ -116,23 +106,36 @@ namespace BBWY.Server.Business.Sync
Platform = shop.PlatformId, Platform = shop.PlatformId,
PageIndex = pageIndex, PageIndex = pageIndex,
Business = businessType Business = businessType
}, GetYunDingRequestHeader(), HttpMethod.Post); });
//var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
//var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormByOrderLevel", new SyncJDPopularizeReportFormRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// EndDate = endDate,
// StartDate = startDate,
// Platform = shop.PlatformId,
// PageIndex = pageIndex,
// Business = businessType
//}, GetYunDingRequestHeader(), HttpMethod.Post);
nLogManager.GetLogger($"订单维度-{shop.ShopName}-{(businessType == 2 ? "" : "")}").Info(httpResult.Content); nLogManager.GetLogger($"订单维度-{shop.ShopName}-{(businessType == 2 ? "" : "")}").Info(JsonConvert.SerializeObject(response));
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) //if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取JD推广报表-订单维度失败 {httpResult.Content}"); // throw new Exception($"获取JD推广报表-订单维度失败 {httpResult.Content}");
var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content); //var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content);
if (!presponse.Success) //if (!presponse.Success)
throw new Exception($"获取JD推广报表-订单维度失败 {presponse.Msg}"); // throw new Exception($"获取JD推广报表-订单维度失败 {presponse.Msg}");
if (businessType == 2) if (businessType == 2)
SyncShopPopularizeReportFormOrderLevelByKuaiChe(long.Parse(shop.ShopId), presponse.Data); SyncShopPopularizeReportFormOrderLevelByKuaiChe(long.Parse(shop.ShopId), response);
else if (businessType == 134217728) else if (businessType == 134217728)
SyncShopPopularizeReportFormOrderLevelByJST(long.Parse(shop.ShopId), presponse.Data); SyncShopPopularizeReportFormOrderLevelByJST(long.Parse(shop.ShopId), response);
currentCount = presponse.Data?.Count() ?? 0; currentCount = response?.Count() ?? 0;
} }
catch (Exception ex) catch (Exception ex)
{ {

73
BBWY.Server.Business/Sync/JD/JDPopularizeReportFormSkuLevelSyncBusiness.cs

@ -1,16 +1,12 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -19,21 +15,17 @@ namespace BBWY.Server.Business.Sync
{ {
public class JDPopularizeReportFormSkuLevelSyncBusiness : BaseSyncBusiness, IDenpendency public class JDPopularizeReportFormSkuLevelSyncBusiness : BaseSyncBusiness, IDenpendency
{ {
public JDPopularizeReportFormSkuLevelSyncBusiness(RestApiService restApiService, public JDPopularizeReportFormSkuLevelSyncBusiness(NLogManager nLogManager,
IOptions<GlobalConfig> options,
NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList,
YunDingBusiness yunDingBusiness) : base(restApiService, VenderBusiness venderBusiness) : base(nLogManager,
options,
nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList,
yunDingBusiness) venderBusiness)
{ {
} }
@ -99,29 +91,42 @@ namespace BBWY.Server.Business.Sync
currentCount = 0; currentCount = 0;
try try
{ {
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var response = GetPlatformSDKBusiness(Enums.Platform.).GetJDSopularizeReportFormBySkuLevel(
var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormBySkuLevel", new SyncJDPopularizeReportFormRequest() new SyncJDPopularizeReportFormRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
AppToken = shop.AppToken, AppToken = shop.AppToken,
EndDate = endDate, EndDate = endDate,
StartDate = startDate, StartDate = startDate,
Platform = shop.PlatformId, Platform = shop.PlatformId,
PageIndex = pageIndex, PageIndex = pageIndex,
Business = 134217728 Business = 134217728
}, GetYunDingRequestHeader(), HttpMethod.Post); });
nLogManager.GetLogger($"SKU维度-{shop.ShopName}").Info(httpResult.Content);
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) //var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
throw new Exception($"获取JD推广报表-sku维度失败 {httpResult.Content}"); //var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDSopularizeReportFormBySkuLevel", new SyncJDPopularizeReportFormRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// EndDate = endDate,
// StartDate = startDate,
// Platform = shop.PlatformId,
// PageIndex = pageIndex,
// Business = 134217728
//}, GetYunDingRequestHeader(), HttpMethod.Post);
nLogManager.GetLogger($"SKU维度-{shop.ShopName}").Info(JsonConvert.SerializeObject(response));
var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content); //if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
if (!presponse.Success) // throw new Exception($"获取JD推广报表-sku维度失败 {httpResult.Content}");
throw new Exception($"获取JD推广报表-sku维度失败 {presponse.Msg}");
SyncShopPopularizeReportFormSkuLevel(long.Parse(shop.ShopId), presponse.Data); //var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content);
currentCount = presponse.Data?.Count() ?? 0; //if (!presponse.Success)
// throw new Exception($"获取JD推广报表-sku维度失败 {presponse.Msg}");
SyncShopPopularizeReportFormSkuLevel(long.Parse(shop.ShopId), response);
currentCount = response?.Count() ?? 0;
} }
catch (Exception ex) catch (Exception ex)
{ {

68
BBWY.Server.Business/Sync/JD/JDPopularizeSyncBusiness.cs

@ -1,41 +1,34 @@
using BBWY.Common.Http; using BBWY.Common.Extensions;
using BBWY.Common.Models; using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Threading;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
using BBWY.Common.Extensions;
using BBWY.Server.Model.Db;
using System.Threading;
namespace BBWY.Server.Business.Sync namespace BBWY.Server.Business.Sync
{ {
public class JDPopularizeSyncBusiness : BaseSyncBusiness, IDenpendency public class JDPopularizeSyncBusiness : BaseSyncBusiness, IDenpendency
{ {
public JDPopularizeSyncBusiness(RestApiService restApiService, public JDPopularizeSyncBusiness(
IOptions<GlobalConfig> options,
NLogManager nLogManager, NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, VenderBusiness venderBusiness,
YunDingBusiness yunDingBusiness) : base(restApiService, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(
options,
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList,
yunDingBusiness) venderBusiness)
{ {
} }
@ -75,26 +68,37 @@ namespace BBWY.Server.Business.Sync
currentCount = 0; currentCount = 0;
try try
{ {
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); var response = GetPlatformSDKBusiness(shop.PlatformId).GetJDShopSopularizeRecordList(
var httpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetJDShopSopularizeRecordList", new SyncShopPopularizeRequest() new SyncShopPopularizeRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
AppToken = shop.AppToken, AppToken = shop.AppToken,
EndDate = endDate, EndDate = endDate,
StartDate = startDate, StartDate = startDate,
Platform = shop.PlatformId, Platform = shop.PlatformId,
PageIndex = pageIndex PageIndex = pageIndex
}, GetYunDingRequestHeader(), HttpMethod.Post); });
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) //var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
throw new Exception($"获取JD推广费用失败 {httpResult.Content}"); //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,
// PageIndex = pageIndex
//}, GetYunDingRequestHeader(), HttpMethod.Post);
//if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"获取JD推广费用失败 {httpResult.Content}");
var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content); //var presponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(httpResult.Content);
if (!presponse.Success) //if (!presponse.Success)
throw new Exception($"获取JD推广费用失败 {presponse.Msg}"); // throw new Exception($"获取JD推广费用失败 {presponse.Msg}");
SyncShopPopularizeRecord(long.Parse(shop.ShopId), presponse.Data); SyncShopPopularizeRecord(long.Parse(shop.ShopId), response);
currentCount = presponse.Data?.Count() ?? 0; currentCount = response?.Count() ?? 0;
} }
catch (Exception ex) catch (Exception ex)
{ {

127
BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs

@ -1,19 +1,18 @@
using BBWY.Common.Http; using BBWY.Common.Extensions;
using BBWY.Common.Http;
using BBWY.Common.Models; using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options; using FreeSql;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
using System.Linq;
using BBWY.Server.Model.Db;
using FreeSql;
using BBWY.Common.Extensions;
namespace BBWY.Server.Business.Sync namespace BBWY.Server.Business.Sync
{ {
@ -25,9 +24,19 @@ namespace BBWY.Server.Business.Sync
private IList<int> kuaiDi100PushStateList_qianshou; private IList<int> kuaiDi100PushStateList_qianshou;
private IList<int> kuaiDi100PushStateList_paijian; private IList<int> kuaiDi100PushStateList_paijian;
private Dictionary<int, Enums.ServiceResult> processResultDic; private Dictionary<int, Enums.ServiceResult> processResultDic;
private RestApiService restApiService;
public JDServiceOrderSyncBusiness(RestApiService restApiService, IOptions<GlobalConfig> options, NLogManager nLogManager, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness) : base(restApiService, options, nLogManager, fsql, idGenerator, taskSchedulerManager, venderBusiness, yunDingBusiness) public JDServiceOrderSyncBusiness(NLogManager nLogManager,
IFreeSql fsql,
IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager,
IEnumerable<PlatformSDKBusiness> platformSDKBusinessList,
VenderBusiness venderBusiness,
RestApiService restApiService) : base(nLogManager,
fsql, idGenerator,
taskSchedulerManager,
platformSDKBusinessList,
venderBusiness)
{ {
/* /*
yuantong yuantong
@ -54,6 +63,7 @@ jingdongkuaiyun 京东快运
huitongkuaidi huitongkuaidi
*/ */
kuaiDi100PushStateList_zaitu = new List<int>() { 0, 1001, 1002, 1003 }; kuaiDi100PushStateList_zaitu = new List<int>() { 0, 1001, 1002, 1003 };
kuaiDi100PushStateList_lanshou = new List<int>() { 1, 101, 102, 103 }; kuaiDi100PushStateList_lanshou = new List<int>() { 1, 101, 102, 103 };
kuaiDi100PushStateList_qianshou = new List<int>() { 3, 301, 302, 303, 304 }; kuaiDi100PushStateList_qianshou = new List<int>() { 3, 301, 302, 303, 304 };
@ -92,6 +102,7 @@ huitongkuaidi 百世快递
{ 90,Enums.ServiceResult.线}, { 90,Enums.ServiceResult.线},
{ 110,Enums.ServiceResult.} { 110,Enums.ServiceResult.}
}; };
this.restApiService = restApiService;
} }
public void SyncServiceOrder() public void SyncServiceOrder()
@ -117,7 +128,7 @@ huitongkuaidi 百世快递
taskSchedulerManager.SyncServiceOrderTaskScheduler); taskSchedulerManager.SyncServiceOrderTaskScheduler);
} }
private void SyncServiceOrder(ShopResponse shop, long shopId, IList<JToken> jtokenList, string relayAPIHost, string appKey, string appSecret, string token) private void SyncServiceOrder(ShopResponse shop, long shopId, IList<JToken> jtokenList, string appKey, string appSecret, string token)
{ {
var serviceIdList = jtokenList.Select(j => j.Value<string>("serviceId")).ToList(); var serviceIdList = jtokenList.Select(j => j.Value<string>("serviceId")).ToList();
var dbServiceOrderList = fsql.Select<ServiceOrder>().Where(s => s.ShopId == shop.ShopId && serviceIdList.Contains(s.ServiceId)).ToList(); var dbServiceOrderList = fsql.Select<ServiceOrder>().Where(s => s.ShopId == shop.ShopId && serviceIdList.Contains(s.ServiceId)).ToList();
@ -168,7 +179,8 @@ huitongkuaidi 百世快递
{ {
try try
{ {
var serviceOrderDetailResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderDetail", new QueryServiceOrderDetailRequest() var p = GetPlatformSDKBusiness(Enums.Platform.);
var serviceOrderDetailResponse = p.GetServiceOrderDetail(new QueryServiceOrderDetailRequest()
{ {
AppKey = appKey, AppKey = appKey,
AppSecret = appSecret, AppSecret = appSecret,
@ -177,21 +189,32 @@ huitongkuaidi 百世快递
ServiceId = serviceId, ServiceId = serviceId,
Platform = Enums.Platform., Platform = Enums.Platform.,
VenderId = shop.VenderId VenderId = shop.VenderId
}, GetYunDingRequestHeader(), HttpMethod.Post); });
if (serviceOrderDetailResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取服务单详情失败 {serviceOrderDetailResult.Content}");
var serviceOrderDetailResponse = JsonConvert.DeserializeObject<ApiResponse<JToken>>(serviceOrderDetailResult.Content);
if (!serviceOrderDetailResponse.Success)
throw new Exception($"获取服务单详情失败 {serviceOrderDetailResponse.Msg}");
var processResult = serviceOrderDetailResponse.Data.Value<int>("processResult"); //var serviceOrderDetailResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderDetail", new QueryServiceOrderDetailRequest()
//{
// AppKey = appKey,
// AppSecret = appSecret,
// AppToken = token,
// OrderId = serviceOrderId,
// ServiceId = serviceId,
// Platform = Enums.Platform.京东,
// VenderId = shop.VenderId
//}, GetYunDingRequestHeader(), HttpMethod.Post);
//if (serviceOrderDetailResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"获取服务单详情失败 {serviceOrderDetailResult.Content}");
//var serviceOrderDetailResponse = JsonConvert.DeserializeObject<ApiResponse<JToken>>(serviceOrderDetailResult.Content);
//if (!serviceOrderDetailResponse.Success)
// throw new Exception($"获取服务单详情失败 {serviceOrderDetailResponse.Msg}");
var processResult = serviceOrderDetailResponse.Value<int>("processResult");
if (processResultDic.ContainsKey(processResult)) if (processResultDic.ContainsKey(processResult))
serviceResult = processResultDic[processResult]; serviceResult = processResultDic[processResult];
//检查退货城市是否为泉州鲤城区 //检查退货城市是否为泉州鲤城区
isNeedSubscribeKuaiDi100 = (serviceOrderDetailResponse.Data["afsContactInfo"]?.Value<int>("cityCode") ?? 0) == 1332 && isNeedSubscribeKuaiDi100 = (serviceOrderDetailResponse["afsContactInfo"]?.Value<int>("cityCode") ?? 0) == 1332 &&
(serviceOrderDetailResponse.Data["afsContactInfo"]?.Value<int>("countyCode") ?? 0) == 42930; (serviceOrderDetailResponse["afsContactInfo"]?.Value<int>("countyCode") ?? 0) == 42930;
isTuiHuoCang = isNeedSubscribeKuaiDi100; isTuiHuoCang = isNeedSubscribeKuaiDi100;
} }
catch { } catch { }
@ -269,7 +292,7 @@ huitongkuaidi 百世快递
try try
{ {
var shopId = long.Parse(shop.ShopId); var shopId = long.Parse(shop.ShopId);
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); //var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var serviceStatusList = new List<int>() { 10005, 10011, 10010 }; var serviceStatusList = new List<int>() { 10005, 10011, 10010 };
var request = new QueryServiceOrderRequest() var request = new QueryServiceOrderRequest()
@ -288,24 +311,29 @@ huitongkuaidi 百世快递
}; };
List<JToken> jtokenList = new List<JToken>(); List<JToken> jtokenList = new List<JToken>();
var p = GetPlatformSDKBusiness(Enums.Platform.);
foreach (var serviceStatus in serviceStatusList) foreach (var serviceStatus in serviceStatusList)
{ {
if (string.IsNullOrEmpty(serviceId)) if (string.IsNullOrEmpty(serviceId))
request.ServiceStatus = serviceStatus; request.ServiceStatus = serviceStatus;
var serviceOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderList", request, GetYunDingRequestHeader(), HttpMethod.Post);
if (serviceOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK) var serviceOrderListResponse = p.GetServiceOrderList(request);
throw new Exception($"获取服务单失败 {serviceOrderListApiResult.Content}"); //var serviceOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderList", request, GetYunDingRequestHeader(), HttpMethod.Post);
var serviceOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(serviceOrderListApiResult.Content); //if (serviceOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
if (!serviceOrderListResponse.Success) // throw new Exception($"获取服务单失败 {serviceOrderListApiResult.Content}");
throw new Exception($"获取服务单失败 {serviceOrderListResponse.Msg}"); //var serviceOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(serviceOrderListApiResult.Content);
if (serviceOrderListResponse.Data != null && serviceOrderListResponse.Data.Count() > 0) //if (!serviceOrderListResponse.Success)
jtokenList.AddRange(serviceOrderListResponse.Data); // throw new Exception($"获取服务单失败 {serviceOrderListResponse.Msg}");
if (serviceOrderListResponse != null && serviceOrderListResponse.Count() > 0)
jtokenList.AddRange(serviceOrderListResponse);
if (!string.IsNullOrEmpty(serviceId)) if (!string.IsNullOrEmpty(serviceId))
break; break;
} }
if (jtokenList.Count() > 0) if (jtokenList.Count() > 0)
SyncServiceOrder(shop, shopId, jtokenList, relayAPIHost, request.AppKey, request.AppSecret, request.AppToken); SyncServiceOrder(shop, shopId, jtokenList, request.AppKey, request.AppSecret, request.AppToken);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -340,7 +368,7 @@ huitongkuaidi 百世快递
var loggerName = $"订阅快递100-{shop.ShopName}"; var loggerName = $"订阅快递100-{shop.ShopName}";
try try
{ {
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId); //var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var serviceOrderList = fsql.Select<ServiceOrder>().Where(s => s.ShopId == shop.ShopId && var serviceOrderList = fsql.Select<ServiceOrder>().Where(s => s.ShopId == shop.ShopId &&
s.IsNeedSubscribeKuaiDi100 == true && s.IsNeedSubscribeKuaiDi100 == true &&
s.IsSubscribeKuaiDi100 == false) s.IsSubscribeKuaiDi100 == false)
@ -349,7 +377,7 @@ huitongkuaidi 百世快递
.ToList(); .ToList();
List<IUpdate<ServiceOrder>> updateSerivceOrderList = new List<IUpdate<ServiceOrder>>(); List<IUpdate<ServiceOrder>> updateSerivceOrderList = new List<IUpdate<ServiceOrder>>();
List<ExpressOrder> insertExpressOrderList = new List<ExpressOrder>(); List<ExpressOrder> insertExpressOrderList = new List<ExpressOrder>();
var p = GetPlatformSDKBusiness(shop.PlatformId);
foreach (var serviceOrder in serviceOrderList) foreach (var serviceOrder in serviceOrderList)
{ {
bool isUpdateDelivery = false, isUpdateSubscribe = false; bool isUpdateDelivery = false, isUpdateSubscribe = false;
@ -359,7 +387,7 @@ huitongkuaidi 百世快递
try try
{ {
#region 查询服务单运单详情 #region 查询服务单运单详情
var serviceOrderDeliveryResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderDeliveryDetail", new QueryServiceOrderDetailRequest() var serviceOrderDeliveryResponse = p.GetServiceOrderDeliveryDetail(new QueryServiceOrderDetailRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
@ -368,18 +396,29 @@ huitongkuaidi 百世快递
ServiceId = serviceOrder.ServiceId, ServiceId = serviceOrder.ServiceId,
Platform = Enums.Platform., Platform = Enums.Platform.,
VenderId = shop.VenderId VenderId = shop.VenderId
}, GetYunDingRequestHeader(), HttpMethod.Post); });
if (serviceOrderDeliveryResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取服务单运单详情失败 {serviceOrderDeliveryResult.Content}");
var serviceOrderDeliveryResponse = JsonConvert.DeserializeObject<ApiResponse<JToken>>(serviceOrderDeliveryResult.Content);
if (!serviceOrderDeliveryResponse.Success)
throw new Exception($"获取服务单运单详情失败 {serviceOrderDeliveryResponse.Msg}");
if (serviceOrderDeliveryResponse.Data != null) //var serviceOrderDeliveryResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderDeliveryDetail", new QueryServiceOrderDetailRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// OrderId = serviceOrder.OrderId,
// ServiceId = serviceOrder.ServiceId,
// Platform = Enums.Platform.京东,
// VenderId = shop.VenderId
//}, GetYunDingRequestHeader(), HttpMethod.Post);
//if (serviceOrderDeliveryResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"获取服务单运单详情失败 {serviceOrderDeliveryResult.Content}");
//var serviceOrderDeliveryResponse = JsonConvert.DeserializeObject<ApiResponse<JToken>>(serviceOrderDeliveryResult.Content);
//if (!serviceOrderDeliveryResponse.Success)
// throw new Exception($"获取服务单运单详情失败 {serviceOrderDeliveryResponse.Msg}");
if (serviceOrderDeliveryResponse != null)
{ {
serviceOrder.WayBillNo = serviceOrderDeliveryResponse.Data.Value<string>("expressCode"); serviceOrder.WayBillNo = serviceOrderDeliveryResponse.Value<string>("expressCode");
serviceOrder.ExpressName = serviceOrderDeliveryResponse.Data.Value<string>("expressCompany"); serviceOrder.ExpressName = serviceOrderDeliveryResponse.Value<string>("expressCompany");
if (!string.IsNullOrEmpty(serviceOrder.WayBillNo) && serviceOrder.WayBillNo.StartsWith("JD") && string.IsNullOrEmpty(serviceOrder.ExpressName)) if (!string.IsNullOrEmpty(serviceOrder.WayBillNo) && serviceOrder.WayBillNo.StartsWith("JD") && string.IsNullOrEmpty(serviceOrder.ExpressName))
{ {

3
BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs

@ -3,14 +3,13 @@ using BBWY.Server.Model.Db;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class OrderSkuSaleDetailSyncBusiness : BaseBusiness, IDenpendency public class OrderSkuSaleDetailSyncBusiness : BaseBusiness, IDenpendency
{ {
public OrderSkuSaleDetailSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) public OrderSkuSaleDetailSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
{ {
} }

115
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -1,5 +1,4 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Business.Extensions; using BBWY.Server.Business.Extensions;
using BBWY.Server.Business.PlatformSDK.DataExtension; using BBWY.Server.Business.PlatformSDK.DataExtension;
using BBWY.Server.Model; using BBWY.Server.Model;
@ -7,16 +6,11 @@ using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using FreeSql; using FreeSql;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog;
using System; using System;
using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -25,32 +19,28 @@ namespace BBWY.Server.Business
{ {
public class OrderSyncBusiness : BaseSyncBusiness, IDenpendency public class OrderSyncBusiness : BaseSyncBusiness, IDenpendency
{ {
private IDictionary<Enums.Platform, Action<JArray, long, string, string, string, string, decimal>> syncOrderMethodDic; private IDictionary<Enums.Platform, Action<IList<JToken>, long, string, string, string, decimal>> syncOrderMethodDic;
private IMemoryCache memoryCache; private IMemoryCache memoryCache;
private IList<string> validOrderState; private IList<string> validOrderState;
public OrderSyncBusiness(RestApiService restApiService, public OrderSyncBusiness(NLogManager nLogManager,
IOptions<GlobalConfig> options,
NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness,
IMemoryCache memoryCache, IMemoryCache memoryCache,
YunDingBusiness yunDingBusiness) : base(restApiService, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList,
options, VenderBusiness venderBusiness) : base(
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList, venderBusiness)
yunDingBusiness)
{ {
this.memoryCache = memoryCache; this.memoryCache = memoryCache;
syncOrderMethodDic = new Dictionary<Enums.Platform, Action<JArray, long, string, string, string, string, decimal>>() syncOrderMethodDic = new Dictionary<Enums.Platform, Action<IList<JToken>, long, string, string, string, decimal>>()
{ {
{ Enums.Platform., SyncJDOrder } { Enums.Platform., SyncJDOrder }
}; };
@ -58,6 +48,7 @@ namespace BBWY.Server.Business
{ {
"WAIT_SELLER_STOCK_OUT","WAIT_GOODS_RECEIVE_CONFIRM","FINISHED_L","LOCKED","TRADE_CANCELED","POP_ORDER_PAUSE","PAUSE" "WAIT_SELLER_STOCK_OUT","WAIT_GOODS_RECEIVE_CONFIRM","FINISHED_L","LOCKED","TRADE_CANCELED","POP_ORDER_PAUSE","PAUSE"
}; };
this.platformSDKBusinessList = platformSDKBusinessList;
} }
/// <summary> /// <summary>
/// 手动同步订单 /// 手动同步订单
@ -106,8 +97,9 @@ namespace BBWY.Server.Business
if (!syncOrderMethodDic.ContainsKey(shop.PlatformId)) if (!syncOrderMethodDic.ContainsKey(shop.PlatformId))
throw new Exception("不支持的平台"); throw new Exception("不支持的平台");
var shopId = long.Parse(shop.ShopId); var shopId = long.Parse(shop.ShopId);
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var orderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetOrderList", new SearchPlatformOrderRequest() var p = GetPlatformSDKBusiness(shop.PlatformId);
var orderList = p.GetOrderList(new SearchPlatformOrderRequest()
{ {
StartDate = startTime ?? DateTime.Now.AddHours(shop.ShopName.Contains("腾奇") ? -0.5 : -3), StartDate = startTime ?? DateTime.Now.AddHours(shop.ShopName.Contains("腾奇") ? -0.5 : -3),
EndDate = endTime ?? DateTime.Now, EndDate = endTime ?? DateTime.Now,
@ -121,28 +113,45 @@ namespace BBWY.Server.Business
//SaveResponseLog = true, //SaveResponseLog = true,
OrderId = orderId, OrderId = orderId,
SortTimeType = sortTimeType SortTimeType = sortTimeType
}, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 120); });
if (orderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取订单失败 {orderListApiResult.Content}"); //var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
//var orderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetOrderList", new SearchPlatformOrderRequest()
var orderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(orderListApiResult.Content); //{
if (!orderListResponse.Success) // StartDate = startTime ?? DateTime.Now.AddHours(shop.ShopName.Contains("腾奇") ? -0.5 : -3),
throw new Exception($"获取订单失败 {orderListApiResult.Content}"); // EndDate = endTime ?? DateTime.Now,
// AppKey = shop.AppKey,
if (orderListResponse.Data == null || orderListResponse.Data.Count == 0) // AppSecret = shop.AppSecret,
return; // AppToken = shop.AppToken,
// PageIndex = 1,
// PageSize = 100,
// Platform = shop.PlatformId,
// JDColType = string.IsNullOrEmpty(shop.ShopType) ? "0" : shop.ShopType,
// //SaveResponseLog = true,
// OrderId = orderId,
// SortTimeType = sortTimeType
//}, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 120);
//if (orderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception($"获取订单失败 {orderListApiResult.Content}");
//var orderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(orderListApiResult.Content);
//if (!orderListResponse.Success)
// throw new Exception($"获取订单失败 {orderListApiResult.Content}");
//if (orderListResponse.Data == null || orderListResponse.Data.Count == 0)
// return;
if (shopId == 10388155) if (shopId == 10388155)
{ {
try try
{ {
nLogManager.GetLogger($"订单同步-{shop.ShopName}").Info(orderListApiResult.Content); nLogManager.GetLogger($"订单同步-{shop.ShopName}").Info(JsonConvert.SerializeObject(orderList));
} }
catch { } catch { }
} }
syncOrderMethodDic[shop.PlatformId](orderListResponse.Data, shopId, relayAPIHost, shop.AppKey, shop.AppSecret, shop.AppToken, shop.PlatformCommissionRatio ?? 0.05M); syncOrderMethodDic[shop.PlatformId](orderList, shopId, shop.AppKey, shop.AppSecret, shop.AppToken, shop.PlatformCommissionRatio ?? 0.05M);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -207,7 +216,7 @@ namespace BBWY.Server.Business
}, System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler); }, System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler);
} }
private void SyncJDOrder(JArray orderTokenJArray, long shopId, string relayAPIHost, string appKey, string appSecret, string appToken, decimal platformCommissionRatio) private void SyncJDOrder(IList<JToken> orderTokenJArray, long shopId, string appKey, string appSecret, string appToken, decimal platformCommissionRatio)
{ {
var validOrders = orderTokenJArray.Where(o => validOrderState.Contains(o.Value<string>("orderState"))); var validOrders = orderTokenJArray.Where(o => validOrderState.Contains(o.Value<string>("orderState")));
if (validOrders.Count() == 0) if (validOrders.Count() == 0)
@ -645,20 +654,34 @@ namespace BBWY.Server.Business
for (var i = 0; i < orderSkuRequestCount; i++) for (var i = 0; i < orderSkuRequestCount; i++)
{ {
var orderSkuIdString = string.Join(",", orderSkuIds.Skip(i * 50).Take(50)); var orderSkuIdString = string.Join(",", orderSkuIds.Skip(i * 50).Take(50));
var skuHttpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetSimpleProductSkuList", new SearchProductSkuRequest()
{ var p = GetPlatformSDKBusiness(Enums.Platform.);
AppKey = appKey, var skuList = p.GetSimpleProductSkuList(
AppSecret = appSecret, new SearchProductSkuRequest()
AppToken = appToken, {
Platform = Enums.Platform., AppKey = appKey,
Sku = orderSkuIdString AppSecret = appSecret,
}, GetYunDingRequestHeader(), HttpMethod.Post); AppToken = appToken,
if (skuHttpResult.StatusCode != System.Net.HttpStatusCode.OK) Platform = Enums.Platform.,
continue; Sku = orderSkuIdString
var skuResponse = JsonConvert.DeserializeObject<ApiResponse<IList<SimpleProductSkuResponse>>>(skuHttpResult.Content); });
if (!skuResponse.Success)
continue; //var skuHttpResult = restApiService.SendRequest(relayAPIHost, "Api/PlatformSDK/GetSimpleProductSkuList", new SearchProductSkuRequest()
foreach (var sku in skuResponse.Data) //{
// AppKey = appKey,
// AppSecret = appSecret,
// AppToken = appToken,
// Platform = Enums.Platform.京东,
// Sku = orderSkuIdString
//}, GetYunDingRequestHeader(), HttpMethod.Post);
//if (skuHttpResult.StatusCode != System.Net.HttpStatusCode.OK)
// continue;
//var skuResponse = JsonConvert.DeserializeObject<ApiResponse<IList<SimpleProductSkuResponse>>>(skuHttpResult.Content);
//if (!skuResponse.Success)
// continue;
foreach (var sku in skuList)
{ {
var insertSkus = insertOrderSkuList.Where(orderSku => orderSku.SkuId == sku.Id); var insertSkus = insertOrderSkuList.Where(orderSku => orderSku.SkuId == sku.Id);
foreach (var insertSku in insertSkus) { insertSku.Logo = sku.Logo; } foreach (var insertSku in insertSkus) { insertSku.Logo = sku.Logo; }

27
BBWY.Server.Business/Sync/ProductSyncBusiness.cs

@ -1,18 +1,15 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using NLog;
using System.Threading.Tasks;
using Yitter.IdGenerator;
using System.Linq;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using FreeSql;
using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Newtonsoft.Json; using System.Linq;
using FreeSql;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
using Yitter.IdGenerator;
namespace BBWY.Server.Business.Sync namespace BBWY.Server.Business.Sync
{ {
@ -20,22 +17,20 @@ namespace BBWY.Server.Business.Sync
{ {
private ProductBusiness productBusiness; private ProductBusiness productBusiness;
public ProductSyncBusiness(RestApiService restApiService, public ProductSyncBusiness(
IOptions<GlobalConfig> options,
NLogManager nLogManager, NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, VenderBusiness venderBusiness,
ProductBusiness productBusiness, ProductBusiness productBusiness,
YunDingBusiness yunDingBusiness) : base(restApiService, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(
options,
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList,
yunDingBusiness) venderBusiness)
{ {
this.productBusiness = productBusiness; this.productBusiness = productBusiness;
} }

40
BBWY.Server.Business/Sync/StoreHouseSyncBusiness.cs

@ -1,15 +1,11 @@
using BBWY.Common.Http; using BBWY.Common.Models;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -20,21 +16,18 @@ namespace BBWY.Server.Business.Sync
{ {
private IDictionary<Enums.Platform, Action<JArray, ShopResponse, IList<Storehouse>>> storeHouseSyncMethodDic; private IDictionary<Enums.Platform, Action<JArray, ShopResponse, IList<Storehouse>>> storeHouseSyncMethodDic;
public StoreHouseSyncBusiness(RestApiService restApiService, public StoreHouseSyncBusiness(NLogManager nLogManager,
IOptions<GlobalConfig> options,
NLogManager nLogManager,
IFreeSql fsql, IFreeSql fsql,
IIdGenerator idGenerator, IIdGenerator idGenerator,
TaskSchedulerManager taskSchedulerManager, TaskSchedulerManager taskSchedulerManager,
VenderBusiness venderBusiness, VenderBusiness venderBusiness,
YunDingBusiness yunDingBusiness) : base(restApiService, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(
options,
nLogManager, nLogManager,
fsql, fsql,
idGenerator, idGenerator,
taskSchedulerManager, taskSchedulerManager,
venderBusiness, platformSDKBusinessList,
yunDingBusiness) venderBusiness)
{ {
storeHouseSyncMethodDic = new Dictionary<Enums.Platform, Action<JArray, ShopResponse, IList<Storehouse>>>() storeHouseSyncMethodDic = new Dictionary<Enums.Platform, Action<JArray, ShopResponse, IList<Storehouse>>>()
{ {
@ -51,26 +44,35 @@ namespace BBWY.Server.Business.Sync
{ {
var shopList = venderBusiness.GetShopList(platform: Enums.Platform.); var shopList = venderBusiness.GetShopList(platform: Enums.Platform.);
var storeHouseList = new List<Storehouse>(); var storeHouseList = new List<Storehouse>();
var p = GetPlatformSDKBusiness(Enums.Platform.);
foreach (var shop in shopList) foreach (var shop in shopList)
{ {
Thread.Sleep(1000); Thread.Sleep(1000);
try try
{ {
var restApiResult = restApiService.SendRequest(GetPlatformRelayAPIHost(shop.PlatformId), "api/PlatformSDK/GetStoreHouseList", new PlatformRequest() var response = p.GetStoreHouseList(new PlatformRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
AppToken = shop.AppToken, AppToken = shop.AppToken,
Platform = shop.PlatformId, Platform = shop.PlatformId,
SaveResponseLog = false SaveResponseLog = false
}, GetYunDingRequestHeader(), HttpMethod.Post); });
if (restApiResult.StatusCode != System.Net.HttpStatusCode.OK) //var restApiResult = restApiService.SendRequest(GetPlatformRelayAPIHost(shop.PlatformId), "api/PlatformSDK/GetStoreHouseList", new PlatformRequest()
throw new Exception(restApiResult.Content); //{
var response = JsonConvert.DeserializeObject<ApiResponse<JArray>>(restApiResult.Content); // AppKey = shop.AppKey,
if (response.Data == null || response.Data.Count() == 0) // AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// Platform = shop.PlatformId,
// SaveResponseLog = false
//}, GetYunDingRequestHeader(), HttpMethod.Post);
//if (restApiResult.StatusCode != System.Net.HttpStatusCode.OK)
// throw new Exception(restApiResult.Content);
//var response = JsonConvert.DeserializeObject<ApiResponse<JArray>>(restApiResult.Content);
if (response == null || response.Count() == 0)
continue; continue;
//ResolveJDStoreHouse(response.Data, shop, storeHouseList); //ResolveJDStoreHouse(response.Data, shop, storeHouseList);
storeHouseSyncMethodDic[shop.PlatformId](response.Data, shop, storeHouseList); storeHouseSyncMethodDic[shop.PlatformId](response, shop, storeHouseList);
} }
catch (Exception ex) catch (Exception ex)
{ {

70
BBWY.Server.Business/Vender/VenderBusiness.cs

@ -1,55 +1,51 @@
 using BBWY.Common.Models;
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Model; using BBWY.Server.Model;
using BBWY.Server.Model.Db; using BBWY.Server.Model.Db;
using BBWY.Server.Model.Db.Mds; using BBWY.Server.Model.Db.Mds;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWY.Server.Business namespace BBWY.Server.Business
{ {
public class VenderBusiness : BasePlatformRelayBusiness, IDenpendency public class VenderBusiness : BaseBusiness, IDenpendency
{ {
private FreeSqlMultiDBManager freeSqlMultiDBManager; private FreeSqlMultiDBManager freeSqlMultiDBManager;
private IIdGenerator idGenerator;
public VenderBusiness(FreeSqlMultiDBManager freeSqlMultiDBManager, public VenderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, FreeSqlMultiDBManager freeSqlMultiDBManager, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator, platformSDKBusinessList)
RestApiService restApiService,
IOptions<GlobalConfig> options,
IIdGenerator idGenerator, YunDingBusiness yunDingBusiness) : base(restApiService, options, yunDingBusiness)
{ {
this.freeSqlMultiDBManager = freeSqlMultiDBManager; this.freeSqlMultiDBManager = freeSqlMultiDBManager;
this.idGenerator = idGenerator; this.platformSDKBusinessList = platformSDKBusinessList;
} }
public VenderResponse GetVenderInfo(PlatformRequest platformRequest) public VenderResponse GetVenderInfo(PlatformRequest platformRequest)
{ {
var relayAPIHost = GetPlatformRelayAPIHost(platformRequest.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(platformRequest.Platform);
var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetVenderInfo", platformRequest, GetYunDingRequestHeader(), HttpMethod.Post); //var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetVenderInfo", platformRequest, GetYunDingRequestHeader(), HttpMethod.Post);
if (sendResult.StatusCode != System.Net.HttpStatusCode.OK) //if (sendResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode }; // throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode };
var response = JsonConvert.DeserializeObject<ApiResponse<VenderResponse>>(sendResult.Content); //var response = JsonConvert.DeserializeObject<ApiResponse<VenderResponse>>(sendResult.Content);
if (!response.Success) //if (!response.Success)
throw new BusinessException(response.Msg) { Code = response.Code }; // throw new BusinessException(response.Msg) { Code = response.Code };
return response.Data; //return response.Data;
return GetPlatformSDKBusiness(platformRequest.Platform).GetVenderInfo(platformRequest);
} }
public IList<LogisticsResponse> GetLogisticsList(PlatformRequest platformRequest) public IList<LogisticsResponse> GetLogisticsList(PlatformRequest platformRequest)
{ {
var relayAPIHost = GetPlatformRelayAPIHost(platformRequest.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(platformRequest.Platform);
var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetLogisticsList", platformRequest, GetYunDingRequestHeader(), System.Net.Http.HttpMethod.Post); //var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetLogisticsList", platformRequest, GetYunDingRequestHeader(), System.Net.Http.HttpMethod.Post);
if (sendResult.StatusCode != System.Net.HttpStatusCode.OK) //if (sendResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode }; // throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode };
var response = JsonConvert.DeserializeObject<ApiResponse<IList<LogisticsResponse>>>(sendResult.Content); //var response = JsonConvert.DeserializeObject<ApiResponse<IList<LogisticsResponse>>>(sendResult.Content);
if (!response.Success) //if (!response.Success)
throw new BusinessException(response.Msg) { Code = response.Code }; // throw new BusinessException(response.Msg) { Code = response.Code };
return response.Data; //return response.Data;
return GetPlatformSDKBusiness(platformRequest.Platform).GetLogisticsList(platformRequest);
} }
public string AcceptJDShopToken(JDShopToken jDShopToken) public string AcceptJDShopToken(JDShopToken jDShopToken)
@ -314,14 +310,16 @@ namespace BBWY.Server.Business
public IList<WaiterResponse> GetServiceGroupList(PlatformRequest request) public IList<WaiterResponse> GetServiceGroupList(PlatformRequest request)
{ {
var relayAPIHost = GetPlatformRelayAPIHost(request.Platform); //var relayAPIHost = GetPlatformRelayAPIHost(request.Platform);
var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceGroupList", request, GetYunDingRequestHeader(), HttpMethod.Post); //var sendResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceGroupList", request, GetYunDingRequestHeader(), HttpMethod.Post);
if (sendResult.StatusCode != System.Net.HttpStatusCode.OK) //if (sendResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode }; // throw new BusinessException(sendResult.Content) { Code = (int)sendResult.StatusCode };
var response = JsonConvert.DeserializeObject<ApiResponse<IList<WaiterResponse>>>(sendResult.Content); //var response = JsonConvert.DeserializeObject<ApiResponse<IList<WaiterResponse>>>(sendResult.Content);
if (!response.Success) //if (!response.Success)
throw new BusinessException(response.Msg) { Code = response.Code }; // throw new BusinessException(response.Msg) { Code = response.Code };
return response.Data; //return response.Data;
return GetPlatformSDKBusiness(request.Platform).GetServiceGroupList(request);
} }
} }
} }

Loading…
Cancel
Save