|
|
@ -5,6 +5,8 @@ using BBWY.Server.Model; |
|
|
|
using BBWY.Server.Model.Db; |
|
|
|
using BBWY.Server.Model.Dto; |
|
|
|
using FreeSql; |
|
|
|
using Jd.Api.Domain; |
|
|
|
|
|
|
|
//using Jd.Api.Domain;
|
|
|
|
using Microsoft.Extensions.Options; |
|
|
|
using Newtonsoft.Json; |
|
|
@ -27,7 +29,8 @@ namespace BBWY.Server.Business |
|
|
|
private IIdGenerator idGenerator; |
|
|
|
private TaskSchedulerManager taskSchedulerManager; |
|
|
|
private VenderBusiness venderBusiness; |
|
|
|
private DingDingBusiness dingDingBusiness; |
|
|
|
//private DingDingBusiness dingDingBusiness;
|
|
|
|
private QYMessageCenterBusiness qyMessageCenterBusiness; |
|
|
|
private NLogManager nLogManager; |
|
|
|
private List<Enums.OrderState> validOrderStateList; |
|
|
|
private List<Enums.PromitionTaskStatus> preTaskStateList; |
|
|
@ -36,14 +39,15 @@ namespace BBWY.Server.Business |
|
|
|
|
|
|
|
private char[] spliter; |
|
|
|
|
|
|
|
public EvaluationAssistantBusiness(RestApiService restApiService, IOptions<GlobalConfig> options, YunDingBusiness yunDingBusiness, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, DingDingBusiness dingDingBusiness, NLogManager nLogManager, ProductBusiness productBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager) : base(restApiService, options, yunDingBusiness) |
|
|
|
public EvaluationAssistantBusiness(RestApiService restApiService, IOptions<GlobalConfig> options, YunDingBusiness yunDingBusiness, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, QYMessageCenterBusiness qyMessageCenterBusiness, NLogManager nLogManager, ProductBusiness productBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager) : base(restApiService, options, yunDingBusiness) |
|
|
|
{ |
|
|
|
|
|
|
|
this.fsql = fsql; |
|
|
|
this.idGenerator = idGenerator; |
|
|
|
this.taskSchedulerManager = taskSchedulerManager; |
|
|
|
this.venderBusiness = venderBusiness; |
|
|
|
this.dingDingBusiness = dingDingBusiness; |
|
|
|
//this.dingDingBusiness = dingDingBusiness;
|
|
|
|
this.qyMessageCenterBusiness = qyMessageCenterBusiness; |
|
|
|
this.nLogManager = nLogManager; |
|
|
|
this.productBusiness = productBusiness; |
|
|
|
this.freeSqlMultiDBManager = freeSqlMultiDBManager; |
|
|
@ -504,7 +508,8 @@ namespace BBWY.Server.Business |
|
|
|
/// <param name="request"></param>
|
|
|
|
/// <param name="shop"></param>
|
|
|
|
/// <exception cref="BusinessException"></exception>
|
|
|
|
public void StartPromotionTask(StartPromotionTaskRequest request, ShopResponse shop = null) |
|
|
|
/// <exception cref="Exception"></exception>
|
|
|
|
public PromotionTask StartPromotionTask(StartPromotionTaskRequest request, ShopResponse shop = null) |
|
|
|
{ |
|
|
|
var dbPromotionTask = fsql.Select<PromotionTask>(request.Id).ToOne(); |
|
|
|
|
|
|
@ -657,13 +662,6 @@ namespace BBWY.Server.Business |
|
|
|
startResponse.DeleteGiftSkuList.Count() != 0) |
|
|
|
dbPromotionTask.GiftTemplatePutNewSku = string.Join(",", startResponse.DeleteGiftSkuList); |
|
|
|
|
|
|
|
//try
|
|
|
|
//{
|
|
|
|
// if (!string.IsNullOrEmpty(shop.PJZSDingDingKey) && !string.IsNullOrEmpty(shop.PJZSDingDingWebHook))
|
|
|
|
// dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{dbPromotionTask.ActivityName}]已开始,请及时查看任务是否正常进行");
|
|
|
|
//}
|
|
|
|
//catch { }
|
|
|
|
|
|
|
|
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) |
|
|
@ -674,6 +672,7 @@ namespace BBWY.Server.Business |
|
|
|
//joinSkuCount = joinSkuNoGiftList.Distinct().Count();
|
|
|
|
joinSkuNoGiftList = joinSkuNoGiftList.Distinct().ToList(); |
|
|
|
Task.Factory.StartNew(() => StartPromotionDelayTask(request, startResponse, dbPromotionTask, shop, joinSkuNoGiftList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionDelayTaskScheduler); |
|
|
|
return dbPromotionTask; |
|
|
|
} |
|
|
|
|
|
|
|
private void StartPromotionDelayTask(StartPromotionTaskRequest request, StartPromotionTaskResponse startResponse, PromotionTask promotionTask, ShopResponse shop, List<string> joinSkuList) |
|
|
@ -728,14 +727,20 @@ namespace BBWY.Server.Business |
|
|
|
pt.PreTaskId == -1)).Any(); |
|
|
|
if (!haveNextTask) |
|
|
|
{ |
|
|
|
if (!string.IsNullOrEmpty(shop.PJZSDingDingKey) && !string.IsNullOrEmpty(shop.PJZSDingDingWebHook)) |
|
|
|
//if (!string.IsNullOrEmpty(shop.PJZSDingDingKey) && !string.IsNullOrEmpty(shop.PJZSDingDingWebHook))
|
|
|
|
//{
|
|
|
|
// try
|
|
|
|
// {
|
|
|
|
// dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"评价助手\n店铺:{shop.ShopName}\n任务列表无后续任务,为避免空档请及时设置后续任务");
|
|
|
|
// }
|
|
|
|
// catch { }
|
|
|
|
//}
|
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"评价助手\n店铺:{shop.ShopName}\n任务列表无后续任务,为避免空档请及时设置后续任务"); |
|
|
|
} |
|
|
|
catch { } |
|
|
|
qyMessageCenterBusiness.SendMessage(shop.TeamId, shop.TeamId, shop.ShopId, "PJZS", shop.ShopName, "任务列表无后续任务,为避免空档请及时设置后续任务", "PZJS API", string.Empty); |
|
|
|
} |
|
|
|
catch { } |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
@ -1096,26 +1101,19 @@ namespace BBWY.Server.Business |
|
|
|
}, |
|
|
|
GetYunDingRequestHeader(), |
|
|
|
HttpMethod.Post); |
|
|
|
|
|
|
|
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) |
|
|
|
{ |
|
|
|
var msgBuilder = new StringBuilder(); |
|
|
|
msgBuilder.AppendLine($"店铺名称:{shop.ShopName}"); |
|
|
|
msgBuilder.AppendLine($"活动名称:{promotionTask.ActivityName}"); |
|
|
|
msgBuilder.AppendLine($"错误原因:{httpResult.Content}"); |
|
|
|
msgBuilder.AppendLine("删除活动失败,请手动到后台删除,并通知技术员分析失败原因"); |
|
|
|
dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{promotionTask.ActivityName}]删除任务失败,{httpResult.Content}"); |
|
|
|
//dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{promotionTask.ActivityName}]删除任务失败,{httpResult.Content}");
|
|
|
|
qyMessageCenterBusiness.SendMessage(shop.TeamId, shop.TeamId, shop.ShopId, "PZJS", shop.ShopName, $"任务[{promotionTask.ActivityName}]删除任务失败,{httpResult.Content}", "PJZS API", string.Empty); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
var res = JsonConvert.DeserializeObject<ApiResponse>(httpResult.Content); |
|
|
|
if (!res.Success) |
|
|
|
{ |
|
|
|
var msgBuilder = new StringBuilder(); |
|
|
|
msgBuilder.AppendLine($"店铺名称:{shop.ShopName}"); |
|
|
|
msgBuilder.AppendLine($"活动名称:{promotionTask.ActivityName}"); |
|
|
|
msgBuilder.AppendLine($"错误原因:{httpResult.Content}"); |
|
|
|
msgBuilder.AppendLine("删除活动失败,请手动到后台删除,并通知技术员分析失败原因"); |
|
|
|
dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{promotionTask.ActivityName}]删除任务失败,{res.Msg}"); |
|
|
|
//dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{promotionTask.ActivityName}]删除任务失败,{res.Msg}");
|
|
|
|
qyMessageCenterBusiness.SendMessage(shop.TeamId, shop.TeamId, shop.ShopId, "PZJS", shop.ShopName, $"任务[{promotionTask.ActivityName}]删除任务失败,{res.Msg}", "PJZS API", string.Empty); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -1196,7 +1194,8 @@ namespace BBWY.Server.Business |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{jobDoneTask.ActivityName}]已结束"); |
|
|
|
//dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"任务[{jobDoneTask.ActivityName}]已结束");
|
|
|
|
qyMessageCenterBusiness.SendMessage(shop.TeamId, shop.TeamId, shop.ShopId, "PZJS", shop.ShopName, $"任务[{jobDoneTask.ActivityName}]已结束", "PJZS API", string.Empty); |
|
|
|
} |
|
|
|
catch { } |
|
|
|
} |
|
|
@ -1222,7 +1221,9 @@ namespace BBWY.Server.Business |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"评价助手\n店铺:{shop.ShopName}\n任务全部执行完成,请及时设置后续任务!!"); |
|
|
|
//dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"评价助手\n店铺:{shop.ShopName}\n任务全部执行完成,请及时设置后续任务!!");
|
|
|
|
|
|
|
|
qyMessageCenterBusiness.SendMessage(shop.TeamId, shop.TeamId, shop.ShopId, "PZJS", shop.ShopName, "任务全部执行完成,请及时设置后续任务", "PJZS API", string.Empty); |
|
|
|
} |
|
|
|
catch { } |
|
|
|
} |
|
|
@ -1256,9 +1257,10 @@ namespace BBWY.Server.Business |
|
|
|
private void AutoStart(long taskId, string taskName, ShopResponse shop) |
|
|
|
{ |
|
|
|
var loggerName = $"评价助手-{shop.ShopName}"; |
|
|
|
PromotionTask task = null; |
|
|
|
try |
|
|
|
{ |
|
|
|
StartPromotionTask(new StartPromotionTaskRequest() |
|
|
|
task = StartPromotionTask(new StartPromotionTaskRequest() |
|
|
|
{ |
|
|
|
Id = taskId, |
|
|
|
AppKey = shop.AppKey2, |
|
|
@ -1269,7 +1271,21 @@ namespace BBWY.Server.Business |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
Error(shop, loggerName, $"AutoStart 任务[{taskName}]", ex); |
|
|
|
if (task != null) |
|
|
|
{ |
|
|
|
nLogManager.GetLogger(loggerName).Error(ex, $"AutoStart 任务[{task.ActivityName}]"); |
|
|
|
qyMessageCenterBusiness.SendMessage(shop.TeamId, shop.TeamId, shop.ShopId, "PJZS", shop.ShopName, new |
|
|
|
{ |
|
|
|
task.ActivityName, |
|
|
|
task.MainProductSpu, |
|
|
|
task.SpuLogo, |
|
|
|
ErrorMsg = ex.Message |
|
|
|
}, "SHANGJIASHIBAI", "PJZS API", string.Empty); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Error(shop, loggerName, $"AutoStart 任务[{taskName}]", ex); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -1277,9 +1293,15 @@ namespace BBWY.Server.Business |
|
|
|
{ |
|
|
|
nLogManager.GetLogger(loggerName).Error(ex, message); |
|
|
|
|
|
|
|
//send dingding
|
|
|
|
if (!string.IsNullOrEmpty(shop.PJZSDingDingKey) && !string.IsNullOrEmpty(shop.PJZSDingDingWebHook)) |
|
|
|
dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"评价助手\n{shop.ShopName}\n{message}\n{ex.Message}"); |
|
|
|
////send dingding
|
|
|
|
//if (!string.IsNullOrEmpty(shop.PJZSDingDingKey) && !string.IsNullOrEmpty(shop.PJZSDingDingWebHook))
|
|
|
|
// dingDingBusiness.SendDingDingBotMessage(shop.PJZSDingDingKey, shop.PJZSDingDingWebHook, $"评价助手\n{shop.ShopName}\n{message}\n{ex.Message}");
|
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
qyMessageCenterBusiness.SendMessage(shop.TeamId, shop.TeamId, shop.ShopId, "PJZS", shop.ShopName, $"{message} {ex.Message}", "PJZS API", string.Empty); |
|
|
|
} |
|
|
|
catch { } |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
|