Browse Source

pjzs修改

AddValidOverTime
shanji 2 years ago
parent
commit
615b5ed85f
  1. 4
      BBWY.Server.Business/DingDingBusiness.cs
  2. 67
      BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
  3. 22
      BBWY.Server.Business/PlatformSDK/JDBusiness.cs
  4. 7
      BBWY.Server.Business/TestBusiness.cs
  5. 5
      BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs

4
BBWY.Server.Business/DingDingBusiness.cs

@ -20,6 +20,8 @@ namespace BBWY.Server.Business
} }
public void SendDingDingBotMessage(string secret, string webHook, string content) public void SendDingDingBotMessage(string secret, string webHook, string content)
{
try
{ {
var timestamp = DateTime.Now.DateTimeToStamp(); var timestamp = DateTime.Now.DateTimeToStamp();
var stringToSign = timestamp + "\n" + secret; var stringToSign = timestamp + "\n" + secret;
@ -36,6 +38,8 @@ namespace BBWY.Server.Business
if (result.StatusCode != System.Net.HttpStatusCode.OK) if (result.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"发送钉钉机器人消息失败 {result.Content}"); throw new Exception($"发送钉钉机器人消息失败 {result.Content}");
} }
catch { }
}
/// <summary> /// <summary>
/// Base64 SHA256 /// Base64 SHA256

67
BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs

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

22
BBWY.Server.Business/PlatformSDK/JDBusiness.cs

@ -1402,13 +1402,17 @@ namespace BBWY.Server.Business
#region 检查奶妈sku是否完全生效 #region 检查奶妈sku是否完全生效
var lastQueryJoinCount = 0; var lastQueryJoinCount = 0;
List<string> noJoinSkuList = null;
var isJoinCompleted = false; var isJoinCompleted = false;
{ {
var repeatCount = 0; var repeatCount = 0;
while (true) while (true)
{ {
var promotionTaskSkuList = GetPromotionTaskSku(request.AppKey, request.AppSecret, request.AppToken, request.JDPromotionId); var promotionTaskSkuList = GetPromotionTaskSku(request.AppKey, request.AppSecret, request.AppToken, request.JDPromotionId);
var currentQueryJoinCount = promotionTaskSkuList.Count(s => s.Value<int>("bind_type") == 1 && s.Value<int>("sku_status") == 1); //var currentQueryJoinCount = promotionTaskSkuList.Count(s => s.Value<int>("bind_type") == 1 && s.Value<int>("sku_status") == 1);
var currentQueryJoinList = promotionTaskSkuList.Where(s => s.Value<int>("bind_type") == 1 && s.Value<int>("sku_status") == 1)
.Select(s => s.Value<string>("sku_id")).ToList();
var currentQueryJoinCount = currentQueryJoinList.Count();
if (currentQueryJoinCount == request.JoinSkuCount) if (currentQueryJoinCount == request.JoinSkuCount)
{ {
isJoinCompleted = true; isJoinCompleted = true;
@ -1421,8 +1425,12 @@ namespace BBWY.Server.Business
{ {
repeatCount++; repeatCount++;
if (repeatCount > 2) if (repeatCount > 2)
{
noJoinSkuList = request.JoinSkuList.Except(currentQueryJoinList).ToList();
break; break;
} }
}
lastQueryJoinCount = currentQueryJoinCount; lastQueryJoinCount = currentQueryJoinCount;
Thread.Sleep(30000); Thread.Sleep(30000);
} }
@ -1440,9 +1448,15 @@ namespace BBWY.Server.Business
ddMsg.AppendLine($"任务奶妈数:{request.JoinSkuCount}"); ddMsg.AppendLine($"任务奶妈数:{request.JoinSkuCount}");
ddMsg.AppendLine($"参与奶妈数:{lastQueryJoinCount}"); ddMsg.AppendLine($"参与奶妈数:{lastQueryJoinCount}");
ddMsg.AppendLine("参与任务的奶妈数异常请检查"); ddMsg.AppendLine("参与任务的奶妈数异常请检查");
//ddMsg.AppendLine("以上SKU可能已下架或同时参与多个赠品促销活动"); if (noJoinSkuList != null && noJoinSkuList.Count > 0)
//ddMsg.AppendLine("1.如已下架请将对应的SKU移除奶妈列表"); {
//ddMsg.AppendLine("2.系统会自动剔除同时参与多个赠品促销的SKU,请检查以上SKU是否在失效的促销活动,请及时删除,已暂停或已停止的促销活动"); 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)) if (!string.IsNullOrEmpty(request.PJZSDingDingKey) && !string.IsNullOrEmpty(request.PJZSDingDingWebHook))
dingDingBusiness.SendDingDingBotMessage(request.PJZSDingDingKey, request.PJZSDingDingWebHook, ddMsg.ToString()); dingDingBusiness.SendDingDingBotMessage(request.PJZSDingDingKey, request.PJZSDingDingWebHook, ddMsg.ToString());

7
BBWY.Server.Business/TestBusiness.cs

@ -192,6 +192,9 @@ namespace BBWY.Server.Business
.OrderByDescending(o => o.StartTime) .OrderByDescending(o => o.StartTime)
.ToList(o => o.Id); .ToList(o => o.Id);
if (orderIdList.Count() == 0)
return;
fsql.Transaction(() => fsql.Transaction(() =>
{ {
fsql.Delete<OrderTotalInfo>(orderIdList).ExecuteAffrows(); fsql.Delete<OrderTotalInfo>(orderIdList).ExecuteAffrows();
@ -204,7 +207,7 @@ namespace BBWY.Server.Business
{ {
var orderId = orderIdList[i]; var orderId = orderIdList[i];
orderSyncBusiness.SyncOrder(shop, orderId); 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) // foreach (var orderId in orderIdList)
// { // {
@ -222,7 +225,7 @@ namespace BBWY.Server.Business
foreach (var order in orderList) foreach (var order in orderList)
{ {
orderIndex++; 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(); var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList();

5
BBWY.Server.Model/Dto/Request/PromotionTask/StartPromotionTaskRequest.cs

@ -100,6 +100,11 @@ namespace BBWY.Server.Model.Dto
/// </summary> /// </summary>
public int JoinSkuCount { get; set; } public int JoinSkuCount { get; set; }
/// <summary>
/// 参与活动的SKU列表 (不含赠品)
/// </summary>
public List<string> JoinSkuList { get; set; }
/// <summary> /// <summary>
/// 活动名称 /// 活动名称
/// </summary> /// </summary>

Loading…
Cancel
Save