|
|
@ -303,6 +303,9 @@ namespace BBWY.Server.Business |
|
|
|
if (pt == null) |
|
|
|
throw new BusinessException($"{request.TaskId}任务不存在"); |
|
|
|
|
|
|
|
if (pt.Status != Enums.PromitionTaskStatus.等待) |
|
|
|
throw new BusinessException("任务状态必须为等待"); |
|
|
|
|
|
|
|
if (request.PreTaskId != -1) |
|
|
|
{ |
|
|
|
var prpt = fsql.Select<PromotionTask>(request.PreTaskId).ToOne(); |
|
|
@ -312,9 +315,6 @@ namespace BBWY.Server.Business |
|
|
|
if (pt.Id == prpt.Id) |
|
|
|
throw new BusinessException("前置任务不能设置为自己"); |
|
|
|
|
|
|
|
if (pt.Status != Enums.PromitionTaskStatus.等待) |
|
|
|
throw new BusinessException("任务状态必须为等待"); |
|
|
|
|
|
|
|
if (prpt.Status != Enums.PromitionTaskStatus.等待 && prpt.Status != Enums.PromitionTaskStatus.进行中) |
|
|
|
throw new BusinessException("前置任务状态必须为等待或进行中"); |
|
|
|
|
|
|
@ -700,6 +700,22 @@ namespace BBWY.Server.Business |
|
|
|
//查询店铺
|
|
|
|
var shopList = venderBusiness.GetShopList(shopId, Enums.Platform.京东); |
|
|
|
|
|
|
|
//开始下一轮开始任务
|
|
|
|
var nextPromotionTaskList = fsql.Select<PromotionTask>().WhereIf(shopId != null, pt => pt.ShopId == shopId) |
|
|
|
.Where(pt => pt.Status == Enums.PromitionTaskStatus.等待 && |
|
|
|
pt.PreTaskId == -1).ToList(pt => new { Id = pt.Id, ShopId = pt.ShopId }); |
|
|
|
if (nextPromotionTaskList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var nextTask in nextPromotionTaskList) |
|
|
|
{ |
|
|
|
var shop = shopList.FirstOrDefault(s => s.ShopId == nextTask.ShopId.ToString()); |
|
|
|
if (shop != null) |
|
|
|
{ |
|
|
|
Task.Factory.StartNew(() => AutoStart(nextTask.Id, shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionAutoStartTaskScheduler); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//查询正在进行的任务
|
|
|
|
var runningTaskList = fsql.Select<PromotionTask>() |
|
|
|
.WhereIf(shopId != null, pt => pt.ShopId == shopId) |
|
|
@ -898,30 +914,19 @@ namespace BBWY.Server.Business |
|
|
|
|
|
|
|
#region 开始后续任务
|
|
|
|
//下一轮开始任务
|
|
|
|
var nextPromotionTaskList = new List<long>(); |
|
|
|
var noPrePromotionTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == shopId && |
|
|
|
pt.Status == Enums.PromitionTaskStatus.等待 && |
|
|
|
pt.PreTaskId == -1).ToList(pt => pt.Id); |
|
|
|
if (noPrePromotionTaskList.Count() > 0) |
|
|
|
nextPromotionTaskList.AddRange(noPrePromotionTaskList); |
|
|
|
|
|
|
|
if (jobDoneTaskIdList.Count() > 0) |
|
|
|
{ |
|
|
|
var childTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == shopId && |
|
|
|
pt.Status == Enums.PromitionTaskStatus.等待 && |
|
|
|
jobDoneTaskIdList.Contains(pt.PreTaskId.Value)).ToList(pt => pt.Id); |
|
|
|
pt.Status == Enums.PromitionTaskStatus.等待 && |
|
|
|
jobDoneTaskIdList.Contains(pt.PreTaskId.Value)).ToList(pt => pt.Id); |
|
|
|
if (childTaskList.Count() > 0) |
|
|
|
nextPromotionTaskList.AddRange(childTaskList); |
|
|
|
} |
|
|
|
|
|
|
|
if (nextPromotionTaskList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var taskId in nextPromotionTaskList) |
|
|
|
{ |
|
|
|
Task.Factory.StartNew(() => AutoStart(taskId, shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionAutoStartTaskScheduler); |
|
|
|
foreach (var taskId in childTaskList) |
|
|
|
{ |
|
|
|
Task.Factory.StartNew(() => AutoStart(taskId, shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionAutoStartTaskScheduler); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
} |
|
|
|
|
|
|
|