|
|
@ -446,7 +446,9 @@ namespace BBWY.Server.Business |
|
|
|
/// 开始任务
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="request"></param>
|
|
|
|
public void StartPromotionTask(StartPromotionTaskRequest request) |
|
|
|
/// <param name="shop"></param>
|
|
|
|
/// <exception cref="BusinessException"></exception>
|
|
|
|
public void StartPromotionTask(StartPromotionTaskRequest request, ShopResponse shop = null) |
|
|
|
{ |
|
|
|
var dbPromotionTask = fsql.Select<PromotionTask>(request.Id).ToOne(); |
|
|
|
|
|
|
@ -454,7 +456,10 @@ namespace BBWY.Server.Business |
|
|
|
throw new BusinessException("任务不存在"); |
|
|
|
if (dbPromotionTask.Status != Enums.PromitionTaskStatus.等待) |
|
|
|
throw new BusinessException("只能在任务处于等待状态时才能开始"); |
|
|
|
|
|
|
|
if (shop == null) |
|
|
|
shop = venderBusiness.GetShopList(dbPromotionTask.ShopId, Enums.Platform.京东)?.FirstOrDefault(); |
|
|
|
if (shop == null) |
|
|
|
throw new BusinessException("未查询到店铺"); |
|
|
|
|
|
|
|
IList<GiftTemplateSkuRequest> giftTemplateSkuList = null; //赠品模板sku
|
|
|
|
var motherTemplateSku = string.Empty; //奶妈模板的sku
|
|
|
@ -469,8 +474,10 @@ namespace BBWY.Server.Business |
|
|
|
Title = gs.Title |
|
|
|
}); |
|
|
|
if (giftTemplateSkuList == null || giftTemplateSkuList.Count() == 0) |
|
|
|
{ |
|
|
|
throw new BusinessException("赠品模板不存在"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var runingTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == dbPromotionTask.ShopId && pt.Status == Enums.PromitionTaskStatus.进行中).ToList(); |
|
|
|
|
|
|
@ -522,7 +529,6 @@ namespace BBWY.Server.Business |
|
|
|
startResponse.DeleteGiftSkuList.Count() != 0) |
|
|
|
dbPromotionTask.GiftTemplatePutNewSku = string.Join(",", startResponse.DeleteGiftSkuList); |
|
|
|
|
|
|
|
|
|
|
|
fsql.Update<PromotionTask>(request.Id).Set(pt => pt.PromotionId, startResponse.JDPromotionId) |
|
|
|
.SetIf(!string.IsNullOrEmpty(dbPromotionTask.GiftTemplatePutNewSku), pt => pt.GiftTemplatePutNewSku, dbPromotionTask.GiftTemplatePutNewSku) |
|
|
|
.Set(pt => pt.StartTime, DateTime.Now) |
|
|
@ -531,10 +537,10 @@ namespace BBWY.Server.Business |
|
|
|
.ExecuteAffrows(); |
|
|
|
|
|
|
|
//开启延迟任务
|
|
|
|
Task.Factory.StartNew(() => StartPromotionDelayTask(request, startResponse, dbPromotionTask), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionDelayTaskScheduler); |
|
|
|
Task.Factory.StartNew(() => StartPromotionDelayTask(request, startResponse, dbPromotionTask, shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionDelayTaskScheduler); |
|
|
|
} |
|
|
|
|
|
|
|
private void StartPromotionDelayTask(StartPromotionTaskRequest request, StartPromotionTaskResponse startResponse, PromotionTask promotionTask) |
|
|
|
private void StartPromotionDelayTask(StartPromotionTaskRequest request, StartPromotionTaskResponse startResponse, PromotionTask promotionTask, ShopResponse shop) |
|
|
|
{ |
|
|
|
var host = GetPlatformRelayAPIHost(Enums.Platform.京东); |
|
|
|
|
|
|
@ -557,6 +563,7 @@ namespace BBWY.Server.Business |
|
|
|
fsql.Update<PromotionTask>(id).Set(pt => pt.Status, Enums.PromitionTaskStatus.已停止) |
|
|
|
.Set(pt => pt.ErrorMsg, errorMsg) |
|
|
|
.ExecuteAffrows(); |
|
|
|
Error(shop, $"评价助手-{shop.ShopName}", $"开始任务延迟任务-任务Id {request.Id}", new Exception(errorMsg)); |
|
|
|
}); |
|
|
|
if (httpApiResult.StatusCode != System.Net.HttpStatusCode.OK) |
|
|
|
{ |
|
|
@ -767,7 +774,7 @@ namespace BBWY.Server.Business |
|
|
|
IList<OrderSku> orderSkuList, |
|
|
|
IList<PromotionTaskSkuRecord> promotionTaskSkuRecordList) |
|
|
|
{ |
|
|
|
var loggerName = $"评价助手任务监控-{shop.ShopName}"; |
|
|
|
var loggerName = $"评价助手-{shop.ShopName}"; |
|
|
|
List<IUpdate<PromotionTask>> updatePromotionTaskList = new List<IUpdate<PromotionTask>>(); |
|
|
|
List<PromotionTaskSkuRecord> insertPromotionTaskSkuRecordList = new List<PromotionTaskSkuRecord>(); |
|
|
|
IList<long> jobDoneTaskIdList = new List<long>(); |
|
|
@ -789,7 +796,7 @@ namespace BBWY.Server.Business |
|
|
|
}); |
|
|
|
if (productResponseSkuList == null || productResponseSkuList.Count() == 0) |
|
|
|
{ |
|
|
|
LogMonitorError(shop, loggerName, $"{promotionTask.Id}-监控任务-查询主商品sku", "未查询到主商品sku信息"); |
|
|
|
Error(shop, loggerName, $"监控任务-查询主商品sku-任务Id {promotionTask.Id}", new Exception("未查询到主商品sku信息")); |
|
|
|
continue; |
|
|
|
} |
|
|
|
productSkuList.AddRange(productResponseSkuList.Select(p => p.Id)); |
|
|
@ -861,18 +868,14 @@ namespace BBWY.Server.Business |
|
|
|
|
|
|
|
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) |
|
|
|
{ |
|
|
|
LogMonitorError(shop, loggerName, $"{promotionTask.Id}-监控任务-暂停京东活动", httpResult.Content); |
|
|
|
Error(shop, loggerName, $"监控任务-暂停京东活动-任务Id {promotionTask.Id}", new Exception(httpResult.Content)); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
var response = JsonConvert.DeserializeObject<ApiResponse>(httpResult.Content); |
|
|
|
if (!response.Success) |
|
|
|
{ |
|
|
|
LogMonitorError(shop, loggerName, $"{promotionTask.Id}-监控任务-暂停京东活动", response.Msg); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
|
|
|
|
Error(shop, loggerName, $"监控任务-暂停京东活动-任务Id {promotionTask.Id}", new Exception(response.Msg)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -894,32 +897,58 @@ 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 nextPromotionTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == shopId &&
|
|
|
|
// pt.Status == Enums.PromitionTaskStatus.等待 &&
|
|
|
|
// jobDoneTaskIdList.Contains(pt.PreTaskId.Value)).ToList();
|
|
|
|
|
|
|
|
//if (nextPromotionTaskList.Count() > 0)
|
|
|
|
//{
|
|
|
|
// foreach (var task in nextPromotionTaskList)
|
|
|
|
// {
|
|
|
|
var childTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == shopId && |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
} |
|
|
|
|
|
|
|
private void AutoStart(long taskId, string appKey, string appSecret, string appToken) |
|
|
|
private void AutoStart(long taskId, ShopResponse shop) |
|
|
|
{ |
|
|
|
|
|
|
|
var loggerName = $"评价助手-{shop.ShopName}"; |
|
|
|
try |
|
|
|
{ |
|
|
|
StartPromotionTask(new StartPromotionTaskRequest() |
|
|
|
{ |
|
|
|
Id = taskId, |
|
|
|
AppKey = shop.AppKey2, |
|
|
|
AppSecret = shop.AppSecret2, |
|
|
|
AppToken = shop.AppToken2, |
|
|
|
Platform = Enums.Platform.京东 |
|
|
|
}, shop); |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
Error(shop, loggerName, $"AutoStart 任务Id {taskId}", ex); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void LogMonitorError(ShopResponse shop, string loggerName, string step, string error) |
|
|
|
private void Error(ShopResponse shop, string loggerName, string message, Exception ex) |
|
|
|
{ |
|
|
|
nLogManager.GetLogger(loggerName).Error($"{step},{error}"); |
|
|
|
nLogManager.GetLogger(loggerName).Error(ex, message); |
|
|
|
|
|
|
|
//send dingding
|
|
|
|
|
|
|
|