From 06d5b35bae85bf0f4b5bd1f837205395305274f1 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 22 八月 2025 13:43:04 +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