sunpengfei
2025-08-11 548e3c340da68d88122a90584d1e781e60f5f02e
feat:开发
1个文件已添加
8个文件已修改
308 ■■■■■ 已修改文件
FlexJobApi.Core/FlexJobApi.Core.xml 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();