|
|
@ -136,6 +136,8 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
|
|
|
|
List<SpuTotalSaleInfo> insertSpuTotalSaleInfoList = new List<SpuTotalSaleInfo>(); |
|
|
|
IList<SpuTotalSaleInfo> updateSpuTotalSaleInfoList = new List<SpuTotalSaleInfo>(); |
|
|
|
|
|
|
|
List<SkuOptimizationTask> insertSkuOptimizationTaskList = new List<SkuOptimizationTask>(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
//等待检查sku销量的订单集合
|
|
|
@ -376,75 +378,106 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
{ |
|
|
|
if (waitToCheckSkuSaleOrderList.Count() > 0) |
|
|
|
{ |
|
|
|
var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s => |
|
|
|
{ |
|
|
|
//if (insertSpuTotalSaleInfoList.Any(x => x.ProductId == s.ProductId))
|
|
|
|
// return true; //首次触发
|
|
|
|
//if (s.LastOptimizationItemCount == 0 && s.ItemCount >= 20)
|
|
|
|
// return true; //销量大于20
|
|
|
|
//if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2)
|
|
|
|
// return true;
|
|
|
|
//return false;
|
|
|
|
return GetOptimizationReason(s) != null; |
|
|
|
}); |
|
|
|
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; |
|
|
|
|
|
|
|
var triggerOptimizationReason = GetOptimizationReason(spuSale); |
|
|
|
//没有完成首次采购的spu
|
|
|
|
var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList) |
|
|
|
.Where(s => s.IsFirstPurchaseCompleted == false) |
|
|
|
.Select(s => s.ProductId) |
|
|
|
.ToList(); |
|
|
|
if (noFisrstPurchasedSpuList.Count() > 0) |
|
|
|
{ |
|
|
|
//查询已存在未结束的优化任务
|
|
|
|
var dbSkuOptimizationTaskList = fsql.Select<SkuOptimizationTask>() |
|
|
|
.Where(t => t.ShopId == shopId && |
|
|
|
t.IsOptimizationCompleted == false && |
|
|
|
t.TriggerOptimizationReason == Enums.TriggerOptimizationReason.首次采购 && |
|
|
|
noFisrstPurchasedSpuList.Contains(t.ProductId)) |
|
|
|
.ToList(); |
|
|
|
|
|
|
|
#region 更新sku优化标记
|
|
|
|
var oskuId = long.Parse(osku.Id); |
|
|
|
var insertOrderSku = insertOrderSkuList.FirstOrDefault(s => s.Id == oskuId); |
|
|
|
if (insertOrderSku != null) |
|
|
|
{ |
|
|
|
insertOrderSku.IsNeedOptimization = 1; |
|
|
|
insertOrderSku.TriggerOptimizationReason = triggerOptimizationReason; |
|
|
|
} |
|
|
|
else |
|
|
|
foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList) |
|
|
|
{ |
|
|
|
//updateOrderSkuIdList_OptimizationFlag.Add(oskuId);
|
|
|
|
if (!updateOSkuOptimizationFlagByReasonGroups.TryGetValue(triggerOptimizationReason.Value, out var updateOSkuOptimizationFlagByReasonList)) |
|
|
|
foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList) |
|
|
|
{ |
|
|
|
updateOSkuOptimizationFlagByReasonList = new List<long>(); |
|
|
|
updateOSkuOptimizationFlagByReasonGroups.Add(triggerOptimizationReason.Value, updateOSkuOptimizationFlagByReasonList); |
|
|
|
} |
|
|
|
updateOSkuOptimizationFlagByReasonList.Add(oskuId); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建待议价任务
|
|
|
|
if (!dbOptimizationLimitTaskList.Any(t => t.OrderId == o.OrderId && t.SkuId == osku.SkuId)) |
|
|
|
if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) && |
|
|
|
!dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) && |
|
|
|
!insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId)) |
|
|
|
{ |
|
|
|
//判断sku是否首次采购
|
|
|
|
var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == osku.SkuId); |
|
|
|
|
|
|
|
insertTimeLimitTaskList.Add(new TimeLimitTask() |
|
|
|
var skuOptimizationTask = new SkuOptimizationTask() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
CreateTme = DateTime.Now, |
|
|
|
//ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
|
|
|
|
ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now.AddDays(isFirst ? 1 : 0)), |
|
|
|
OrderId = o.OrderId, |
|
|
|
OrderSn = o.OrderSn, |
|
|
|
ShopId = shopId, |
|
|
|
SkuId = osku.SkuId, |
|
|
|
TaskType = Enums.TimeLimitTaskType.待议价任务 |
|
|
|
}); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
PreItemCount = 0, |
|
|
|
PrePurchasedAmount = 0, |
|
|
|
}; |
|
|
|
|
|
|
|
insertSkuOptimizationTaskList.Add(skuOptimizationTask); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s =>
|
|
|
|
//{
|
|
|
|
// return GetOptimizationReason(s) != null;
|
|
|
|
//});
|
|
|
|
//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;
|
|
|
|
|
|
|
|
// var triggerOptimizationReason = GetOptimizationReason(spuSale);
|
|
|
|
|
|
|
|
// #region 更新sku优化标记
|
|
|
|
// var oskuId = long.Parse(osku.Id);
|
|
|
|
// var insertOrderSku = insertOrderSkuList.FirstOrDefault(s => s.Id == oskuId);
|
|
|
|
// if (insertOrderSku != null)
|
|
|
|
// {
|
|
|
|
// insertOrderSku.IsNeedOptimization = 1;
|
|
|
|
// insertOrderSku.TriggerOptimizationReason = triggerOptimizationReason;
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// //updateOrderSkuIdList_OptimizationFlag.Add(oskuId);
|
|
|
|
// if (!updateOSkuOptimizationFlagByReasonGroups.TryGetValue(triggerOptimizationReason.Value, out var updateOSkuOptimizationFlagByReasonList))
|
|
|
|
// {
|
|
|
|
// updateOSkuOptimizationFlagByReasonList = new List<long>();
|
|
|
|
// updateOSkuOptimizationFlagByReasonGroups.Add(triggerOptimizationReason.Value, updateOSkuOptimizationFlagByReasonList);
|
|
|
|
// }
|
|
|
|
// updateOSkuOptimizationFlagByReasonList.Add(oskuId);
|
|
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
// #region 创建待议价任务
|
|
|
|
// if (!dbOptimizationLimitTaskList.Any(t => t.OrderId == o.OrderId && t.SkuId == osku.SkuId))
|
|
|
|
// {
|
|
|
|
// //判断sku是否首次采购
|
|
|
|
// var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == osku.SkuId);
|
|
|
|
|
|
|
|
// insertTimeLimitTaskList.Add(new TimeLimitTask()
|
|
|
|
// {
|
|
|
|
// Id = idGenerator.NewLong(),
|
|
|
|
// CreateTme = DateTime.Now,
|
|
|
|
// //ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
|
|
|
|
// ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now.AddDays(isFirst ? 1 : 0)),
|
|
|
|
// OrderId = o.OrderId,
|
|
|
|
// OrderSn = o.OrderSn,
|
|
|
|
// ShopId = shopId,
|
|
|
|
// SkuId = osku.SkuId,
|
|
|
|
// TaskType = Enums.TimeLimitTaskType.待议价任务
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|