FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
@@ -18,7 +18,8 @@ public class DictionaryDatasQueryHandler( IRepository<DictionaryData> rep ) : IRequestHandler<GetDictionaryDatasQuery, PagedListQueryResult<GetDictionaryDatasQueryResultItem>>, IRequestHandler<GetDictionaryDataSelectQuery, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> IRequestHandler<GetDictionaryDataSelectQuery, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>>, IRequestHandler<GetAreaSelectQuery, List<GetAreaSelectQueryResultOption>> { private readonly IRepository<DictionaryData> rep = rep; @@ -71,15 +72,15 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken) public async Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken) { return request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>( var models = await request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>( it => it.Code, it => it.Content, q => { q = q .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime) .OrderBy(it => it.Sort) .Where(it => !it.IsDisabled); if (request.All != true) { @@ -115,6 +116,49 @@ return q; }, cancellationToken); if (request.WithChildren) { var parents = models.Where(it => it.Data.ParentId == null).ToList(); LoopChildrens(parents, models); return parents; } return models; } /// <summary> /// 查询地区选择器 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<List<GetAreaSelectQueryResultOption>> Handle(GetAreaSelectQuery request, CancellationToken cancellationToken) { var models = await Handle(new GetDictionaryDataSelectQuery { CategoryCode = "70", All = true, MaxDeep = request.MaxDeep, WithChildren = true }, cancellationToken); var result = models.Adapt<List<GetAreaSelectQueryResultOption>>(); return result; } /// <summary> /// 递归赋值下级 /// </summary> /// <param name="models"></param> /// <param name="all"></param> private void LoopChildrens(List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> models, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> all) { foreach (var item in models) { item.Data.Children = all.Where(it => it.Data.ParentId == item.Data.Id).ToList(); if (item.Data.Children.IsNotNull()) { LoopChildrens(item.Data.Children, all); } } } } } FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
@@ -126,6 +126,21 @@ <param name="cancellationToken"></param> <returns></returns> </member> <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetAreaSelectQuery,System.Threading.CancellationToken)"> <summary> 查询地区选择器 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.LoopChildrens(System.Collections.Generic.List{FlexJobApi.Core.SelectOption{System.String,FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption}},System.Collections.Generic.List{FlexJobApi.Core.SelectOption{System.String,FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption}})"> <summary> 递归赋值下级 </summary> <param name="models"></param> <param name="all"></param> </member> <member name="T:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler"> <summary> 任务调度-作业 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs
@@ -163,7 +163,7 @@ /// <summary> /// 用户 /// </summary> public List<TaskInfoUser> Users { get; set; } public List<TaskInfoUser> TaskInfoUsers { get; set; } public void Configure(EntityTypeBuilder<TaskInfo> entityBuilder, DbContext dbContext, Type dbContextLocator) { FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
@@ -7,7 +7,7 @@ namespace FlexJobApi.Core { /// <summary> /// 任务用户信息 /// 任务雇佣信息 /// </summary> public class TaskInfoUser : CommonEntity { FlexJobApi.Core/Entities/UserServer/Users/User.cs
@@ -1,5 +1,4 @@ using FlexJobApi.Core.Enums.Users; using Furion.DatabaseAccessor; using Furion.DatabaseAccessor; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using System; @@ -24,6 +23,7 @@ UserExpectJobs = []; UserCredentials = []; Photos = []; TaskInfoUsers = []; } /// <summary> @@ -244,6 +244,11 @@ /// </summary> public List<UserPhoto> Photos { get; set; } /// <summary> /// 任务雇佣信息 /// </summary> public List<TaskInfoUser> TaskInfoUsers { get; set; } public void Configure(EntityTypeBuilder<User> entityBuilder, DbContext dbContext, Type dbContextLocator) { entityBuilder FlexJobApi.Core/Enums/Users/EnumUserRealMethod.cs
@@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core.Enums.Users namespace FlexJobApi.Core { /// <summary> /// 用户实名方式 FlexJobApi.Core/FlexJobApi.Core.xml
@@ -854,7 +854,7 @@ 推荐状态 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfo.Users"> <member name="P:FlexJobApi.Core.TaskInfo.TaskInfoUsers"> <summary> 用户 </summary> @@ -906,7 +906,7 @@ </member> <member name="T:FlexJobApi.Core.TaskInfoUser"> <summary> 任务用户信息 任务雇佣信息 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfoUser.TaskInfoId"> @@ -1896,6 +1896,11 @@ 生活照 </summary> </member> <member name="P:FlexJobApi.Core.User.TaskInfoUsers"> <summary> 任务雇佣信息 </summary> </member> <member name="T:FlexJobApi.Core.UserAuth"> <summary> 用户认证 @@ -2059,26 +2064,6 @@ <member name="F:FlexJobApi.Core.Enums.Common.EnumFileStoreAccess.AliyunOSS"> <summary> 阿里云OSS </summary> </member> <member name="T:FlexJobApi.Core.Enums.Users.EnumUserRealMethod"> <summary> 用户实名方式 </summary> </member> <member name="F:FlexJobApi.Core.Enums.Users.EnumUserRealMethod.Identity3"> <summary> 个人手机号三要素 </summary> </member> <member name="F:FlexJobApi.Core.Enums.Users.EnumUserRealMethod.Identity4"> <summary> 银行卡多要素 </summary> </member> <member name="F:FlexJobApi.Core.Enums.Users.EnumUserRealMethod.Face"> <summary> 刷脸认证 </summary> </member> <member name="T:FlexJobApi.Core.EnumFileType"> @@ -2816,6 +2801,26 @@ 女 </summary> </member> <member name="T:FlexJobApi.Core.EnumUserRealMethod"> <summary> 用户实名方式 </summary> </member> <member name="F:FlexJobApi.Core.EnumUserRealMethod.Identity3"> <summary> 个人手机号三要素 </summary> </member> <member name="F:FlexJobApi.Core.EnumUserRealMethod.Identity4"> <summary> 银行卡多要素 </summary> </member> <member name="F:FlexJobApi.Core.EnumUserRealMethod.Face"> <summary> 刷脸认证 </summary> </member> <member name="T:FlexJobApi.Core.EnumUserStatus"> <summary> 用户信息状态 @@ -3002,6 +3007,91 @@ 同步人力资源地区字典数据 </summary> </member> <member name="T:FlexJobApi.Core.GetAreaSelectQuery"> <summary> 查询数据字典选择器 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQuery.MaxDeep"> <summary> 最大深度 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Value"> <summary> Id </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Label"> <summary> 地区名称 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Data"> <summary> 数据 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Children"> <summary> 子级 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Id"> <summary> Id </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.ParentCode"> <summary> 上级编号 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Leyer"> <summary> 层级 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Sort"> <summary> 排序 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.QuickQuery"> <summary> 快速查询 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.Children"> <summary> 子级 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.AreaCode"> <summary> 编号 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.ParentCode"> <summary> 上级编号 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.Leyer"> <summary> 层级 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.Sort"> <summary> 排序 </summary> </member> <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.QuickQuery"> <summary> 快速查询 </summary> </member> <member name="T:FlexJobApi.Core.GetDictionaryCategoriesQuery"> <summary> 获取数据字典类别分页列表数据 @@ -3112,6 +3202,11 @@ 最大深度 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQuery.WithChildren"> <summary> 携带下级 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Id"> <summary> Id @@ -3127,9 +3222,24 @@ 上级编号 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Children"> <summary> 子级 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Path"> <summary> 字典路径 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Deep"> <summary> 深度 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Sort"> <summary> 排序 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Code"> @@ -6134,6 +6244,116 @@ 照片 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumesQuery"> <summary> 查询灵工分页列表数据 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.UserExpectJobs"> <summary> 期望岗位编号 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.Gender"> <summary> 性别 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.PersonalIdentityCode"> <summary> 身份编号 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.AgeMin"> <summary> 年龄范围最小 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.AgeMax"> <summary> 年龄范围大 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQuery.UserCredentials"> <summary> 资格证书编号 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumesQueryResult"> <summary> 查询灵工分页列表数据-结果 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumesQueryResultItem"> <summary> 查询灵工分页列表数据-结果-项 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Id"> <summary> 用户Id </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Avatar"> <summary> 头像 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Name"> <summary> 姓名 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Gender"> <summary> 性别 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.IsReal"> <summary> 是否实名 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Age"> <summary> 年龄 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.PersonalIdentityCode"> <summary> 身份编号 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.PersonalIdentityContent"> <summary> 身份 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EducationalBackgroundCode"> <summary> 学历编号 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EducationalBackgroundContent"> <summary> 学历 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.TaskCount"> <summary> 上岗次数 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.WorkSeniority"> <summary> 工作资历 </summary> </member> <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.WorkExperience"> <summary> 工作经验 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQuery"> <summary> 查询用户简历-工作经验 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs
New file @@ -0,0 +1,115 @@ using Mapster; using MediatR; using Newtonsoft.Json; using Swashbuckle.AspNetCore.Annotations; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 查询地区选择器 /// </summary> [Resource([EnumResourceController.Dictionary], AllowAnonymous = true)] public class GetAreaSelectQuery : IRequest<List<GetAreaSelectQueryResultOption>> { /// <summary> /// 最大深度 /// </summary> public int? MaxDeep { get; set; } } public class GetAreaSelectQueryResultOption { public GetAreaSelectQueryResultOption() { } /// <summary> /// Id /// </summary> [JsonProperty("areaCode")] public string Value { get; set; } /// <summary> /// 地区名称 /// </summary> [JsonProperty("areaName")] public string Label { get; set; } /// <summary> /// 数据 /// </summary> [JsonIgnore, SwaggerIgnore] public GetDictionaryDataSelectQueryResultOption Data { get; set; } /// <summary> /// 子级 /// </summary> public List<GetAreaSelectQueryResultOption> Children => Data.Children.Adapt<List<GetAreaSelectQueryResultOption>>(); /// <summary> /// Id /// </summary> public Guid Id => Data.Id; /// <summary> /// 上级编号 /// </summary> public string ParentCode => Data.ParentCode; /// <summary> /// 层级 /// </summary> public int Leyer => Data.Deep; /// <summary> /// 排序 /// </summary> public int Sort => Data.Sort; /// <summary> /// 快速查询 /// </summary> public string QuickQuery => Data.Field2; } public class GetAreaSelectQueryResultOptionData { /// <summary> /// 子级 /// </summary> public List<GetAreaSelectQueryResultOption> Children { get; set; } /// <summary> /// 编号 /// </summary> public string AreaCode { get; set; } /// <summary> /// 上级编号 /// </summary> public string ParentCode { get; set; } /// <summary> /// 层级 /// </summary> public int Leyer { get; set; } /// <summary> /// 排序 /// </summary> public int Sort { get; set; } /// <summary> /// 快速查询 /// </summary> public string QuickQuery { get; set; } } } FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
@@ -42,10 +42,20 @@ /// 最大深度 /// </summary> public int? MaxDeep { get; set; } /// <summary> /// 携带下级 /// </summary> public bool WithChildren { get; set; } } public class GetDictionaryDataSelectQueryResultOption { public GetDictionaryDataSelectQueryResultOption() { Children = []; } /// <summary> /// Id /// </summary> @@ -62,11 +72,26 @@ public string ParentCode { get; set; } /// <summary> /// 子级 /// </summary> public List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> Children { get; set; } /// <summary> /// 字典路径 /// </summary> public string Path { get; set; } /// <summary> /// 深度 /// </summary> public int Deep { get; set; } /// <summary> /// 排序 /// </summary> public int Sort { get; set; } /// <summary> /// 编号 /// </summary> [MaxLength(128)] FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs
New file @@ -0,0 +1,134 @@ using Mapster; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 查询灵工分页列表数据 /// </summary> [Resource([EnumResourceController.UserResume])] public class GetUserResumesQuery : PagedListQuery<GetUserResumesQueryResult, GetUserResumesQueryResultItem> { public GetUserResumesQuery() { UserExpectJobs = []; UserCredentials = []; } /// <summary> /// 期望岗位编号 /// </summary> public List<string> UserExpectJobs { get; set; } /// <summary> /// 性别 /// </summary> public EnumUserGender? Gender { get; set; } /// <summary> /// 身份编号 /// </summary> public string PersonalIdentityCode { get; set; } /// <summary> /// 年龄范围最小 /// </summary> public int? AgeMin { get; set; } /// <summary> /// 年龄范围大 /// </summary> public int? AgeMax { get; set; } /// <summary> /// 资格证书编号 /// </summary> public List<string> UserCredentials { get; set; } } /// <summary> /// 查询灵工分页列表数据-结果 /// </summary> public class GetUserResumesQueryResult : PagedListQueryResult<GetUserResumesQueryResultItem> { } /// <summary> /// 查询灵工分页列表数据-结果-项 /// </summary> public class GetUserResumesQueryResultItem { /// <summary> /// 用户Id /// </summary> public Guid Id { get; set; } /// <summary> /// 头像 /// </summary> public string Avatar { get; set; } /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 性别 /// </summary> public EnumUserGender? Gender { get; set; } /// <summary> /// 是否实名 /// </summary> public bool IsReal { get; set; } /// <summary> /// 年龄 /// </summary> public int? Age { get; set; } /// <summary> /// 身份编号 /// </summary> public string PersonalIdentityCode { get; set; } /// <summary> /// 身份 /// </summary> public string PersonalIdentityContent { get; set; } /// <summary> /// 学历编号 /// </summary> public string EducationalBackgroundCode { get; set; } /// <summary> /// 学历 /// </summary> public string EducationalBackgroundContent { get; set; } /// <summary> /// 上岗次数 /// </summary> [AdaptIgnore] public int TaskCount { get; set; } /// <summary> /// 工作资历 /// </summary> public string WorkSeniority { get; set; } /// <summary> /// 工作经验 /// </summary> public string WorkExperience { get; set; } } } FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs
@@ -1,5 +1,4 @@ using FlexJobApi.Core.Enums.Users; using MediatR; using MediatR; using System; using System.Collections.Generic; using System.Linq; FlexJobApi.Core/Utils/DbUtils/SelectQuery.cs
@@ -35,6 +35,6 @@ /// <summary> /// 数据 /// </summary> public object Data { get; set; } public TData Data { get; set; } } } FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -84,7 +84,7 @@ } if (request.HireStatus.IsNotNull() && logier.Type == EnumUserType.Personal) { q = q.Where(it => it.Users.Any(u => u.UserId == logier.Id && request.HireStatus.Contains(u.HireStatus))); q = q.Where(it => it.TaskInfoUsers.Any(u => u.UserId == logier.Id && request.HireStatus.Contains(u.HireStatus))); } var count = new GetTaskInfosQueryResultObjectData @@ -139,7 +139,7 @@ AddressDetail = t.AddressDetail, Latitude = t.Latitude, Longitude = t.Longitude, UserCount = t.Users.Count(), UserCount = t.TaskInfoUsers.Count(tu => tu.SignContractStatus == EnumTaskUserSignContractStatus.Pass), Status = t.Status, BeginTime = t.BeginTime, EndTime = t.EndTime, @@ -149,7 +149,7 @@ RecommendStatus = t.RecommendStatus, SettlementStatus = t.SettlementStatus, HireStatus = logier != null ? t.Users.Where(it => it.UserId == logier.Id).Select(u => u.HireStatus).FirstOrDefault() ? t.TaskInfoUsers.Where(it => it.UserId == logier.Id).Select(u => u.HireStatus).FirstOrDefault() : null }; var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -539,6 +539,14 @@ 用户简历查询处理器 </summary> </member> <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumesQuery,System.Threading.CancellationToken)"> <summary> 查询灵工分页列表数据 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeQuery,System.Threading.CancellationToken)"> <summary> 查询用户简历 FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs
@@ -18,6 +18,7 @@ public class UserResumeQueryHandler( IRepository<User> rep ) : IRequestHandler<GetUserResumesQuery, GetUserResumesQueryResult>, IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult>, IRequestHandler<GetUserResumePersonalQuery, GetUserResumePersonalQueryResult>, IRequestHandler<GetUserResumeJobSeekingQuery, GetUserResumeJobSeekingQueryResult>, @@ -29,6 +30,66 @@ private readonly IRepository<User> rep = rep; /// <summary> /// 查询灵工分页列表数据 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<GetUserResumesQueryResult> Handle(GetUserResumesQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); var q = rep.AsQueryable().AsNoTracking(); if (request.UserExpectJobs.IsNotNull()) { q = q.Where(it => it.UserExpectJobs.Any(j => request.UserExpectJobs.Contains(j.ExpectJobCode) || j.ExpectJob.ParentId.HasValue && (request.UserExpectJobs.Contains(j.ExpectJob.Parent.Code)))); } if (request.Gender.HasValue) { q = q.Where(it => it.Gender == request.Gender); } if (request.PersonalIdentityCode.IsNotNull()) { q = q.Where(it => it.PersonalIdentityCode == request.PersonalIdentityCode); } if (request.AgeMin.HasValue) { q = q.Where(it => it.Age >= request.AgeMin); } if (request.AgeMax.HasValue) { q = q.Where(it => it.Age <= request.AgeMax); } if (request.UserCredentials.IsNotNull()) { q = q.Where(it => it.UserCredentials.Any(c => request.UserCredentials.Contains(c.TypeCode))); } var s = q.Select(it => new GetUserResumesQueryResultItem { Id = it.Id, Avatar = it.Avatar, Name = it.Name, Gender = it.Gender, IsReal = it.IsReal, Age = it.Age, PersonalIdentityCode = it.PersonalIdentityCode, PersonalIdentityContent = it.PersonalIdentity.Content, EducationalBackgroundCode = it.EducationalBackgroundCode, EducationalBackgroundContent = it.EducationalBackground.Content, TaskCount = it.TaskInfoUsers.Count(tu => tu.SignContractStatus == EnumTaskUserSignContractStatus.Pass), WorkSeniority = it.WorkSeniority, WorkExperience = it.WorkExperience }); var result = await request.PageModel.GetPagedListAsync<GetUserResumesQueryResult, GetUserResumesQueryResultItem>(s, cancellationToken); return result; } /// <summary> /// 查询用户简历 /// </summary> /// <param name="request"></param>