From e94d90fd7d2ec6fcb41fb6aa6fc28e3f9d39ba95 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 19 八月 2025 10:50:16 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs |   38 +++++++++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
index 29b7036..d9ca25b 100644
--- a/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
@@ -21,7 +21,8 @@
         ) :
         IRequestHandler<SaveTaskInfoCommand, Guid>,
         IRequestHandler<SetTaskInfoReleaseStatusCommand, int>,
-        IRequestHandler<SetTaskInfoRecommendStatusCommand, int>
+        IRequestHandler<SetTaskInfoRecommendStatusCommand, int>,
+        IRequestHandler<DeleteTaskInfoCommand, int>
     {
         private readonly IRepository<TaskInfo> rep = rep;
 
@@ -101,16 +102,43 @@
         public async Task<int> Handle(SetTaskInfoRecommendStatusCommand request, CancellationToken cancellationToken)
         {
             var entities = await TaskInfoRepository.GetQueryable(rep, false)
-                .Where(it => request.Ids.Contains(it.Id))
+                .Where(it => request.Ids.Contains(it.Id) && it.RecommendStatus != request.RecommendStatus)
                 .ToListAsync();
-            foreach (var entity in entities)
+            if (entities.IsNotNull())
             {
-                entity.RecommendStatus = request.RecommendStatus;
+                foreach (var entity in entities)
+                {
+                    entity.RecommendStatus = request.RecommendStatus;
+                    if (entity.RecommendStatus == EnumTaskRecommendStatus.Yes)
+                    {
+                        entity.RecommendTime = DateTime.Now;
+                    }
+                }
+                await rep.UpdateAsync(entities);
             }
-            await rep.UpdateAsync(entities);
             return entities.Count;
         }
 
+        /// <summary>
+        /// 鍒犻櫎浠诲姟
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<int> Handle(DeleteTaskInfoCommand request, CancellationToken cancellationToken)
+        {
+            return request.DeleteData<TaskInfo>(
+                q =>
+                {
+                    q = TaskInfoRepository.GetQueryable(rep, false);
+                    if (q.AsNoTracking().Any(it => request.Ids.Contains(it.Id) && it.Status == EnumTaskStatus.Complete))
+                    {
+                        throw Oops.Oh(EnumErrorCodeType.s510, "宸插畨鎺掔殑浠诲姟鏃犳硶鍒犻櫎");
+                    }
+                    return q;
+                }, cancellationToken);
+        }
+
         private async Task BuildCode(TaskInfo entity)
         {
             entity.Code = $"{DateTime.Now:yyyyMMddHHmm}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";

--
Gitblit v1.9.1