|
|
@ -1,5 +1,7 @@ |
|
|
|
using BBWYB.Common.Log; |
|
|
|
using BBWYB.Common.Models; |
|
|
|
using BBWYB.Server.Model; |
|
|
|
using BBWYB.Server.Model.Db; |
|
|
|
using BBWYB.Server.Model.Dto; |
|
|
|
using Yitter.IdGenerator; |
|
|
|
|
|
|
@ -16,6 +18,57 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 完成优化
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="taskId"></param>
|
|
|
|
public void CompleteOptimization(long taskId) |
|
|
|
{ |
|
|
|
var optimazaionTask = fsql.Select<SkuOptimizationTask>(taskId).ToOne(); |
|
|
|
if (optimazaionTask == null) |
|
|
|
throw new BusinessException("优化任务不存在"); |
|
|
|
if (optimazaionTask.IsOptimizationCompleted == true) |
|
|
|
throw new BusinessException("优化任务已完成"); |
|
|
|
|
|
|
|
var optimazationTaskIdList = fsql.Select<SkuOptimizationTask>() |
|
|
|
.Where(t => t.ProductId == optimazaionTask.ProductId && t.IsOptimizationCompleted == false) |
|
|
|
.ToList(t => t.Id); |
|
|
|
|
|
|
|
|
|
|
|
var spuSaleInfo = fsql.Select<SpuTotalSaleInfo>(optimazaionTask.ProductId).ToOne(); |
|
|
|
if (spuSaleInfo == null) |
|
|
|
|
|
|
|
throw new BusinessException($"未找到spu{optimazaionTask.ProductId}销量"); |
|
|
|
|
|
|
|
var updateSpuSaleInfo = fsql.Update<SpuTotalSaleInfo>(optimazaionTask.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.Update<SkuOptimizationTask>().Set(t => t.IsOptimizationCompleted, true) |
|
|
|
.Set(t => t.CompletionTime, DateTime.Now) |
|
|
|
.Where(t => optimazationTaskIdList.Contains(t.Id) && t.IsOptimizationCompleted == false) |
|
|
|
.ExecuteAffrows(); |
|
|
|
|
|
|
|
fsql.Update<TimeLimitTask>().Set(t => t.CompletionTime, DateTime.Now) |
|
|
|
.Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) |
|
|
|
.Where(t => optimazationTaskIdList.Contains(t.TaskId) && |
|
|
|
t.CompletionTime == null && |
|
|
|
t.TaskType == Enums.TimeLimitTaskType.待议价任务) |
|
|
|
.ExecuteAffrows(); |
|
|
|
|
|
|
|
updateSpuSaleInfo.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s => |
|
|
|
{ |
|
|
|