|
|
@ -24,6 +24,8 @@ namespace BBWY.Server.Business.Sync |
|
|
|
private IList<int> kuaiDi100PushStateList_lanshou; |
|
|
|
private IList<int> kuaiDi100PushStateList_qianshou; |
|
|
|
private IList<int> kuaiDi100PushStateList_paijian; |
|
|
|
private Dictionary<int, Enums.ServiceResult> processResultDic; |
|
|
|
|
|
|
|
|
|
|
|
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) |
|
|
|
{ |
|
|
@ -81,6 +83,15 @@ huitongkuaidi 百世快递 |
|
|
|
new LogisticsCompanyRelationship(){ SourceName="百世快递",TargetName="百世快递",TargetCode="huitongkuaidi"}, |
|
|
|
new LogisticsCompanyRelationship(){ SourceName="百世快运",TargetName="百世快递",TargetCode="huitongkuaidi"}, |
|
|
|
}; |
|
|
|
|
|
|
|
processResultDic = new Dictionary<int, Enums.ServiceResult>() |
|
|
|
{ |
|
|
|
{ 23,Enums.ServiceResult.换新}, |
|
|
|
{ 40,Enums.ServiceResult.退货}, |
|
|
|
{ 60,Enums.ServiceResult.原返}, |
|
|
|
{ 90,Enums.ServiceResult.线下换新}, |
|
|
|
{ 110,Enums.ServiceResult.商品补发} |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
public void SyncServiceOrder() |
|
|
@ -114,17 +125,24 @@ huitongkuaidi 百世快递 |
|
|
|
var exceptServiceIdList = serviceIdList.Except(dbServiceIdList); |
|
|
|
|
|
|
|
var apiOrderIdList = jtokenList.Where(j => exceptServiceIdList.Contains(j.Value<string>("serviceId"))).Select(j => j.Value<string>("orderId")).ToList(); |
|
|
|
var dbOrderSkuList = fsql.Select<OrderSku, Order>().InnerJoin((osku, o) => osku.OrderId == o.Id) |
|
|
|
.Where((osku, o) => o.ShopId == shopId && apiOrderIdList.Contains(osku.OrderId) && osku.Price != 0) |
|
|
|
.ToList((osku, o) => new |
|
|
|
{ |
|
|
|
osku.Id, |
|
|
|
osku.ProductId, |
|
|
|
osku.SkuId, |
|
|
|
osku.OrderId, |
|
|
|
osku.ItemTotal, |
|
|
|
o.StorageType |
|
|
|
}); |
|
|
|
var dbOrderSkuList = fsql.Select<OrderSku, Order, OrderCostDetail, PurchaseOrder>() |
|
|
|
.InnerJoin((osku, o, ocd, po) => osku.OrderId == o.Id) |
|
|
|
.LeftJoin((osku, o, ocd, po) => osku.OrderId == ocd.OrderId && osku.SkuId == ocd.SkuId) |
|
|
|
.LeftJoin((osku, o, ocd, po) => ocd.PurchaseOrderPKId == po.Id) |
|
|
|
.Where((osku, o, ocd, po) => o.ShopId == shopId && apiOrderIdList.Contains(osku.OrderId) && osku.Price != 0) |
|
|
|
.ToList((osku, o, ocd, po) => new |
|
|
|
{ |
|
|
|
osku.Id, |
|
|
|
osku.ProductId, |
|
|
|
osku.SkuId, |
|
|
|
osku.OrderId, |
|
|
|
osku.ItemTotal, |
|
|
|
o.StorageType, |
|
|
|
po.PurchasePlatform, |
|
|
|
po.PurchaseMethod, |
|
|
|
po.PurchaseOrderId, |
|
|
|
ocd.PurchaseOrderPKId |
|
|
|
}); |
|
|
|
|
|
|
|
List<ServiceOrder> insertServiceOrderList = new List<ServiceOrder>(); |
|
|
|
List<IUpdate<ServiceOrder>> updateServiceOrderList = new List<IUpdate<ServiceOrder>>(); |
|
|
@ -144,7 +162,7 @@ huitongkuaidi 百世快递 |
|
|
|
continue; |
|
|
|
var isNeedSubscribeKuaiDi100 = false; |
|
|
|
var isTuiHuoCang = false; |
|
|
|
|
|
|
|
Enums.ServiceResult? serviceResult = null; |
|
|
|
#region 待收货服务单,检查是否需要订阅快递100
|
|
|
|
if (status == Enums.ServiceOrderState.待收货) |
|
|
|
{ |
|
|
@ -167,6 +185,10 @@ huitongkuaidi 百世快递 |
|
|
|
if (!serviceOrderDetailResponse.Success) |
|
|
|
throw new Exception($"获取服务单详情失败 {serviceOrderDetailResponse.Msg}"); |
|
|
|
|
|
|
|
var processResult = serviceOrderDetailResponse.Data.Value<int>("processResult"); |
|
|
|
if (processResultDic.ContainsKey(processResult)) |
|
|
|
serviceResult = processResultDic[processResult]; |
|
|
|
|
|
|
|
//检查退货城市是否为泉州鲤城区
|
|
|
|
isNeedSubscribeKuaiDi100 = (serviceOrderDetailResponse.Data["afsContactInfo"]?.Value<int>("cityCode") ?? 0) == 1332 && |
|
|
|
(serviceOrderDetailResponse.Data["afsContactInfo"]?.Value<int>("countyCode") ?? 0) == 42930; |
|
|
@ -194,6 +216,12 @@ huitongkuaidi 百世快递 |
|
|
|
IsSubscribeKuaiDi100 = false, |
|
|
|
IsNeedSubscribeKuaiDi100 = isNeedSubscribeKuaiDi100, |
|
|
|
ApplyTime = serviceOrderJToken.Value<long>("applyTime").StampToDateTime(), |
|
|
|
ServiceResult = serviceResult, |
|
|
|
|
|
|
|
PurchaseMethod = dbOsku.PurchaseMethod, |
|
|
|
PurchasePlatform = dbOsku.PurchasePlatform, |
|
|
|
PurchaseOrderId = dbOsku.PurchaseOrderId, |
|
|
|
PurchaseOrderPKId = dbOsku.PurchaseOrderPKId |
|
|
|
}; |
|
|
|
if (isTuiHuoCang) |
|
|
|
dbServiceOrder.ReturnDirection = 0; |
|
|
@ -531,7 +559,7 @@ huitongkuaidi 百世快递 |
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Update<ExpressOrder>(expressOrder.Id).Set(e => e.TransportStatus, newStatus) |
|
|
|
.SetIf(state == 3, e => e.SignTime, signTime) |
|
|
|
.SetIf(kuaiDi100PushStateList_qianshou.Contains(state), e => e.SignTime, signTime) |
|
|
|
.Set(e => e.UpdateTime, DateTime.Now) |
|
|
|
.ExecuteAffrows(); //签收
|
|
|
|
|
|
|
|