|
@ -17,12 +17,18 @@ namespace BBWYB.Server.Business.Sync |
|
|
private OP_PlatformClientFactory opPlatformClientFactory; |
|
|
private OP_PlatformClientFactory opPlatformClientFactory; |
|
|
private VenderBusiness venderBusiness; |
|
|
private VenderBusiness venderBusiness; |
|
|
private TaskSchedulerManager taskSchedulerManager; |
|
|
private TaskSchedulerManager taskSchedulerManager; |
|
|
|
|
|
private List<Enums.TimeLimitTaskType> timeLimitTaskTypes; |
|
|
|
|
|
|
|
|
public OrderSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, VenderBusiness venderBusiness, TaskSchedulerManager taskSchedulerManager) : base(fsql, nLogManager, idGenerator) |
|
|
public OrderSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, VenderBusiness venderBusiness, TaskSchedulerManager taskSchedulerManager) : base(fsql, nLogManager, idGenerator) |
|
|
{ |
|
|
{ |
|
|
this.opPlatformClientFactory = opPlatformClientFactory; |
|
|
this.opPlatformClientFactory = opPlatformClientFactory; |
|
|
this.venderBusiness = venderBusiness; |
|
|
this.venderBusiness = venderBusiness; |
|
|
this.taskSchedulerManager = taskSchedulerManager; |
|
|
this.taskSchedulerManager = taskSchedulerManager; |
|
|
|
|
|
timeLimitTaskTypes = new List<Enums.TimeLimitTaskType>() |
|
|
|
|
|
{ |
|
|
|
|
|
Enums.TimeLimitTaskType.采购任务, |
|
|
|
|
|
Enums.TimeLimitTaskType.待议价任务 |
|
|
|
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public void AutoOrderSync() |
|
|
public void AutoOrderSync() |
|
@ -94,13 +100,20 @@ namespace BBWYB.Server.Business.Sync |
|
|
var payedQTOrderIdList = qtOrderList.Items.Where(qto => qto.IsPay).Select(qto => qto.OrderId).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 payedQTSpuIdList = qtOrderList.Items.Where(qto => qto.IsPay).SelectMany(qto => qto.OrderSkuList).Select(qtos => qtos.ProductId).Distinct().ToList(); |
|
|
|
|
|
var payedQTSkuIdList = qtOrderList.Items.Where(qto => qto.IsPay).SelectMany(qto => qto.OrderSkuList).Select(qtos => qtos.SkuId).Distinct().ToList(); |
|
|
|
|
|
|
|
|
//限时任务列表
|
|
|
//限时任务列表
|
|
|
var dbPurchaseTimeLimitTaskList = fsql.Select<TimeLimitTask>().Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务 && |
|
|
var dbTimeLimitTaskList = fsql.Select<TimeLimitTask>().Where(t => timeLimitTaskTypes.Contains(t.TaskType.Value) && |
|
|
payedQTOrderIdList.Contains(t.OrderId)).ToList(); |
|
|
payedQTOrderIdList.Contains(t.OrderId)).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
//限时采购任务列表
|
|
|
|
|
|
var dbPurchaseTimeLimitTaskList = dbTimeLimitTaskList.Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
//限时议价任务列表
|
|
|
|
|
|
var dbOptimizationLimitTaskList = dbTimeLimitTaskList.Where(t => t.TaskType == Enums.TimeLimitTaskType.待议价任务).ToList(); |
|
|
|
|
|
|
|
|
//现有sku销量
|
|
|
//现有sku销量
|
|
|
var dbSkuTotalSaleInfoList = fsql.Select<SkuTotalSaleInfo>().Where(s => s.ShopId == shopId && s.IsEnabled == true && payedQTSpuIdList.Contains(s.ProductId)) |
|
|
var dbSkuTotalSaleInfoList = fsql.Select<SkuTotalSaleInfo>().Where(s => s.ShopId == shopId && s.IsEnabled == true && payedQTSkuIdList.Contains(s.SkuId)) |
|
|
.ToList(); |
|
|
.ToList(); |
|
|
|
|
|
|
|
|
//现有spu销量
|
|
|
//现有spu销量
|
|
@ -205,7 +218,9 @@ namespace BBWYB.Server.Business.Sync |
|
|
ProductId = qtOrderSku.ProductId, |
|
|
ProductId = qtOrderSku.ProductId, |
|
|
BelongSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == qtOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty, |
|
|
BelongSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == qtOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty, |
|
|
InPackAmount = qtOrderSku.PackAmount, |
|
|
InPackAmount = qtOrderSku.PackAmount, |
|
|
BuyerPayFreight = qtOrderSku.FreightAmount |
|
|
BuyerPayFreight = qtOrderSku.FreightAmount, |
|
|
|
|
|
IsNeedOptimization = 0, |
|
|
|
|
|
IsOptimizationCompleted = 0 |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
//收货人
|
|
|
//收货人
|
|
@ -341,7 +356,60 @@ namespace BBWYB.Server.Business.Sync |
|
|
#endregion
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 检查待议价任务
|
|
|
#region 检查待议价任务
|
|
|
|
|
|
{ |
|
|
|
|
|
if (waitToCheckSkuSaleOrderList.Count() > 0) |
|
|
|
|
|
{ |
|
|
|
|
|
var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s => |
|
|
|
|
|
{ |
|
|
|
|
|
if (s.LastOptimizationItemCount == 0 && s.ItemCount >= 20) |
|
|
|
|
|
return true; |
|
|
|
|
|
if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2) |
|
|
|
|
|
return true; |
|
|
|
|
|
return false; |
|
|
|
|
|
}); |
|
|
|
|
|
if (optimizationSpuSaleList.Count() > 0) |
|
|
|
|
|
{ |
|
|
|
|
|
foreach (var spuSale in optimizationSpuSaleList) |
|
|
|
|
|
{ |
|
|
|
|
|
var orderList = waitToCheckSkuSaleOrderList.Where(o => o.OrderSkuList.Any(osku => osku.ProductId == spuSale.ProductId)).ToList(); |
|
|
|
|
|
foreach (var o in orderList) |
|
|
|
|
|
{ |
|
|
|
|
|
foreach (var osku in o.OrderSkuList) |
|
|
|
|
|
{ |
|
|
|
|
|
if (osku.ProductId != spuSale.ProductId) |
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
|
|
#region 更新sku优化标记
|
|
|
|
|
|
var oskuId = long.Parse(osku.Id); |
|
|
|
|
|
var insertOrderSku = insertOrderSkuList.FirstOrDefault(s => s.Id == oskuId); |
|
|
|
|
|
if (insertOrderSku != null) |
|
|
|
|
|
insertOrderSku.IsNeedOptimization = 1; |
|
|
|
|
|
else |
|
|
|
|
|
updateOrderSkuIdList_OptimizationFlag.Add(oskuId); |
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 创建待议价任务
|
|
|
|
|
|
if (!dbOptimizationLimitTaskList.Any(t => t.OrderId == o.OrderId && t.SkuId == osku.SkuId)) |
|
|
|
|
|
{ |
|
|
|
|
|
insertTimeLimitTaskList.Add(new TimeLimitTask() |
|
|
|
|
|
{ |
|
|
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
|
|
CreateTme = DateTime.Now, |
|
|
|
|
|
ExpirationTime = DateTime.Now.AddDays(1), |
|
|
|
|
|
OrderId = o.OrderId, |
|
|
|
|
|
OrderSn = o.OrderSn, |
|
|
|
|
|
ShopId = shopId, |
|
|
|
|
|
SkuId = osku.SkuId, |
|
|
|
|
|
TaskType = Enums.TimeLimitTaskType.待议价任务 |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
#endregion
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
#endregion
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 检查限时采购任务
|
|
|
#region 检查限时采购任务
|
|
@ -369,6 +437,28 @@ namespace BBWYB.Server.Business.Sync |
|
|
if (deleteTimeLimitTaskOrderIdList.Count() > 0) |
|
|
if (deleteTimeLimitTaskOrderIdList.Count() > 0) |
|
|
fsql.Delete<TimeLimitTask>().Where(t => deleteTimeLimitTaskOrderIdList.Contains(t.OrderId)).ExecuteAffrows(); |
|
|
fsql.Delete<TimeLimitTask>().Where(t => deleteTimeLimitTaskOrderIdList.Contains(t.OrderId)).ExecuteAffrows(); |
|
|
|
|
|
|
|
|
|
|
|
if (insertSkuTotalSaleInfoList.Count() > 0) |
|
|
|
|
|
fsql.Insert(insertSkuTotalSaleInfoList).ExecuteAffrows(); |
|
|
|
|
|
if (updateSkuTotalSaleInfoList.Count() > 0) |
|
|
|
|
|
{ |
|
|
|
|
|
foreach (var item in updateSkuTotalSaleInfoList) |
|
|
|
|
|
fsql.Update<SkuTotalSaleInfo>(item.SkuId).Set(s => s.ItemCount, item.ItemCount) |
|
|
|
|
|
.Set(s => s.UpdateTime, DateTime.Now) |
|
|
|
|
|
.ExecuteAffrows(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (insertSpuTotalSaleInfoList.Count() > 0) |
|
|
|
|
|
fsql.Insert(insertSpuTotalSaleInfoList).ExecuteAffrows(); |
|
|
|
|
|
if (updateSpuTotalSaleInfoList.Count() > 0) |
|
|
|
|
|
{ |
|
|
|
|
|
foreach (var item in updateSpuTotalSaleInfoList) |
|
|
|
|
|
fsql.Update<SpuTotalSaleInfo>(item.ProductId).Set(s => s.ItemCount, item.ItemCount) |
|
|
|
|
|
.Set(s => s.UpdateTime, DateTime.Now) |
|
|
|
|
|
.ExecuteAffrows(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (updateOrderSkuIdList_OptimizationFlag.Count() > 0) |
|
|
|
|
|
fsql.Update<OrderSku>(updateOrderSkuIdList_OptimizationFlag).Set(osku => osku.IsNeedOptimization, 1).ExecuteAffrows(); |
|
|
|
|
|
|
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|