diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs index deca3ce..6d82ec4 100644 --- a/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs +++ b/BBWYB.Server.API/Controllers/TimeLimitTaskController.cs @@ -28,6 +28,16 @@ namespace BBWYB.Server.API.Controllers timeLimitTaskBusiness.CheckTask(); } + /// + /// 修复订单缺失的待核算任务 + /// + [HttpPost] + [AllowAnonymous] + public void RepairOrderComputationTask() + { + timeLimitTaskBusiness.RepairOrderComputationTask(); + } + /// /// 查询限时任务列表 /// diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 0b95bf7..6f7f8d3 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -717,6 +717,7 @@ namespace BBWYB.Server.Business public void CheckSku(CheckSkuRequest request) { + nLogManager.Default().Info($"CheckSku {JsonConvert.SerializeObject(request)}"); var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException($"订单{request.OrderId}不存在"); diff --git a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs index 4a016b8..78225b4 100644 --- a/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs +++ b/BBWYB.Server.Business/TimeLimitTask/TimeLimitTaskBusiness.cs @@ -28,6 +28,40 @@ namespace BBWYB.Server.Business .ExecuteAffrows(); } + /// + /// 修复订单待核算任务 + /// + public void RepairOrderComputationTask() + { + var childSelect = fsql.Select().As("t").Where(t => t.TaskType == Enums.TimeLimitTaskType.待核算任务); + var noComputationTaskOrderList = fsql.Select().Where(o => o.OrderState == Enums.OrderState.待核算 && + !childSelect.Where(t => t.OrderId == o.Id).Any()) + .ToList(o => new + { + o.Id, + o.OrderSn, + o.ShopId, + }); + var insertComputationTaskList = noComputationTaskOrderList.Select(o => new TimeLimitTask() + { + Id = idGenerator.NewLong(), + CreateTme = DateTime.Now, + OrderId = o.Id, + OrderSn = o.OrderSn, + ShopId = o.ShopId, + TaskType = Enums.TimeLimitTaskType.待核算任务, + ExpirationTime = DateTime.Now.AddDays(1), + Remark = "RepairOrderComputationTask" + }).ToList(); + + if (insertComputationTaskList.Count() > 0) + { + fsql.Transaction(() => + { + fsql.Insert(insertComputationTaskList).ExecuteAffrows(); + }); + } + } public TimeLimitTaskListResponse QueryTimeLimitTask(QueryTimeLimitTaskRequest request) { @@ -122,9 +156,9 @@ namespace BBWYB.Server.Business var purchaseTaskTimeOutCount = purchaseTaskTimOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId)?.TaskCount ?? 0; response.PurchaseTimeOutPercent = purchaseTaskCount == 0 ? 0 : Math.Round(1.0 * purchaseTaskTimeOutCount / purchaseTaskCount * 100, 2); - response.CerEditTimeOutCount = cerTimeOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId && + response.CerEditTimeOutCount = cerTimeOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId && x.TaskType == Enums.TimeLimitTaskType.合格证补充任务)?.TaskCount ?? 0; - response.CerConfigTimeOutCount = cerTimeOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId && + response.CerConfigTimeOutCount = cerTimeOutCountGroups.FirstOrDefault(x => x.ShopId == response.ShopId && x.TaskType == Enums.TimeLimitTaskType.合格证拟定任务)?.TaskCount ?? 0; list.Add(response); }