From 609b50b8b4a13923beabc7f742134560e071ebf2 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 19 Mar 2023 11:46:58 +0800 Subject: [PATCH] 1 --- .../PlatformSDK/JDBusiness.cs | 20 +++++++ .../PlatformSDK/PlatformSDKBusiness.cs | 5 ++ .../Sync/JD/JDServiceOrderSyncBusiness.cs | 60 +++++++++++++++++-- BBWY.Server.Business/TaskSchedulerManager.cs | 3 + JD.API/Controllers/PlatformSDKController.cs | 11 ++++ 5 files changed, 94 insertions(+), 5 deletions(-) diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index 8d9c0635..b49118b7 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -1399,5 +1399,25 @@ namespace BBWY.Server.Business return res.Json["jingdong_asc_query_view_responce"]["result"]["data"]; } + + public override JToken GetServiceOrderDeliveryDetail(QueryServiceOrderDetailRequest request) + { + var jdClient = GetJdClient(request.AppKey, request.AppSecret); + var req = new AscFreightViewRequest(); + + req.buId = request.VenderId; + req.operatePin = "开发测试"; + req.operateNick = "开发测试"; + req.serviceId = int.Parse(request.ServiceId); + req.orderId = long.Parse(request.OrderId); + + var res = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime()); + if (res.IsError) + throw new BusinessException($"查询服务单运单失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}"); + if (res.Json == null) + res.Json = JsonConvert.DeserializeObject(res.Body); + + return res.Json["jingdong_asc_freight_view_responce"]["result"]["data"]; + } } } diff --git a/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs b/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs index 6a28ee2b..98916e41 100644 --- a/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs @@ -197,5 +197,10 @@ namespace BBWY.Server.Business { throw new NotImplementedException(); } + + public virtual JToken GetServiceOrderDeliveryDetail(QueryServiceOrderDetailRequest request) + { + throw new NotImplementedException(); + } } } diff --git a/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs b/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs index 855fe425..12bd868d 100644 --- a/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs @@ -18,11 +18,17 @@ namespace BBWY.Server.Business.Sync { public class JDServiceOrderSyncBusiness : BaseSyncBusiness, IDenpendency { + private IList jd_kd100_logisticsCompanyDictionary; + public JDServiceOrderSyncBusiness(RestApiService restApiService, IOptions options, NLogManager nLogManager, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness) : base(restApiService, options, nLogManager, fsql, idGenerator, taskSchedulerManager, venderBusiness, yunDingBusiness) { + jd_kd100_logisticsCompanyDictionary = new List() + { + new LogisticsCompanyRelationship(){ SourceName="",TargetName="",SecondTargetName="" } + }; } - public void SyncAllShopServiceOrder() + public void SyncServiceOrder() { var shopList = venderBusiness.GetShopList(platform: Enums.Platform.京东); //SyncAfterOrder(shopList.FirstOrDefault(s => s.ShopName == "布莱特玩具专营店"), string.Empty, isAuto: true); @@ -31,10 +37,19 @@ namespace BBWY.Server.Business.Sync Task.Factory.StartNew(() => SyncServiceOrder(shop, string.Empty, isAuto: true), System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, - taskSchedulerManager.SyncAfterOrderTaskScheduler); + taskSchedulerManager.SyncServiceOrderTaskScheduler); } } + public void SyncServiceOrder(long shopId, string serviceId) + { + var shopList = venderBusiness.GetShopList(shopId); + Task.Factory.StartNew(() => SyncServiceOrder(shopList[0], serviceId, isAuto: true), + System.Threading.CancellationToken.None, + TaskCreationOptions.LongRunning, + taskSchedulerManager.SyncServiceOrderTaskScheduler); + } + private void SyncServiceOrder(ShopResponse shop, long shopId, IList jtokenList, string relayAPIHost, string appKey, string appSecret, string token) { var serviceIdList = jtokenList.Select(j => j.Value("serviceId")).ToList(); @@ -145,7 +160,7 @@ namespace BBWY.Server.Business.Sync }); } - private void SyncServiceOrder(ShopResponse shop, string orderId, DateTime? startTime = null, DateTime? endTime = null, bool isAuto = false) + private void SyncServiceOrder(ShopResponse shop, string serviceId, DateTime? startTime = null, DateTime? endTime = null, bool isAuto = false) { /* 审核阶段: @@ -183,14 +198,15 @@ namespace BBWY.Server.Business.Sync PageSize = 50, Platform = shop.PlatformId, SaveResponseLog = true, - OrderId = orderId, + ServiceId = serviceId, VenderId = shop.VenderId }; List jtokenList = new List(); foreach (var serviceStatus in serviceStatusList) { - request.ServiceStatus = serviceStatus; + if (string.IsNullOrEmpty(serviceId)) + request.ServiceStatus = serviceStatus; var serviceOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderList", request, GetYunDingRequestHeader(), HttpMethod.Post); if (serviceOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK) throw new Exception($"获取服务单失败 {serviceOrderListApiResult.Content}"); @@ -198,6 +214,8 @@ namespace BBWY.Server.Business.Sync if (!serviceOrderListResponse.Success) throw new Exception($"获取服务单失败 {serviceOrderListResponse.Msg}"); jtokenList.AddRange(serviceOrderListResponse.Data); + if (!string.IsNullOrEmpty(serviceId)) + break; } SyncServiceOrder(shop, shopId, jtokenList, relayAPIHost, request.AppKey, request.AppSecret, request.AppToken); @@ -207,5 +225,37 @@ namespace BBWY.Server.Business.Sync nLogManager.GetLogger(loggerName).Error(ex, $"SyncServiceOrder ShopName:{shop.ShopName} ShopId:{shop.ShopId}"); } } + + public void SubscribeKuaiDi100() + { + var shopList = venderBusiness.GetShopList(platform: Enums.Platform.京东); + foreach (var shop in shopList) + { + Task.Factory.StartNew(() => SyncServiceOrder(shop, string.Empty, isAuto: true), + System.Threading.CancellationToken.None, + TaskCreationOptions.LongRunning, + taskSchedulerManager.SyncServiceOrderTaskScheduler); + } + } + + private void SubscribeKuaiDi100(ShopResponse shop) + { + var serviceOrderList = fsql.Select().Where(s => s.ShopId == shop.Id && + s.IsNeedSubscribeKuaiDi100 == true && + s.IsSubscribeKuaiDi100 == false) + .Page(1, 50) + .ToList(); + foreach (var serviceOrder in serviceOrderList) + { + if (string.IsNullOrEmpty(serviceOrder.WaybillNo) || string.IsNullOrEmpty(serviceOrder.ExpressName)) + { + #region 查询服务单运单详情 + + #endregion + } + + + } + } } } diff --git a/BBWY.Server.Business/TaskSchedulerManager.cs b/BBWY.Server.Business/TaskSchedulerManager.cs index b416c3d1..8ee4567a 100644 --- a/BBWY.Server.Business/TaskSchedulerManager.cs +++ b/BBWY.Server.Business/TaskSchedulerManager.cs @@ -12,6 +12,8 @@ namespace BBWY.Server.Business public LimitedConcurrencyLevelTaskScheduler SyncAfterOrderTaskScheduler { get; private set; } + public LimitedConcurrencyLevelTaskScheduler SyncServiceOrderTaskScheduler { get; private set; } + public LimitedConcurrencyLevelTaskScheduler PurchaseOrderCallbackTaskScheduler { get; private set; } public LimitedConcurrencyLevelTaskScheduler JDPopularizeTaskScheduler { get; private set; } @@ -33,6 +35,7 @@ namespace BBWY.Server.Business SyncOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); SyncRefundOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); SyncAfterOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); + SyncServiceOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); PurchaseOrderCallbackTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); ProductSyncTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(2); JDPopularizeTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); diff --git a/JD.API/Controllers/PlatformSDKController.cs b/JD.API/Controllers/PlatformSDKController.cs index ab99992d..a616ebc5 100644 --- a/JD.API/Controllers/PlatformSDKController.cs +++ b/JD.API/Controllers/PlatformSDKController.cs @@ -355,5 +355,16 @@ namespace JD.API.API.Controllers { return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderDetail(request); } + + /// + /// 查询服务单运单详情 + /// + /// + /// + [HttpPost] + public JToken GetServiceOrderDeliveryDetail(QueryServiceOrderDetailRequest request) + { + return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderDeliveryDetail(request); + } } }