Browse Source

销量条件改变

yijia
shanji 2 years ago
parent
commit
dee7a08fbd
  1. 26
      BBWYB.Server.Business/Order/OrderBusiness.cs
  2. 18
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  3. 27
      BBWYB.Server.Model/Db/Product/SpuTotalSaleInfo.cs

26
BBWYB.Server.Business/Order/OrderBusiness.cs

@ -938,6 +938,23 @@ namespace BBWYB.Server.Business
{ {
if (!string.IsNullOrEmpty(request.ProductId) || string.IsNullOrEmpty(request.SkuId) || request.ShopId == 0) if (!string.IsNullOrEmpty(request.ProductId) || string.IsNullOrEmpty(request.SkuId) || request.ShopId == 0)
throw new BusinessException("参数无效"); throw new BusinessException("参数无效");
var spuSaleInfo = fsql.Select<SpuTotalSaleInfo>(request.ProductId).ToOne();
if (spuSaleInfo == null)
throw new BusinessException($"未找到spu{request.ProductId}销量");
var updateSpuSaleInfo = fsql.Update<SpuTotalSaleInfo>(request.ProductId)
.SetIf(spuSaleInfo.IsFirstPurchaseCompleted == false, s => s.IsFirstPurchaseCompleted, true)
.SetIf(spuSaleInfo.IsFirstPurchaseCompleted == false, s => s.FirstPurchaseCompletedItemCount == s.ItemCount)
.SetIf(spuSaleInfo.IsFirstPurchaseCompleted == true &&
spuSaleInfo.IsFirstOptimizationCompleted == false, s => s.IsFirstOptimizationCompleted, true)
.SetIf(spuSaleInfo.IsFirstPurchaseCompleted == true &&
spuSaleInfo.IsFirstOptimizationCompleted == false, s => s.FirstOptimizationCompletedItemCount == s.ItemCount)
.Set(s => s.LastOptimizationItemCount == s.ItemCount)
.Set(s => s.LastOptimizationTime, DateTime.Now)
.Set(s => s.UpdateTime, DateTime.Now);
fsql.Transaction(() => fsql.Transaction(() =>
{ {
fsql.Update<OrderSku>().Set(osku => osku.IsOptimizationCompleted, 1) fsql.Update<OrderSku>().Set(osku => osku.IsOptimizationCompleted, 1)
@ -956,10 +973,11 @@ namespace BBWYB.Server.Business
t.TaskType == Enums.TimeLimitTaskType.) t.TaskType == Enums.TimeLimitTaskType.)
.ExecuteAffrows(); .ExecuteAffrows();
fsql.Update<SpuTotalSaleInfo>(request.ProductId).Set(s => s.LastOptimizationItemCount == s.ItemCount) //fsql.Update<SpuTotalSaleInfo>(request.ProductId).Set(s => s.LastOptimizationItemCount == s.ItemCount)
.Set(s => s.LastOptimizationTime, DateTime.Now) // .Set(s => s.LastOptimizationTime, DateTime.Now)
.Set(s => s.UpdateTime, DateTime.Now) // .Set(s => s.UpdateTime, DateTime.Now)
.ExecuteAffrows(); // .ExecuteAffrows();
updateSpuSaleInfo?.ExecuteAffrows();
}); });
} }

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

@ -383,7 +383,7 @@ namespace BBWYB.Server.Business.Sync
//if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2) //if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2)
// return true; // return true;
//return false; //return false;
return GetOptimizationReason(s, insertSpuTotalSaleInfoList) != null; return GetOptimizationReason(s) != null;
}); });
if (optimizationSpuSaleList.Count() > 0) if (optimizationSpuSaleList.Count() > 0)
{ {
@ -397,7 +397,7 @@ namespace BBWYB.Server.Business.Sync
if (osku.ProductId != spuSale.ProductId) if (osku.ProductId != spuSale.ProductId)
continue; continue;
var triggerOptimizationReason = GetOptimizationReason(spuSale, insertSpuTotalSaleInfoList); var triggerOptimizationReason = GetOptimizationReason(spuSale);
#region 更新sku优化标记 #region 更新sku优化标记
var oskuId = long.Parse(osku.Id); var oskuId = long.Parse(osku.Id);
@ -608,13 +608,15 @@ namespace BBWYB.Server.Business.Sync
return null; return null;
} }
public Enums.TriggerOptimizationReason? GetOptimizationReason(SpuTotalSaleInfo s, List<SpuTotalSaleInfo> insertSpuTotalSaleInfoList) public Enums.TriggerOptimizationReason? GetOptimizationReason(SpuTotalSaleInfo s)
{ {
if (insertSpuTotalSaleInfoList.Any(x => x.ProductId == s.ProductId)) if (s.IsFirstPurchaseCompleted == false)
return Enums.TriggerOptimizationReason.; //首次触发 return Enums.TriggerOptimizationReason.;
if (s.LastOptimizationItemCount == 0 && s.ItemCount >= 20) if (s.IsFirstPurchaseCompleted == true &&
return Enums.TriggerOptimizationReason.; //销量大于20 s.IsFirstOptimizationCompleted == false &&
if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2) s.ItemCount - s.FirstPurchaseCompletedItemCount >= 20)
return Enums.TriggerOptimizationReason.;
if (s.IsFirstOptimizationCompleted == true && s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2)
return Enums.TriggerOptimizationReason.; return Enums.TriggerOptimizationReason.;
return null; return null;
} }

27
BBWYB.Server.Model/Db/Product/SpuTotalSaleInfo.cs

@ -10,21 +10,42 @@ namespace BBWYB.Server.Model.Db
public partial class SpuTotalSaleInfo public partial class SpuTotalSaleInfo
{ {
/// <summary>
/// Spu
/// </summary>
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)] [Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public string ProductId { get; set; } public string ProductId { get; set; }
[Column(DbType = "datetime")] [Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; } public DateTime? CreateTime { get; set; }
/// <summary>
/// 完成首次优化时的销量
/// </summary>
[Column(DbType = "bigint")]
public long? FirstOptimizationCompletedItemCount { get; set; } = 0;
/// <summary>
/// 完成首次采购时的销量
/// </summary>
[Column(DbType = "bigint")]
public long? FirstPurchaseCompletedItemCount { get; set; } = 0;
/// <summary> /// <summary>
/// 是否有效 /// 是否有效
/// </summary> /// </summary>
public bool? IsEnabled { get; set; } = false; public bool? IsEnabled { get; set; } = false;
/// <summary>
/// 是否完成首次优化
/// </summary>
public bool? IsFirstOptimizationCompleted { get; set; } = false;
/// <summary>
/// 是否完成首次采购
/// </summary>
public bool? IsFirstPurchaseCompleted { get; set; } = false;
/// <summary> /// <summary>
/// 销量,销售件数 /// 销量,销售件数
/// </summary> /// </summary>

Loading…
Cancel
Save