From 3ee3a50af16733b52bdf574c222a9adb7e232b0d Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Sun, 5 Feb 2023 13:27:45 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=89=8D=E7=BD=AE=E4=BB=BB?=
=?UTF-8?q?=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EvaluationAssistantController.cs | 23 ++++++-
.../EvaluationAssistantBusiness.cs | 69 +++++++++++++++++--
.../PromotionTask/EditPreTaskRequest.cs | 15 ++++
3 files changed, 101 insertions(+), 6 deletions(-)
create mode 100644 BBWY.Server.Model/Dto/Request/PromotionTask/EditPreTaskRequest.cs
diff --git a/BBWY.Server.API/Controllers/EvaluationAssistantController.cs b/BBWY.Server.API/Controllers/EvaluationAssistantController.cs
index da6bfaa8..38f34006 100644
--- a/BBWY.Server.API/Controllers/EvaluationAssistantController.cs
+++ b/BBWY.Server.API/Controllers/EvaluationAssistantController.cs
@@ -58,7 +58,7 @@ namespace BBWY.Server.API.Controllers
}
///
- /// 获取活动列表
+ /// 获取任务列表
///
///
///
@@ -68,6 +68,27 @@ namespace BBWY.Server.API.Controllers
return evaluationAssistantBusiness.GetPromotionTaskList(request);
}
+ ///
+ /// 获取前置任务列表
+ ///
+ ///
+ ///
+ [HttpGet("{shopId}")]
+ public PromotionTaskResponse GetPrePromotionTaskList([FromRoute] long shopId)
+ {
+ return evaluationAssistantBusiness.GetPrePromotionTaskList(shopId);
+ }
+
+ ///
+ /// 设置前置任务
+ ///
+ ///
+ [HttpPost]
+ public void EditPreTask([FromBody] EditPreTaskRequest request)
+ {
+ evaluationAssistantBusiness.EditPreTask(request);
+ }
+
///
/// 修改活动排序
///
diff --git a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
index 8573f82b..fafc5d48 100644
--- a/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
+++ b/BBWY.Server.Business/EvaluationAssistant/EvaluationAssistantBusiness.cs
@@ -28,6 +28,7 @@ namespace BBWY.Server.Business
private List validOrderStateList;
private List preTaskStateList;
private ProductBusiness productBusiness;
+ private char[] spliter;
public EvaluationAssistantBusiness(RestApiService restApiService, IOptions options, YunDingBusiness yunDingBusiness, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, DingDingBusiness dingDingBusiness, NLogManager nLogManager, ProductBusiness productBusiness) : base(restApiService, options, yunDingBusiness)
{
@@ -52,6 +53,7 @@ namespace BBWY.Server.Business
Enums.PromitionTaskStatus.等待,
Enums.PromitionTaskStatus.进行中
};
+ spliter = new char[] { ',' };
}
#region 赠品模板
@@ -190,7 +192,7 @@ namespace BBWY.Server.Business
if (!spuResponse.Success)
throw new BusinessException(spuResponse.Msg) { Code = spuResponse.Code };
- var sort = fsql.Select().ToAggregate(p => p.Max(p.Key.Sort));
+ var sort = fsql.Select().Where(pt => pt.ShopId == request.ShopId).ToAggregate(p => p.Max(p.Key.Sort));
var promotionTask = new PromotionTask()
{
Id = idGenerator.NewLong(),
@@ -249,9 +251,15 @@ namespace BBWY.Server.Business
///
public PromotionTaskResponse GetPromotionTaskList(QueryPromotionTaskRequest request)
{
- var list = fsql.Select().Where(pt => pt.ShopId == request.ShopId)
+ var list = fsql.Select().As("pt")
+ .Where(pt => pt.ShopId == request.ShopId)
+ .OrderBy(pt => SqlExt.Case().When(pt.Status == Enums.PromitionTaskStatus.进行中, 0)
+ .When(pt.Status == Enums.PromitionTaskStatus.等待, 1)
+ .When(pt.Status == Enums.PromitionTaskStatus.已完成, 2)
+ .When(pt.Status == Enums.PromitionTaskStatus.已停止, 3)
+ .End())
+ //.OrderBy("case when pt.status=1 then 0 when pt.status=0 then 1 when pt.status=2 then 2 when pt.status=3 then 3 end asc")
.OrderByDescending(pt => pt.Sort)
- .OrderByDescending(pt => pt.UpdateSortTime)
.Page(request.PageIndex, request.PageSize)
.Count(out long count)
.ToList();
@@ -264,10 +272,17 @@ namespace BBWY.Server.Business
public PromotionTaskResponse GetPrePromotionTaskList(long shopId)
{
- var list = fsql.Select().Where(pt => pt.ShopId == shopId)
+ var list = fsql.Select().As("pt")
+ .Where(pt => pt.ShopId == shopId)
.Where(pt => preTaskStateList.Contains(pt.Status.Value))
+ .OrderBy(pt => SqlExt.Case().When(pt.Status == Enums.PromitionTaskStatus.进行中, 0)
+ .When(pt.Status == Enums.PromitionTaskStatus.等待, 1)
+ .When(pt.Status == Enums.PromitionTaskStatus.已完成, 2)
+ .When(pt.Status == Enums.PromitionTaskStatus.已停止, 3)
+ .End())
+ //.OrderBy("case when pt.status=1 then 0 when pt.status=0 then 1 when pt.status=2 then 2 when pt.status=3 then 3 end asc")
.OrderByDescending(pt => pt.Sort)
- .Page(1, 100)
+ .Page(1, 1000)
.Count(out long count)
.ToList();
return new PromotionTaskResponse()
@@ -277,6 +292,50 @@ namespace BBWY.Server.Business
};
}
+ ///
+ /// 设置前置任务
+ ///
+ ///
+ ///
+ public void EditPreTask(EditPreTaskRequest request)
+ {
+ var pt = fsql.Select(request.TaskId).ToOne();
+ if (pt == null)
+ throw new BusinessException($"{request.TaskId}任务不存在");
+
+ var prpt = fsql.Select(request.PreTaskId).ToOne();
+ if (prpt == null)
+ throw new BusinessException($"{request.PreTaskId}前置任务不存在");
+
+ if (pt.Id == prpt.Id)
+ throw new BusinessException("前置任务不能设置为自己");
+
+ if (pt.Status != Enums.PromitionTaskStatus.等待)
+ throw new BusinessException("任务状态必须为等待");
+
+ if (prpt.Status != Enums.PromitionTaskStatus.等待 && prpt.Status != Enums.PromitionTaskStatus.进行中)
+ throw new BusinessException("前置任务状态必须为等待或进行中");
+
+ var ptSkuList = new List();
+ var prptSkuList = new List();
+
+ if (!string.IsNullOrEmpty(pt.MainProductSku))
+ ptSkuList.AddRange(pt.MainProductSku.Split(spliter, StringSplitOptions.RemoveEmptyEntries));
+ if (!string.IsNullOrEmpty(pt.CustomMotherSku))
+ ptSkuList.AddRange(pt.CustomMotherSku.Split(spliter, StringSplitOptions.RemoveEmptyEntries));
+
+ if (!string.IsNullOrEmpty(prpt.MainProductSku))
+ prptSkuList.AddRange(prpt.MainProductSku.Split(spliter, StringSplitOptions.RemoveEmptyEntries));
+ if (!string.IsNullOrEmpty(prpt.CustomMotherSku))
+ prptSkuList.AddRange(prpt.CustomMotherSku.Split(spliter, StringSplitOptions.RemoveEmptyEntries));
+
+ var intersectSkuList = ptSkuList.Intersect(prptSkuList).ToList();
+ if (intersectSkuList != null && intersectSkuList.Count() > 0)
+ throw new BusinessException($"{string.Join(",", intersectSkuList)}存在重复");
+
+ fsql.Update(request.TaskId).Set(pt1 => pt1.PreTaskId, request.PreTaskId).ExecuteAffrows();
+ }
+
///
/// 修改任务排序
///
diff --git a/BBWY.Server.Model/Dto/Request/PromotionTask/EditPreTaskRequest.cs b/BBWY.Server.Model/Dto/Request/PromotionTask/EditPreTaskRequest.cs
new file mode 100644
index 00000000..db40b499
--- /dev/null
+++ b/BBWY.Server.Model/Dto/Request/PromotionTask/EditPreTaskRequest.cs
@@ -0,0 +1,15 @@
+namespace BBWY.Server.Model.Dto
+{
+ public class EditPreTaskRequest
+ {
+ ///
+ /// 任务Id
+ ///
+ public long TaskId { get; set; }
+
+ ///
+ /// 前置任务Id
+ ///
+ public long PreTaskId { get; set; }
+ }
+}