shanji 2 years ago
parent
commit
f6d94bb099
  1. 54
      BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs

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

@ -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(); //签收

Loading…
Cancel
Save