From 3a7bfafc7e34f2616dfb8e9b13780481ffbae1cb Mon Sep 17 00:00:00 2001
From: shanji <18996038927@163.com>
Date: Mon, 6 Feb 2023 15:51:33 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E5=A4=B1=E8=B4=A5=E6=81=A2?=
=?UTF-8?q?=E5=A4=8D=E5=AE=8C=E6=95=B4=E6=A0=87=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EvaluationAssistantBusiness.cs | 83 +++++++++++++------
.../PlatformSDK/JDBusiness.cs | 4 +-
2 files changed, 59 insertions(+), 28 deletions(-)
diff --git a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
index 342d88af..0c35f6cf 100644
--- a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
+++ b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
@@ -446,7 +446,9 @@ namespace BBWY.Server.Business
/// 开始任务
///
///
- public void StartPromotionTask(StartPromotionTaskRequest request)
+ ///
+ ///
+ public void StartPromotionTask(StartPromotionTaskRequest request, ShopResponse shop = null)
{
var dbPromotionTask = fsql.Select(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 giftTemplateSkuList = null; //赠品模板sku
var motherTemplateSku = string.Empty; //奶妈模板的sku
@@ -469,7 +474,9 @@ namespace BBWY.Server.Business
Title = gs.Title
});
if (giftTemplateSkuList == null || giftTemplateSkuList.Count() == 0)
+ {
throw new BusinessException("赠品模板不存在");
+ }
}
var runingTaskList = fsql.Select().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(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(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 orderSkuList,
IList promotionTaskSkuRecordList)
{
- var loggerName = $"评价助手任务监控-{shop.ShopName}";
+ var loggerName = $"评价助手-{shop.ShopName}";
List> updatePromotionTaskList = new List>();
List insertPromotionTaskSkuRecordList = new List();
IList jobDoneTaskIdList = new List();
@@ -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(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();
+ var noPrePromotionTaskList = fsql.Select().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().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().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
diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs
index 5951063e..074e7e1f 100644
--- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs
+++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs
@@ -1018,11 +1018,13 @@ namespace BBWY.Server.Business
res.Json = JObject.Parse(res.Body);
if (res.IsError)
{
+ RollBackWhenStartPromotionError(request.AppKey, request.AppSecret, request.AppToken, null, request.MainProductSpu, request.FullTitle, brandName, false);
+
throw new BusinessException($"上架sku失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}");
/*{"error_response":{"code":"501","en_desc":"com.jd.bk.saf.exception.SafJosException:京东价超出该类目允许范围:12.15-39437元!#821c1c3b382f476abeb21f1f515274c7(Solution reference: https://jos.jd.com/commondoc?listId=171)","zh_desc":"调用参数错误(解决方案参考: https://jos.jd.com/commondoc?listId=171)"}}*/
}
-
+
var newSkuList = res.Json["jingdong_sku_write_updateSkus_responce"]["skuList"].ToList().Select(x => x.Value("skuId")).ToList();
giftSkuIdList.AddRange(newSkuList);
}