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

67
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<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)

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

@ -1402,13 +1402,17 @@ namespace BBWY.Server.Business
#region 检查奶妈sku是否完全生效
var lastQueryJoinCount = 0;
List<string> 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<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)
{
isJoinCompleted = true;
@ -1421,8 +1425,12 @@ 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());

7
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<OrderTotalInfo>(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();

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

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

Loading…
Cancel
Save