From b10f199328a89153a2d5d185acf24d592f448074 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 28 八月 2025 15:18:09 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs |   49 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
index fae1531..724213f 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;
 
@@ -37,10 +38,10 @@
         {
             var logier = JwtUtils.GetCurrentLogier();
             if (logier.EnterpriseId == null) throw Oops.Oh(EnumErrorCodeType.s400, "褰撳墠鐧诲綍鐢ㄦ埛蹇呴』涓轰紒涓氱敤鎴锋墠鍙互鍒涘缓浠诲姟");
-            return await request.SaveData<TaskInfo, SaveTaskInfoCommand>(
+            var entity = await request.SaveData<TaskInfo, SaveTaskInfoCommand>(
                  q =>
                  {
-                     q = TaskInfoRepository.GetQueryable(rep)
+                     q = TaskInfoRepository.GetQueryable(rep, false)
                           .Include(it => it.Benefits)
                           .Include(it => it.CredentialLimits);
                      return q;
@@ -56,6 +57,7 @@
                          entity.RecommendStatus = EnumTaskRecommendStatus.No;
                          BuildCode(entity).Wait();
                      }
+                     request.Adapt(entity);
                      entity.Benefits = request.Benefits
                          .Select(it => new TaskInfoBenefit
                          {
@@ -68,9 +70,9 @@
                              TypeCode = it
                          })
                          .ToList();
-                     request.Adapt(entity);
                  },
                  cancellationToken);
+            return entity.Id;
         }
 
         /// <summary>
@@ -81,7 +83,7 @@
         /// <returns></returns>
         public async Task<int> Handle(SetTaskInfoReleaseStatusCommand request, CancellationToken cancellationToken)
         {
-            var entities = await TaskInfoRepository.GetQueryable(rep)
+            var entities = await TaskInfoRepository.GetQueryable(rep, false)
                 .Where(it => request.Ids.Contains(it.Id))
                 .ToListAsync();
             foreach (var entity in entities)
@@ -100,17 +102,44 @@
         /// <returns></returns>
         public async Task<int> Handle(SetTaskInfoRecommendStatusCommand request, CancellationToken cancellationToken)
         {
-            var entities = await TaskInfoRepository.GetQueryable(rep)
-                .Where(it => request.Ids.Contains(it.Id))
+            var entities = await TaskInfoRepository.GetQueryable(rep, false)
+                .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