diff --git a/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs index f476c5b..86fb724 100644 --- a/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs +++ b/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(); + 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 + } + } + } + } + */ } } diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 58d3abe..8bb43bd 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -136,6 +136,8 @@ namespace BBWYB.Server.Business.Sync List insertSpuTotalSaleInfoList = new List(); IList updateSpuTotalSaleInfoList = new List(); + + List insertSkuOptimizationTaskList = new List(); #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) + //没有完成首次采购的spu + var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList) + .Where(s => s.IsFirstPurchaseCompleted == false) + .Select(s => s.ProductId) + .ToList(); + if (noFisrstPurchasedSpuList.Count() > 0) { - foreach (var spuSale in optimizationSpuSaleList) + //查询已存在未结束的优化任务 + var dbSkuOptimizationTaskList = fsql.Select() + .Where(t => t.ShopId == shopId && + t.IsOptimizationCompleted == false && + t.TriggerOptimizationReason == Enums.TriggerOptimizationReason.首次采购 && + noFisrstPurchasedSpuList.Contains(t.ProductId)) + .ToList(); + + foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList) { - var orderList = waitToCheckSkuSaleOrderList.Where(o => o.OrderSkuList.Any(osku => osku.ProductId == spuSale.ProductId)).ToList(); - foreach (var o in orderList) + foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList) { - foreach (var osku in o.OrderSkuList) + if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) && + !dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) && + !insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId)) { - 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 + var skuOptimizationTask = new SkuOptimizationTask() { - //updateOrderSkuIdList_OptimizationFlag.Add(oskuId); - if (!updateOSkuOptimizationFlagByReasonGroups.TryGetValue(triggerOptimizationReason.Value, out var updateOSkuOptimizationFlagByReasonList)) - { - updateOSkuOptimizationFlagByReasonList = new List(); - 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 + Id = idGenerator.NewLong(), + 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(); + // 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 diff --git a/BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs b/BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs index 24f5c93..80ab6ca 100644 --- a/BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs +++ b/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; } + + /// + /// 来源店铺名 + /// [Column(StringLength = 50)] - public string ShopName { get; set; } + public string BelongShopName { get; set; } [Column(StringLength = 50)] public string SkuId { get; set; }