From d77f3d84ce7cd4e06dcc98653b38370bac2b4926 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 12 八月 2025 10:10:39 +0800 Subject: [PATCH] fix:bug --- FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 31 ++++++++++++++++++++++++++----- 1 files changed, 26 insertions(+), 5 deletions(-) diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index 0b5e59b..5b1b297 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -34,13 +34,22 @@ /// <returns></returns> public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) { + var logier = JwtUtils.GetCurrentLogier(); var model = await TaskInfoRepository.GetQueryable(rep) .Where(it => it.Id == request.Id) - .ProjectToType<GetTaskInfoQueryResult>() - .FirstOrDefaultAsync(cancellationToken); + .GetDetail<TaskInfo, GetTaskInfoQueryResult>(cancellationToken); model.TaskCount = await rep.AsQueryable().AsNoTracking() .Where(it => it.EnterpriseId == model.EnterpriseId && it.ReleaseStatus == EnumTaskReleaseStatus.InProcess) .CountAsync(); + model.ApplyCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + .CountAsync(it => it.TaskInfoId == model.Id); + if (logier != null && logier.Type == EnumUserType.Personal) + { + model.HireStatus = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + .Where(it => it.TaskInfoId == model.Id && it.UserId == logier.Id) + .Select(it => it.HireStatus) + .FirstOrDefaultAsync(); + } return model; } @@ -52,7 +61,8 @@ /// <returns></returns> public async Task<GetTaskInfosQueryResult> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) { - var q = TaskInfoRepository.GetQueryable(rep); + var logier = JwtUtils.GetCurrentLogier(); + var q = TaskInfoRepository.GetQueryable(rep, true, logier); if (request.Keywords.IsNotNull()) { q = q.Where(it => it.Name.Contains(request.Keywords)); @@ -81,6 +91,10 @@ { q = q.Where(it => it.GenderLimit == request.GenderLimit); } + if (request.HireStatus.IsNotNull() && logier.Type == EnumUserType.Personal) + { + q = q.Where(it => it.TaskInfoUsers.Any(u => u.UserId == logier.Id && request.HireStatus.Contains(u.HireStatus))); + } var count = new GetTaskInfosQueryResultObjectData { @@ -101,6 +115,10 @@ if (request.RecommendStatus.HasValue) { q = q.Where(it => it.RecommendStatus == request.RecommendStatus); + } + if (request.CheckReceiveStatus.HasValue) + { + q = q.Where(it => it.CheckReceiveStatus == request.CheckReceiveStatus); } var s = from t in q select new GetTaskInfosQueryResultItem @@ -130,7 +148,7 @@ AddressDetail = t.AddressDetail, Latitude = t.Latitude, Longitude = t.Longitude, - UserCount = t.Users.Count(), + UserCount = t.TaskInfoUsers.Count(), Status = t.Status, BeginTime = t.BeginTime, EndTime = t.EndTime, @@ -138,7 +156,10 @@ CheckReceiveStatus = t.CheckReceiveStatus, CreatedTime = t.CreatedTime, RecommendStatus = t.RecommendStatus, - SettlementStatus = t.SettlementStatus + SettlementStatus = t.SettlementStatus, + HireStatus = logier != null + ? t.TaskInfoUsers.Where(it => it.UserId == logier.Id).Select(u => u.HireStatus).FirstOrDefault() + : null }; var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); result.ObjectData = count; -- Gitblit v1.9.1