From 1b07d3f0191424cbf06dad186f5eb622ac9144e0 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 14 八月 2025 10:51:37 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs | 34 +++++++++++++++++ FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs | 32 +++++++++++++++ FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs | 8 ++- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs new file mode 100644 index 0000000..c3480bd --- /dev/null +++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs @@ -0,0 +1,34 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ搴旇仒鎶ュ悕浜哄憳褰曠敤鐘舵�� + /// </summary> + [Resource([EnumResourceController.TaskUser])] + public class GetTaskUserHireStatusQuery : IRequest<GetTaskUserHireStatusQueryResult> + { + /// <summary> + /// 浠诲姟Id + /// </summary> + public Guid TaskInfoId { get; set; } + + /// <summary> + /// 鐢ㄦ埛Id锛圕绔敤鎴峰彲涓嶅~锛� + /// </summary> + public Guid? UserId { get; set; } + } + + /// <summary> + /// 鏌ヨ搴旇仒鎶ュ悕浜哄憳褰曠敤鐘舵�� + /// </summary> + public class GetTaskUserHireStatusQueryResult + { + public EnumTaskUserHireStatus HireStatus { get; set; } + } +} diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs index 5846816..77d1e44 100644 --- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs @@ -17,7 +17,8 @@ public class TaskUserQueryHandler( IRepository<TaskInfoUser> rep) : IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>, - IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult> + IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>, + IRequestHandler<GetTaskUserHireStatusQuery, GetTaskUserHireStatusQueryResult> { private readonly IRepository<TaskInfoUser> rep = rep; @@ -120,5 +121,34 @@ }); return await request.PageModel.GetPagedListAsync<GetArrangeTaskUsersQueryResult, GetArrangeTaskUsersQueryResultItem>(s, cancellationToken); } + + /// <summary> + /// 鏌ヨ搴旇仒鎶ュ悕浜哄憳褰曠敤鐘舵�� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetTaskUserHireStatusQueryResult> Handle(GetTaskUserHireStatusQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = rep.AsQueryable().AsNoTracking() + .Where(it => it.TaskInfoId == request.TaskInfoId); + if (logier.Type == EnumUserType.Personal) + { + q = q.Where(it => it.EnterpriseEmployee.UserId == request.UserId); + } + else if (request.UserId == null) + { + throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨鐢ㄦ埛"); + } + var model = await q + .Select(it => new GetTaskUserHireStatusQueryResult + { + HireStatus = it.EnterpriseEmployee.HireStatus + }) + .FirstOrDefaultAsync(cancellationToken); + if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ユ姤鍚嶄俊鎭�"); + return model; + } } } diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs index cae6953..0ad41a4 100644 --- a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs @@ -16,7 +16,8 @@ /// 鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒 /// </summary> public class UserResumeQueryHandler( - IRepository<User> rep + IRepository<User> rep, + IRepository<TaskInfoUser> repTaskInfoUser ) : IRequestHandler<GetUserResumesQuery, GetUserResumesQueryResult>, IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult>, @@ -28,6 +29,7 @@ IRequestHandler<GetUserResumeDetailQuery, GetUserResumeDetailQueryResult> { private readonly IRepository<User> rep = rep; + private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser; /// <summary> /// 鏌ヨ绠�鍘嗗垎椤靛垪琛ㄦ暟鎹� @@ -149,7 +151,7 @@ model.TaskInfoUsers = model.TaskInfoUsers.Where(it => it.SignContractTime.HasValue).ToList(); if (model.Id.HasValue) { - model.TaskInfoUsers = rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + model.TaskInfoUsers = repTaskInfoUser.AsQueryable().AsNoTracking() .Where(it => it.EnterpriseEmployee.UserId == model.Id && it.EnterpriseEmployee.EnterpriseSignContractTime.HasValue) .Select(it => new GetUserResumeQueryResultExperience { @@ -158,7 +160,7 @@ Name = it.TaskInfo.Name }) .ToList(); - model.TaskCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + model.TaskCount = await repTaskInfoUser.AsQueryable().AsNoTracking() .Where(it => it.EnterpriseEmployee.UserId == model.Id && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) .CountAsync(); if (logier.Type == EnumUserType.Enterprise) -- Gitblit v1.9.1