From fed0f0b4f2abeca2ee641ee3f95416f68a06fe09 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 13 八月 2025 19:06:44 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs | 120 ++++++++++++++++++++++++++++++------------------------------ 1 files changed, 60 insertions(+), 60 deletions(-) diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs index 6e8a1e9..76760be 100644 --- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs @@ -1,5 +1,6 @@ 锘縰sing FlexJobApi.Core; using Furion.DatabaseAccessor; +using Furion.FriendlyException; using MediatR; using Microsoft.EntityFrameworkCore; using System; @@ -11,18 +12,18 @@ namespace FlexJobApi.FlexJobServer.Application { /// <summary> - /// 浠诲姟闆囦剑鍛戒护澶勭悊鍣� + /// 浠诲姟浜哄憳鍛戒护澶勭悊鍣� /// </summary> public class TaskUserCommandHandler( IRepository<TaskInfoUser> rep, - IRepository<UserTaskCollect> repUserTaskCollect + IRepository<TaskUserCollect> repTaskUserCollect ) : IRequestHandler<CollectTaskCommand, int>, - IRequestHandler<ApplyTaskCommand, int>, - IRequestHandler<SetTaskUserHireCommand, 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> /// 鏀惰棌浠诲姟 @@ -33,7 +34,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) @@ -41,47 +42,20 @@ 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(ApplyTaskCommand request, CancellationToken cancellationToken) - { - var logier = JwtUtils.GetCurrentLogier(); - var applyIds = await rep.AsQueryable().AsNoTracking() - .Where(it => request.Ids.Contains(it.TaskInfoId) && it.UserId == logier.Id) - .Select(it => it.TaskInfoId) - .ToListAsync(cancellationToken); - var addIds = request.Ids.Where(it => !applyIds.Contains(it)).ToList(); - foreach (var addId in addIds) - { - var entity = new TaskInfoUser - { - TaskInfoId = addId, - UserId = logier.Id, - HireStatus = EnumTaskUserHireStatus.Wait - }; - await rep.InsertAsync(entity); - } - return addIds.Count; } /// <summary> @@ -90,34 +64,60 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public async Task<int> Handle(SetTaskUserHireCommand request, CancellationToken cancellationToken) + public async Task<Guid> Handle(SetTaskUserHireCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); - var entities = await rep.AsQueryable() - .Where(it => - it.TaskInfo.EnterpriseId == logier.Id - && it.TaskInfoId == request.Id - && request.UserIds.Contains(it.UserId) - && it.HireStatus != request.HireStatus) - .ToListAsync(cancellationToken); - if (entities.IsNotNull()) + var entity = await rep.AsQueryable() + .Include(it => it.EnterpriseEmployee) + .Where(it => + it.TaskInfo.EnterpriseId == logier.EnterpriseId + && 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) { - foreach (var entity in entities) - { - entity.HireStatus = request.HireStatus; - if (entity.HireStatus == EnumTaskUserHireStatus.Pass) - { - entity.HireTime = DateTime.Now; - entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass; - entity.UserSignContractTime = DateTime.Now; - entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass; - entity.EnterpriseSignContractTime = DateTime.Now; - entity.ArrangeStatus = EnumTaskUserArrangeStatus.Wait; - } - } - await rep.UpdateAsync(entities); + 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.ArrangeStatus = EnumTaskUserArrangeStatus.Wait; } - return entities.Count; + await rep.UpdateAsync(entity); + return entity.Id; + } + + /// <summary> + /// 浠诲姟瀹夋帓 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<Guid> Handle(SetTaskUserArrangeCommand request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var entity = await rep.AsQueryable() + .Include(it => it.TaskInfo) + .Include(it => it.EnterpriseEmployee) + .Where(it => + it.TaskInfo.EnterpriseId == logier.EnterpriseId + && it.Id == request.Id) + .FirstOrDefaultAsync(cancellationToken); + if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ユ姤鍚嶄俊鎭�"); + if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "璇ョ伒宸ュ凡瀹夋帓"); + entity.ArrangeStatus = request.ArrangeStatus; + if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete) + { + entity.ArrangeTime = DateTime.Now; + 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