FlexJobApi.Core/FlexJobApi.Core.xml
@@ -3009,7 +3009,7 @@ </member> <member name="T:FlexJobApi.Core.GetAreaSelectQuery"> <summary> 查询数据字典选择器 查询地区选择器 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQuery.MaxDeep"> @@ -3682,6 +3682,11 @@ 在招岗位数量 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.ApplyCount"> <summary> 报名人数 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.Name"> <summary> 任务名称 @@ -3795,6 +3800,11 @@ <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.ReleaseStatus"> <summary> 发布状态 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.HireStatus"> <summary> 录用状态 </summary> </member> <member name="T:FlexJobApi.Core.GetTaskInfoQueryResultBenefit"> @@ -4106,9 +4116,34 @@ 是否收藏 </summary> </member> <member name="T:FlexJobApi.Core.SetTaskUserHireCommand"> <summary> 任务录用 </summary> </member> <member name="P:FlexJobApi.Core.SetTaskUserHireCommand.Id"> <summary> 任务Id </summary> </member> <member name="P:FlexJobApi.Core.SetTaskUserHireCommand.UserIds"> <summary> 人员Id </summary> </member> <member name="P:FlexJobApi.Core.SetTaskUserHireCommand.HireStatus"> <summary> 录用状态 </summary> </member> <member name="T:FlexJobApi.Core.BindWxmpUserInfoCommand"> <summary> 绑定微信小程序用户信息 </summary> </member> <member name="P:FlexJobApi.Core.BindWxmpUserInfoCommand.AccessToken"> <summary> 访问令牌 </summary> </member> <member name="P:FlexJobApi.Core.BindWxmpUserInfoCommand.EncryptedData"> @@ -6164,6 +6199,11 @@ 生活照 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.TaskInfoUsers"> <summary> 经历 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumeQueryResultExpectJob"> <summary> 查询用户简历-结果 @@ -6244,9 +6284,64 @@ 照片 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumeQueryResultExperience"> <summary> 查询用户简历-结果-经历 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExperience.SignContractTime"> <summary> 签约时间 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExperience.EnterpriseName"> <summary> 企业全称 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExperience.Name"> <summary> 任务名称 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExperience.TaskInfo"> <summary> 任务 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumeQueryResultTaskInfo"> <summary> 查询用户简历-结果-经历 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResultTaskInfo.Enterprise"> <summary> 企业 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResultTaskInfo.Name"> <summary> 任务名称 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumeQueryResultTaskInfoEnterprise"> <summary> 查询用户简历-结果-经历 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumeQueryResultTaskInfoEnterprise.EnterpriseName"> <summary> 企业全称 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumesQuery"> <summary> 查询灵工分页列表数据 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.TaskInfoId"> <summary> 任务Id </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.UserExpectJobs"> @@ -6304,6 +6399,12 @@ 姓名 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.ContactPhoneNumber"> <summary> 手机号 </summary> <remarks>联系电话</remarks> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Gender"> <summary> 性别 @@ -6354,6 +6455,11 @@ 工作经验 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.HireStatus"> <summary> 录用状态 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQuery"> <summary> 查询用户简历-工作经验 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs
New file @@ -0,0 +1,36 @@ using 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 SetTaskUserHireCommand : IRequest<int> { public SetTaskUserHireCommand() { UserIds = []; } /// <summary> /// 任务Id /// </summary> public Guid Id { get; set; } /// <summary> /// 人员Id /// </summary> public List<Guid> UserIds { get; set; } /// <summary> /// 录用状态 /// </summary> public EnumTaskUserHireStatus HireStatus { get; set; } } } FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
@@ -50,9 +50,20 @@ public string EnterpriseEnterpriseName { get; set; } /// <summary> /// 联系电话 /// </summary> [JsonProperty("contactPhoneNumber")] public string EnterpriseContactPhoneNumber { get; set; } /// <summary> /// 在招岗位数量 /// </summary> public int TaskCount { get; set; } /// <summary> /// 报名人数 /// </summary> public int ApplyCount { get; set; } /// <summary> /// 任务名称 @@ -168,6 +179,11 @@ /// 发布状态 /// </summary> public EnumTaskReleaseStatus ReleaseStatus { get; set; } /// <summary> /// 录用状态 /// </summary> public EnumTaskUserHireStatus? HireStatus { get; set; } } FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
@@ -33,6 +33,7 @@ UserExpectJobs = []; UserCredentials = []; Photos = []; TaskInfoUsers = []; } /// <summary> @@ -179,6 +180,11 @@ [AdaptIgnore] [JsonProperty("photos")] public List<string> PhotoImgs => Photos.Select(it => it.Img).ToList(); /// <summary> /// 经历 /// </summary> public List<GetUserResumeQueryResultExperience> TaskInfoUsers { get; set; } } /// <summary> @@ -263,4 +269,60 @@ /// </summary> public string Img { get; set; } } /// <summary> /// 查询用户简历-结果-经历 /// </summary> public class GetUserResumeQueryResultExperience { /// <summary> /// 签约时间 /// </summary> public DateTime? SignContractTime { get; set; } /// <summary> /// 企业全称 /// </summary> public string EnterpriseName => TaskInfo.Enterprise.EnterpriseName; /// <summary> /// 任务名称 /// </summary> public string Name => TaskInfo.Name; /// <summary> /// 任务 /// </summary> [JsonIgnore, SwaggerIgnore] public GetUserResumeQueryResultTaskInfo TaskInfo { get; set; } } /// <summary> /// 查询用户简历-结果-经历 /// </summary> public class GetUserResumeQueryResultTaskInfo { /// <summary> /// 企业 /// </summary> public GetUserResumeQueryResultTaskInfoEnterprise Enterprise { get; set; } /// <summary> /// 任务名称 /// </summary> public string Name { get; set; } } /// <summary> /// 查询用户简历-结果-经历 /// </summary> public class GetUserResumeQueryResultTaskInfoEnterprise { /// <summary> /// 企业全称 /// </summary> public string EnterpriseName { get; set; } } } FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs
@@ -20,6 +20,11 @@ } /// <summary> /// 任务Id /// </summary> public Guid? TaskInfoId { get; set; } /// <summary> /// 期望岗位编号 /// </summary> public List<string> UserExpectJobs { get; set; } @@ -80,6 +85,12 @@ public string Name { get; set; } /// <summary> /// 手机号 /// </summary> /// <remarks>联系电话</remarks> public string ContactPhoneNumber { get; set; } /// <summary> /// 性别 /// </summary> public EnumUserGender? Gender { get; set; } @@ -130,5 +141,10 @@ /// </summary> public string WorkExperience { get; set; } /// <summary> /// 录用状态 /// </summary> public EnumTaskUserHireStatus? HireStatus { get; set; } } } FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
@@ -99,5 +99,13 @@ <param name="cancellationToken"></param> <returns></returns> </member> <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserCommandHandler.Handle(FlexJobApi.Core.SetTaskUserHireCommand,System.Threading.CancellationToken)"> <summary> 任务录用 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> </members> </doc> FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs
@@ -18,7 +18,8 @@ IRepository<UserTaskCollect> repUserTaskCollect ) : IRequestHandler<CollectTaskCommand, int>, IRequestHandler<ApplyTaskCommand, int> IRequestHandler<ApplyTaskCommand, int>, IRequestHandler<SetTaskUserHireCommand, int> { private readonly IRepository<TaskInfoUser> rep = rep; private readonly IRepository<UserTaskCollect> repUserTaskCollect = repUserTaskCollect; @@ -82,5 +83,36 @@ } return addIds.Count; } /// <summary> /// 任务录用 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<int> 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()) { foreach (var entity in entities) { entity.HireStatus = request.HireStatus; if (entity.HireStatus == EnumTaskUserHireStatus.Pass) { entity.SignContractStatus = EnumTaskUserSignContractStatus.Pass; } } await rep.UpdateAsync(entities); } return entities.Count; } } } 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.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; } FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs
@@ -39,6 +39,10 @@ { var logier = JwtUtils.GetCurrentLogier(); var q = rep.AsQueryable().AsNoTracking(); if (request.TaskInfoId.HasValue) { q = q.Where(it => it.TaskInfoUsers.Any(tu => tu.TaskInfoId == request.TaskInfoId)); } if (request.UserExpectJobs.IsNotNull()) { q = q.Where(it => @@ -81,9 +85,12 @@ PersonalIdentityContent = it.PersonalIdentity.Content, EducationalBackgroundCode = it.EducationalBackgroundCode, EducationalBackgroundContent = it.EducationalBackground.Content, TaskCount = it.TaskInfoUsers.Count(tu => tu.SignContractStatus == EnumTaskUserSignContractStatus.Pass), TaskCount = it.TaskInfoUsers.Count(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass), WorkSeniority = it.WorkSeniority, WorkExperience = it.WorkExperience WorkExperience = it.WorkExperience, HireStatus = request.TaskInfoId.HasValue ? it.TaskInfoUsers.Where(it => it.TaskInfoId == request.TaskInfoId).Select(it => it.HireStatus as EnumTaskUserHireStatus?).FirstOrDefault() : null }); var result = await request.PageModel.GetPagedListAsync<GetUserResumesQueryResult, GetUserResumesQueryResultItem>(s, cancellationToken); return result; @@ -103,8 +110,10 @@ request.UserId = logier.Id; } if (request.UserId == null) throw Oops.Oh(EnumErrorCodeType.s400, "请选择用户"); var model = await request.UserId.Value var model = await rep.AsQueryable().AsNoTracking() .Where(it => it.Id == request.UserId) .GetDetail<User, GetUserResumeQueryResult>(cancellationToken); model.TaskInfoUsers = model.TaskInfoUsers.Where(it => it.SignContractTime.HasValue).ToList(); model.TaskCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() .Where(it => it.UserId == model.Id && it.HireStatus == EnumTaskUserHireStatus.Pass) .CountAsync();