|
|
@ -12,6 +12,7 @@ using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Net.Http; |
|
|
|
using System.Text; |
|
|
|
using System.Threading; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Yitter.IdGenerator; |
|
|
@ -262,6 +263,7 @@ namespace BBWY.Server.Business |
|
|
|
{ |
|
|
|
var list = fsql.Select<PromotionTask>().As("pt") |
|
|
|
.Where(pt => pt.ShopId == request.ShopId) |
|
|
|
.Where(pt => pt.IsEnabled == true) |
|
|
|
.OrderBy(pt => SqlExt.Case().When(pt.Status == Enums.PromitionTaskStatus.进行中, 0) |
|
|
|
.When(pt.Status == Enums.PromitionTaskStatus.等待, 1) |
|
|
|
.When(pt.Status == Enums.PromitionTaskStatus.已完成, 2) |
|
|
@ -301,6 +303,7 @@ namespace BBWY.Server.Business |
|
|
|
var list = fsql.Select<PromotionTask>().As("pt") |
|
|
|
.Where(pt => pt.ShopId == shopId) |
|
|
|
.Where(pt => preTaskStateList.Contains(pt.Status.Value)) |
|
|
|
.Where(pt => pt.IsEnabled == true) |
|
|
|
.OrderBy(pt => SqlExt.Case().When(pt.Status == Enums.PromitionTaskStatus.进行中, 0) |
|
|
|
.When(pt.Status == Enums.PromitionTaskStatus.等待, 1) |
|
|
|
.When(pt.Status == Enums.PromitionTaskStatus.已完成, 2) |
|
|
@ -505,7 +508,9 @@ namespace BBWY.Server.Business |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var runingTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == dbPromotionTask.ShopId && pt.Status == Enums.PromitionTaskStatus.进行中).ToList(); |
|
|
|
var runingTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == dbPromotionTask.ShopId && |
|
|
|
pt.Status == Enums.PromitionTaskStatus.进行中 && |
|
|
|
pt.IsEnabled == true).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
if (dbPromotionTask.MotherTemplateId != null && dbPromotionTask.MotherTemplateId != 0) |
|
|
@ -639,11 +644,12 @@ namespace BBWY.Server.Business |
|
|
|
.Set(pt => pt.Status, Enums.PromitionTaskStatus.进行中) |
|
|
|
.ExecuteAffrows(); |
|
|
|
|
|
|
|
joinSkuCount = joinSkuNoGiftList.Distinct().Count(); |
|
|
|
Task.Factory.StartNew(() => StartPromotionDelayTask(request, startResponse, dbPromotionTask, shop, joinSkuCount), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionDelayTaskScheduler); |
|
|
|
//joinSkuCount = joinSkuNoGiftList.Distinct().Count();
|
|
|
|
joinSkuNoGiftList = joinSkuNoGiftList.Distinct().ToList(); |
|
|
|
Task.Factory.StartNew(() => StartPromotionDelayTask(request, startResponse, dbPromotionTask, shop, joinSkuNoGiftList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.JDPromotionDelayTaskScheduler); |
|
|
|
} |
|
|
|
|
|
|
|
private void StartPromotionDelayTask(StartPromotionTaskRequest request, StartPromotionTaskResponse startResponse, PromotionTask promotionTask, ShopResponse shop, int joinSkuCount) |
|
|
|
private void StartPromotionDelayTask(StartPromotionTaskRequest request, StartPromotionTaskResponse startResponse, PromotionTask promotionTask, ShopResponse shop, List<string> joinSkuList) |
|
|
|
{ |
|
|
|
var host = GetPlatformRelayAPIHost(Enums.Platform.京东); |
|
|
|
|
|
|
@ -660,7 +666,8 @@ namespace BBWY.Server.Business |
|
|
|
HaveGiftTemplate = promotionTask.GiftTemplateId != null && promotionTask.GiftTemplateId != 0, |
|
|
|
DeleteGiftSkuList = startResponse.DeleteGiftSkuList, |
|
|
|
ActivityName = promotionTask.ActivityName, |
|
|
|
JoinSkuCount = joinSkuCount, |
|
|
|
JoinSkuCount = joinSkuList.Count(), |
|
|
|
JoinSkuList = joinSkuList, |
|
|
|
PJZSDingDingKey = shop.PJZSDingDingKey, |
|
|
|
PJZSDingDingWebHook = shop.PJZSDingDingWebHook |
|
|
|
}, GetYunDingRequestHeader(), HttpMethod.Post, timeOutSeconds: 500); |
|
|
@ -692,8 +699,16 @@ namespace BBWY.Server.Business |
|
|
|
public void DeletePromotionTaskAndJDTask(DeletePromotionTaskRequest request) |
|
|
|
{ |
|
|
|
var dbPromotionTask = fsql.Select<PromotionTask>(request.TaskId).ToOne(); |
|
|
|
if (dbPromotionTask.Status != Enums.PromitionTaskStatus.等待) |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
//fsql.Delete<PromotionTask>(request.TaskId).ExecuteAffrows();
|
|
|
|
fsql.Update<PromotionTask>(request.TaskId).Set(p => p.IsEnabled, false).ExecuteAffrows(); |
|
|
|
//fsql.Delete<PromotionTaskSkuRecord>().Where(psr => psr.PromotionTaskId == request.TaskId).ExecuteAffrows();
|
|
|
|
}); |
|
|
|
|
|
|
|
//if (dbPromotionTask.Status != Enums.PromitionTaskStatus.等待)
|
|
|
|
//{
|
|
|
|
var httpResult = restApiService.SendRequest(GetPlatformRelayAPIHost(Enums.Platform.京东), |
|
|
|
"api/platformsdk/DeleteJDPromotionTask", |
|
|
|
new DeleteJDPromotionTaskRequest() |
|
|
@ -707,17 +722,11 @@ namespace BBWY.Server.Business |
|
|
|
GetYunDingRequestHeader(), |
|
|
|
HttpMethod.Post); |
|
|
|
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) |
|
|
|
throw new BusinessException(httpResult.Content); |
|
|
|
throw new BusinessException($"【{dbPromotionTask.ActivityName}】评价助手活动删除成功,JD活动删除失败,请手动到JD后台删除,并通知技术员分析失败原因,{httpResult.Content}"); |
|
|
|
var response = JsonConvert.DeserializeObject<ApiResponse>(httpResult.Content); |
|
|
|
if (!response.Success) |
|
|
|
throw new BusinessException(response.Msg); |
|
|
|
} |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Delete<PromotionTask>(request.TaskId).ExecuteAffrows(); |
|
|
|
fsql.Delete<PromotionTaskSkuRecord>().Where(psr => psr.PromotionTaskId == request.TaskId).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
throw new BusinessException($"【{dbPromotionTask.ActivityName}】评价助手活动删除成功,JD活动删除失败,请手动到JD后台删除,并通知技术员分析失败原因,{response.Msg}"); |
|
|
|
//}
|
|
|
|
} |
|
|
|
|
|
|
|
public void DeletePromotionTask(long pjzsTaskId) |
|
|
@ -832,7 +841,7 @@ namespace BBWY.Server.Business |
|
|
|
|
|
|
|
//开始下一轮开始任务
|
|
|
|
var nextPromotionTaskList = fsql.Select<PromotionTask>().WhereIf(shopId != null, pt => pt.ShopId == shopId) |
|
|
|
.Where(pt => pt.Status == Enums.PromitionTaskStatus.等待 && pt.PreTaskId == -1) |
|
|
|
.Where(pt => pt.Status == Enums.PromitionTaskStatus.等待 && pt.PreTaskId == -1 && pt.IsEnabled == true) |
|
|
|
.ToList(pt => new { Id = pt.Id, ShopId = pt.ShopId, TaskName = pt.ActivityName }); |
|
|
|
if (nextPromotionTaskList.Count() > 0) |
|
|
|
{ |
|
|
@ -848,6 +857,7 @@ namespace BBWY.Server.Business |
|
|
|
|
|
|
|
//查询正在进行的任务
|
|
|
|
var runningTaskList = fsql.Select<PromotionTask>() |
|
|
|
.Where(pt => pt.IsEnabled == true) |
|
|
|
.WhereIf(shopId != null, pt => pt.ShopId == shopId) |
|
|
|
.WhereIf(taskId != null, pt => pt.Id == taskId) |
|
|
|
.WhereIf(taskId == null, pt => pt.Status == Enums.PromitionTaskStatus.进行中).ToList(); |
|
|
@ -1029,6 +1039,30 @@ 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}"); |
|
|
|
} |
|
|
|
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}"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
#endregion
|
|
|
|
} |
|
|
@ -1069,6 +1103,7 @@ namespace BBWY.Server.Business |
|
|
|
{ |
|
|
|
var childTaskList = fsql.Select<PromotionTask>().Where(pt => pt.ShopId == shopId && |
|
|
|
pt.Status == Enums.PromitionTaskStatus.等待 && |
|
|
|
pt.IsEnabled == true && |
|
|
|
jobDoneTaskIdList.Contains(pt.PreTaskId.Value)) |
|
|
|
.ToList(pt => new { Id = pt.Id, ShopId = pt.ShopId, TaskName = pt.ActivityName }); |
|
|
|
if (childTaskList.Count() > 0) |
|
|
|