Browse Source

首次采购

liangku_skuoptimazation
shanji 1 year ago
parent
commit
921aacaca4
  1. 65
      BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs
  2. 159
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  3. 8
      BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs

65
BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs

@ -15,5 +15,70 @@ namespace BBWYB.Server.Business
{
}
/*
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
}
}
}
}
*/
}
}

159
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -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)
foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList)
{
insertOrderSku.IsNeedOptimization = 1;
insertOrderSku.TriggerOptimizationReason = triggerOptimizationReason;
}
else
foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList)
{
//updateOrderSkuIdList_OptimizationFlag.Add(oskuId);
if (!updateOSkuOptimizationFlagByReasonGroups.TryGetValue(triggerOptimizationReason.Value, out var updateOSkuOptimizationFlagByReasonList))
if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) &&
!dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) &&
!insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId))
{
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()
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

8
BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs

@ -47,8 +47,14 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "bigint")]
public long? ShopId { get; set; }
[Column(DbType = "bigint")]
public long? BelongShopId { get; set; }
/// <summary>
/// 来源店铺名
/// </summary>
[Column(StringLength = 50)]
public string ShopName { get; set; }
public string BelongShopName { get; set; }
[Column(StringLength = 50)]
public string SkuId { get; set; }

Loading…
Cancel
Save