From 615b5ed85fb798849fe926b6758dd363a6287580 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Thu, 16 Nov 2023 01:09:50 +0800
Subject: [PATCH] =?UTF-8?q?pjzs=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
BBWY.Server.Business/DingDingBusiness.cs | 28 +++---
.../EvaluationAssistantBusiness.cs | 91 +++++++++++++------
.../PlatformSDK/JDBusiness.cs | 22 ++++-
BBWY.Server.Business/TestBusiness.cs | 7 +-
.../StartPromotionTaskRequest.cs | 5 +
5 files changed, 107 insertions(+), 46 deletions(-)
diff --git a/BBWY.Server.Business/DingDingBusiness.cs b/BBWY.Server.Business/DingDingBusiness.cs
index a8e6da12..cee0a9a8 100644
--- a/BBWY.Server.Business/DingDingBusiness.cs
+++ b/BBWY.Server.Business/DingDingBusiness.cs
@@ -21,20 +21,24 @@ namespace BBWY.Server.Business
public void SendDingDingBotMessage(string secret, string webHook, string content)
{
- var timestamp = DateTime.Now.DateTimeToStamp();
- var stringToSign = timestamp + "\n" + secret;
- var sign = EncryptWithSHA256(stringToSign, secret);
- var url = $"{webHook}×tamp={timestamp}&sign={sign}";
- var result = restApiService.SendRequest(url, string.Empty, new
+ try
{
- msgtype = "text",
- text = new
+ var timestamp = DateTime.Now.DateTimeToStamp();
+ var stringToSign = timestamp + "\n" + secret;
+ var sign = EncryptWithSHA256(stringToSign, secret);
+ var url = $"{webHook}×tamp={timestamp}&sign={sign}";
+ var result = restApiService.SendRequest(url, string.Empty, new
{
- content = content
- }
- }, null, HttpMethod.Post);
- if (result.StatusCode != System.Net.HttpStatusCode.OK)
- throw new Exception($"发送钉钉机器人消息失败 {result.Content}");
+ msgtype = "text",
+ text = new
+ {
+ content = content
+ }
+ }, null, HttpMethod.Post);
+ if (result.StatusCode != System.Net.HttpStatusCode.OK)
+ throw new Exception($"发送钉钉机器人消息失败 {result.Content}");
+ }
+ catch { }
}
///
diff --git a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
index ae6df7db..76c3321d 100644
--- a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
+++ b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
@@ -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().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().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().Where(pt => pt.ShopId == dbPromotionTask.ShopId && pt.Status == Enums.PromitionTaskStatus.进行中).ToList();
+ var runingTaskList = fsql.Select().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 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,32 +699,34 @@ namespace BBWY.Server.Business
public void DeletePromotionTaskAndJDTask(DeletePromotionTaskRequest request)
{
var dbPromotionTask = fsql.Select(request.TaskId).ToOne();
- if (dbPromotionTask.Status != Enums.PromitionTaskStatus.等待)
- {
- var httpResult = restApiService.SendRequest(GetPlatformRelayAPIHost(Enums.Platform.京东),
- "api/platformsdk/DeleteJDPromotionTask",
- new DeleteJDPromotionTaskRequest()
- {
- AppKey = request.AppKey,
- AppSecret = request.AppSecret,
- AppToken = request.AppToken,
- Platform = Enums.Platform.京东,
- PromotionId = dbPromotionTask.PromotionId.Value
- },
- GetYunDingRequestHeader(),
- HttpMethod.Post);
- if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
- throw new BusinessException(httpResult.Content);
- var response = JsonConvert.DeserializeObject(httpResult.Content);
- if (!response.Success)
- throw new BusinessException(response.Msg);
- }
fsql.Transaction(() =>
{
- fsql.Delete(request.TaskId).ExecuteAffrows();
- fsql.Delete().Where(psr => psr.PromotionTaskId == request.TaskId).ExecuteAffrows();
+ //fsql.Delete(request.TaskId).ExecuteAffrows();
+ fsql.Update(request.TaskId).Set(p => p.IsEnabled, false).ExecuteAffrows();
+ //fsql.Delete().Where(psr => psr.PromotionTaskId == request.TaskId).ExecuteAffrows();
});
+
+ //if (dbPromotionTask.Status != Enums.PromitionTaskStatus.等待)
+ //{
+ var httpResult = restApiService.SendRequest(GetPlatformRelayAPIHost(Enums.Platform.京东),
+ "api/platformsdk/DeleteJDPromotionTask",
+ new DeleteJDPromotionTaskRequest()
+ {
+ AppKey = request.AppKey,
+ AppSecret = request.AppSecret,
+ AppToken = request.AppToken,
+ Platform = Enums.Platform.京东,
+ PromotionId = dbPromotionTask.PromotionId.Value
+ },
+ GetYunDingRequestHeader(),
+ HttpMethod.Post);
+ if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
+ throw new BusinessException($"【{dbPromotionTask.ActivityName}】评价助手活动删除成功,JD活动删除失败,请手动到JD后台删除,并通知技术员分析失败原因,{httpResult.Content}");
+ var response = JsonConvert.DeserializeObject(httpResult.Content);
+ if (!response.Success)
+ 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().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()
+ .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(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().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)
diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs
index 923740e4..eab2da83 100644
--- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs
+++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs
@@ -1402,13 +1402,17 @@ namespace BBWY.Server.Business
#region 检查奶妈sku是否完全生效
var lastQueryJoinCount = 0;
+ List noJoinSkuList = null;
var isJoinCompleted = false;
{
var repeatCount = 0;
while (true)
{
var promotionTaskSkuList = GetPromotionTaskSku(request.AppKey, request.AppSecret, request.AppToken, request.JDPromotionId);
- var currentQueryJoinCount = promotionTaskSkuList.Count(s => s.Value("bind_type") == 1 && s.Value("sku_status") == 1);
+ //var currentQueryJoinCount = promotionTaskSkuList.Count(s => s.Value("bind_type") == 1 && s.Value("sku_status") == 1);
+ var currentQueryJoinList = promotionTaskSkuList.Where(s => s.Value("bind_type") == 1 && s.Value("sku_status") == 1)
+ .Select(s => s.Value("sku_id")).ToList();
+ var currentQueryJoinCount = currentQueryJoinList.Count();
if (currentQueryJoinCount == request.JoinSkuCount)
{
isJoinCompleted = true;
@@ -1421,7 +1425,11 @@ namespace BBWY.Server.Business
{
repeatCount++;
if (repeatCount > 2)
+ {
+ noJoinSkuList = request.JoinSkuList.Except(currentQueryJoinList).ToList();
break;
+ }
+
}
lastQueryJoinCount = currentQueryJoinCount;
Thread.Sleep(30000);
@@ -1440,9 +1448,15 @@ namespace BBWY.Server.Business
ddMsg.AppendLine($"任务奶妈数:{request.JoinSkuCount}");
ddMsg.AppendLine($"参与奶妈数:{lastQueryJoinCount}");
ddMsg.AppendLine("参与任务的奶妈数异常请检查");
- //ddMsg.AppendLine("以上SKU可能已下架或同时参与多个赠品促销活动");
- //ddMsg.AppendLine("1.如已下架请将对应的SKU移除奶妈列表");
- //ddMsg.AppendLine("2.系统会自动剔除同时参与多个赠品促销的SKU,请检查以上SKU是否在失效的促销活动,请及时删除,已暂停或已停止的促销活动");
+ if (noJoinSkuList != null && noJoinSkuList.Count > 0)
+ {
+ foreach (var noJoinSku in noJoinSkuList)
+ ddMsg.AppendLine(noJoinSku);
+ ddMsg.AppendLine("以上SKU可能已下架或同时参与多个赠品促销活动");
+ ddMsg.AppendLine("1.如已下架请将对应的SKU移除奶妈列表");
+ ddMsg.AppendLine("2.系统会自动剔除同时参与多个赠品促销的SKU,请检查以上SKU是否在失效的促销活动,请及时删除,已暂停或已停止的促销活动");
+ }
+
}
if (!string.IsNullOrEmpty(request.PJZSDingDingKey) && !string.IsNullOrEmpty(request.PJZSDingDingWebHook))
dingDingBusiness.SendDingDingBotMessage(request.PJZSDingDingKey, request.PJZSDingDingWebHook, ddMsg.ToString());
diff --git a/BBWY.Server.Business/TestBusiness.cs b/BBWY.Server.Business/TestBusiness.cs
index f48022af..72472c5a 100644
--- a/BBWY.Server.Business/TestBusiness.cs
+++ b/BBWY.Server.Business/TestBusiness.cs
@@ -192,6 +192,9 @@ namespace BBWY.Server.Business
.OrderByDescending(o => o.StartTime)
.ToList(o => o.Id);
+ if (orderIdList.Count() == 0)
+ return;
+
fsql.Transaction(() =>
{
fsql.Delete(orderIdList).ExecuteAffrows();
@@ -204,7 +207,7 @@ namespace BBWY.Server.Business
{
var orderId = orderIdList[i];
orderSyncBusiness.SyncOrder(shop, orderId);
- Console.WriteLine($"SyncOrder {shop.ShopName},orderProgress {i + 1}/{orderIdList.Count()}");
+ Console.WriteLine($"SyncOrder {shop.ShopName},SyncProgress {i + 1}/{orderIdList.Count()}");
}
// foreach (var orderId in orderIdList)
// {
@@ -222,7 +225,7 @@ namespace BBWY.Server.Business
foreach (var order in orderList)
{
orderIndex++;
- Console.WriteLine($"Calculation {shop.ShopName}, orderProgress {orderIndex}/{orderList.Count()}");
+ Console.WriteLine($"Calculation {shop.ShopName}, CalculationProgress {orderIndex}/{orderList.Count()}");
var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList();
diff --git a/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs b/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs
index 05281206..2287e654 100644
--- a/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs
+++ b/BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs
@@ -100,6 +100,11 @@ namespace BBWY.Server.Model.Dto
///
public int JoinSkuCount { get; set; }
+ ///
+ /// 参与活动的SKU列表 (不含赠品)
+ ///
+ public List JoinSkuList { get; set; }
+
///
/// 活动名称
///