|
|
@ -90,21 +90,33 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
var qtOrderIdList = qtOrderList.Items.Select(qto => qto.OrderId).ToList(); |
|
|
|
var dbOrderList = fsql.Select<Model.Db.Order>(qtOrderIdList).ToList(); |
|
|
|
|
|
|
|
//采购限时任务列表
|
|
|
|
|
|
|
|
var payedQTOrderIdList = qtOrderList.Items.Where(qto => qto.IsPay).Select(qto => qto.OrderId).ToList(); |
|
|
|
|
|
|
|
var payedQTSpuIdList = qtOrderList.Items.Where(qto => qto.IsPay).SelectMany(qto => qto.OrderSkuList).Select(qtos => qtos.ProductId).Distinct().ToList(); |
|
|
|
|
|
|
|
//限时任务列表
|
|
|
|
var dbPurchaseTimeLimitTaskList = fsql.Select<TimeLimitTask>().Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务 && |
|
|
|
payedQTOrderIdList.Contains(t.OrderId)).ToList(); |
|
|
|
|
|
|
|
//现有sku销量
|
|
|
|
var dbSkuTotalSakeInfoList = fsql.Select<SkuTotalSaleInfo>().Where(s => s.ShopId == shopId && s.IsEnabled == true && payedQTSpuIdList.Contains(s.ProductId)).ToList(); |
|
|
|
|
|
|
|
#region DB Operation
|
|
|
|
List<Model.Db.Order> insertOrderList = new List<Model.Db.Order>(); |
|
|
|
List<OrderSku> insertOrderSkuList = new List<OrderSku>(); |
|
|
|
List<OrderConsignee> insertOrderConsigneeList = new List<OrderConsignee>(); |
|
|
|
List<TimeLimitTask> insertTimeLimitTaskList = new List<TimeLimitTask>(); |
|
|
|
List<string> deleteTimeLimitTaskOrderIdList = new List<string>(); |
|
|
|
|
|
|
|
List<IUpdate<Model.Db.Order>> updateOrderList = new List<IUpdate<Model.Db.Order>>(); |
|
|
|
List<SkuTotalSaleInfo> insertSkuTotalSaleInfoList = new List<SkuTotalSaleInfo>(); |
|
|
|
IList<SkuTotalSaleInfo> updateSkuTotalSaleInfoList = new List<SkuTotalSaleInfo>(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
//等待检查sku销量的订单集合
|
|
|
|
List<OP_OrderResponse> waitToCheckSkuSaleOrderList = new List<OP_OrderResponse>(); |
|
|
|
|
|
|
|
#region 同步订单
|
|
|
|
foreach (var qtOrder in qtOrderList.Items) |
|
|
|
{ |
|
|
|
var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == qtOrder.OrderId); |
|
|
@ -184,10 +196,10 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
ProductId = qtOrderSku.ProductId, |
|
|
|
BelongSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == qtOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty, |
|
|
|
InPackAmount = qtOrderSku.PackAmount, |
|
|
|
BuyerPayFreight = qtOrderSku.FreightAmount |
|
|
|
BuyerPayFreight = qtOrderSku.FreightAmount, |
|
|
|
IsNeedOptimization = 0 |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
//收货人
|
|
|
|
insertOrderConsigneeList.Add(new OrderConsignee() |
|
|
|
{ |
|
|
@ -202,19 +214,26 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
TelePhone = qtOrder.Consignee.Mobile, |
|
|
|
Town = qtOrder.Consignee.Town |
|
|
|
}); |
|
|
|
|
|
|
|
if (qtOrder.IsPay && !waitToCheckSkuSaleOrderList.Any(x => x.OrderId == qtOrder.OrderId)) |
|
|
|
waitToCheckSkuSaleOrderList.Add(qtOrder); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
#region 订单状态脱离拳探 只处理付款和取消
|
|
|
|
Enums.OrderState? updateOrderState = null; |
|
|
|
if (orderState == Enums.OrderState.待付款 && dbOrder.OrderState!=Enums.OrderState.待付款) |
|
|
|
if (orderState == Enums.OrderState.待付款 && dbOrder.OrderState != Enums.OrderState.待付款) |
|
|
|
{ |
|
|
|
//dbOrder.OrderState = Enums.OrderState.待付款;
|
|
|
|
updateOrderState = Enums.OrderState.待付款; |
|
|
|
} |
|
|
|
|
|
|
|
if (dbOrder.OrderState == Enums.OrderState.待付款 && orderState != Enums.OrderState.待付款) |
|
|
|
if (dbOrder.OrderState == Enums.OrderState.待付款 && orderState != Enums.OrderState.待付款 && orderState != Enums.OrderState.已取消) |
|
|
|
{ |
|
|
|
updateOrderState = Enums.OrderState.等待采购; |
|
|
|
if (!waitToCheckSkuSaleOrderList.Any(x => x.OrderId == qtOrder.OrderId)) |
|
|
|
waitToCheckSkuSaleOrderList.Add(qtOrder); |
|
|
|
} |
|
|
|
|
|
|
|
if (dbOrder.OrderState != Enums.OrderState.已取消 && orderState == Enums.OrderState.已取消) |
|
|
|
{ |
|
|
@ -244,7 +263,46 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
updateOrderList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!qtOrder.IsPay) |
|
|
|
continue; |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 统计sku销量
|
|
|
|
foreach (var qtOrder in waitToCheckSkuSaleOrderList) |
|
|
|
{ |
|
|
|
foreach (var qtOrderSku in qtOrder.OrderSkuList) |
|
|
|
{ |
|
|
|
var skuTotalSaleInfo = dbSkuTotalSakeInfoList.FirstOrDefault(s => s.SkuId == qtOrderSku.SkuId); |
|
|
|
if (skuTotalSaleInfo == null) |
|
|
|
{ |
|
|
|
skuTotalSaleInfo = insertSkuTotalSaleInfoList.FirstOrDefault(s => s.SkuId == qtOrderSku.SkuId); |
|
|
|
if (skuTotalSaleInfo == null) |
|
|
|
{ |
|
|
|
skuTotalSaleInfo = new SkuTotalSaleInfo() |
|
|
|
{ |
|
|
|
SkuId = qtOrderSku.SkuId, |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
IsEnabled = true, |
|
|
|
ItemCount = 0, |
|
|
|
LastOptimizationItemCount = 0, |
|
|
|
LastOptimizationTime = null, |
|
|
|
ProductId = qtOrderSku.ProductId, |
|
|
|
ShopId = shopId, |
|
|
|
UpdateTime = DateTime.Now |
|
|
|
}; |
|
|
|
insertSkuTotalSaleInfoList.Add(skuTotalSaleInfo); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (!updateSkuTotalSaleInfoList.Any(s => s.SkuId == qtOrderSku.SkuId)) |
|
|
|
{ |
|
|
|
updateSkuTotalSaleInfoList.Add(skuTotalSaleInfo); |
|
|
|
} |
|
|
|
skuTotalSaleInfo.ItemCount += qtOrderSku.Quantity; |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
CheckPurchaseTimeLimitTask(shopId, qtOrderList.Items, dbPurchaseTimeLimitTaskList, insertTimeLimitTaskList); |
|
|
|
|
|
|
@ -268,6 +326,8 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
|
|
|
|
if (deleteTimeLimitTaskOrderIdList.Count() > 0) |
|
|
|
fsql.Delete<TimeLimitTask>().Where(t => deleteTimeLimitTaskOrderIdList.Contains(t.OrderId)).ExecuteAffrows(); |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|