sunpengfei
2025-08-11 1d2953530fc3019ffc2bbe71f4de2ab7820fe528
feat:开发
2个文件已添加
13个文件已修改
700 ■■■■■ 已修改文件
FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/UserServer/Users/User.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Enums/Users/EnumUserRealMethod.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/DbUtils/SelectQuery.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>