From 7c3aee1fe52cb86345b35b90b6cef80bbc6c618a Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 14 八月 2025 17:08:21 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs | 48 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 37 insertions(+), 11 deletions(-) diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs index a6593c8..08abb7b 100644 --- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs @@ -16,14 +16,15 @@ /// </summary> public class TaskUserCommandHandler( IRepository<TaskInfoUser> rep, - IRepository<UserTaskCollect> repUserTaskCollect + IRepository<TaskUserCollect> repTaskUserCollect ) : IRequestHandler<CollectTaskCommand, int>, + IRequestHandler<ClearTaskCollectCommand, int>, IRequestHandler<SetTaskUserHireCommand, Guid>, IRequestHandler<SetTaskUserArrangeCommand, Guid> { private readonly IRepository<TaskInfoUser> rep = rep; - private readonly IRepository<UserTaskCollect> repUserTaskCollect = repUserTaskCollect; + private readonly IRepository<TaskUserCollect> repTaskUserCollect = repTaskUserCollect; /// <summary> /// 鏀惰棌浠诲姟 @@ -34,7 +35,7 @@ public async Task<int> Handle(CollectTaskCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); - var collects = await repUserTaskCollect.AsQueryable().AsNoTracking() + var collects = await repTaskUserCollect.AsQueryable().AsNoTracking() .Where(it => request.Ids.Contains(it.TaskInfoId) && it.UserId == logier.Id) .ToListAsync(cancellationToken); if (request.IsCollect) @@ -42,20 +43,42 @@ var addIds = request.Ids.Where(it => !collects.Any(c => c.TaskInfoId == it)).ToList(); foreach (var addId in addIds) { - var entity = new UserTaskCollect + var entity = new TaskUserCollect { TaskInfoId = addId, UserId = logier.Id }; - await repUserTaskCollect.InsertAsync(entity); + await repTaskUserCollect.InsertAsync(entity); } return addIds.Count; } else { - await repUserTaskCollect.DeleteAsync(collects); + await repTaskUserCollect.DeleteAsync(collects); return collects.Count; } + } + + /// <summary> + /// 娓呯┖宸插仠姝㈢殑浠诲姟鏀惰棌 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<int> Handle(ClearTaskCollectCommand request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var entities = await repTaskUserCollect.AsQueryable() + .Where(it => it.TaskInfo.ReleaseStatus == EnumTaskReleaseStatus.Stopped && it.UserId == logier.Id) + .ToListAsync(cancellationToken); + if (entities.IsNotNull()) + { + foreach (var entity in entities) + { + await repTaskUserCollect.DeleteAsync(entity); + } + } + return entities.Count; } /// <summary> @@ -74,16 +97,16 @@ && it.Id == request.Id) .FirstOrDefaultAsync(cancellationToken); if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ユ姤鍚嶄俊鎭�"); - if (entity.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "璇ョ伒宸ュ凡褰曠敤"); - entity.EnterpriseEmployee.HireStatus = request.HireStatus; - if (entity.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) + if (entity.HireStatus == EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "璇ョ伒宸ュ凡褰曠敤"); + entity.HireStatus = request.HireStatus; + if (entity.HireStatus == EnumTaskUserHireStatus.Pass) { - entity.EnterpriseEmployee.HireTime = DateTime.Now; entity.EnterpriseEmployee.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass; entity.EnterpriseEmployee.UserSignContractTime = DateTime.Now; entity.EnterpriseEmployee.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass; entity.EnterpriseEmployee.EnterpriseSignContractTime = DateTime.Now; + entity.HireTime = DateTime.Now; entity.ArrangeStatus = EnumTaskUserArrangeStatus.Wait; } await rep.UpdateAsync(entity); @@ -100,6 +123,7 @@ { var logier = JwtUtils.GetCurrentLogier(); var entity = await rep.AsQueryable() + .Include(it => it.TaskInfo) .Include(it => it.EnterpriseEmployee) .Where(it => it.TaskInfo.EnterpriseId == logier.EnterpriseId @@ -111,7 +135,9 @@ if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete) { entity.ArrangeTime = DateTime.Now; - entity.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Wait; + entity.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitSubmit; + entity.TaskInfo.Status = EnumTaskStatus.Complete; + entity.TaskInfo.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitSubmit; } await rep.UpdateAsync(entity); return entity.Id; -- Gitblit v1.9.1