sunpengfei
2025-08-12 234b9a97eabe4fc6ebd52204ffdd575023a1736f
feat:开发
1个文件已添加
11个文件已修改
438 ■■■■ 已修改文件
FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/UserServer/Users/User.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Enums/Tasks/EnumTaskUserArrangeStatus.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
@@ -4,11 +4,13 @@
using Mapster;
using MediatR;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace FlexJobApi.CommonServer.Application
{
@@ -74,55 +76,57 @@
        /// <returns></returns>
        public async Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken)
        {
            var models = await request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>(
                it => it.Code,
                it => it.Content,
                q =>
                {
                    q = q
                        .OrderBy(it => it.Sort)
                        .Where(it => !it.IsDisabled);
                    if (request.All != true)
                    {
                        q = q.Where(it => it.ParentId == request.ParentId);
                    }
                    if (request.MaxDeep.HasValue)
                    {
                        q = q.Where(it => it.Deep <= request.MaxDeep);
                    }
                    if (request.Keywords.IsNotNull())
                    {
                        q = q.Where(it =>
                            it.Code.Contains(request.Keywords)
                            || it.Content.Contains(request.Keywords)
                            || it.Field1.Contains(request.Keywords)
                            || it.Field2.Contains(request.Keywords)
                            || it.Field3.Contains(request.Keywords)
                            || it.Field4.Contains(request.Keywords)
                            || it.Field5.Contains(request.Keywords));
                    }
                    if (request.CategoryId.HasValue)
                    {
                        q = q.Where(it => it.CategoryId == request.CategoryId);
                    }
                    else if (request.CategoryCode.IsNotNull())
                    {
                        q = q.Where(it => it.Category.Code == request.CategoryCode);
                    }
                    else
                    {
                        throw Oops.Oh(EnumErrorCodeType.s400, "请填写类别Id或编号");
                    }
                    return q;
                },
                cancellationToken);
            var sql = @"SELECT d.* FROM DictionaryData d
INNER JOIN DictionaryCategory c ON d.CategoryId = c.Id
WHERE d.IsDisabled = 0";
            if (request.All != true)
            {
                sql += " AND d.ParentId = @ParentId";
            }
            if (request.MaxDeep.HasValue)
            {
                sql += " AND d.Deep <= @MaxDeep";
            }
            if (request.Keywords.IsNotNull())
            {
                sql += @" AND (d.Code LIKE @Keywords
OR d.Content LIKE @Keywords
OR d.Field1 LIKE @Keywords
OR d.Field2 LIKE @Keywords
OR d.Field3 LIKE @Keywords
OR d.Field4 LIKE @Keywords
OR d.Field5 LIKE @Keywords)";
            }
            if (request.CategoryId.HasValue)
            {
                sql += " AND d.CategoryId = @CategoryId";
            }
            else if (request.CategoryCode.IsNotNull())
            {
                sql += " AND c.Code = @CategoryCode";
            }
            else
            {
                throw Oops.Oh(EnumErrorCodeType.s400, "请填写类别Id或编号");
            }
            sql += " ORDER BY d.Sort";
            var models = await rep.SqlQueriesAsync<GetDictionaryDataSelectQueryResultOption>(sql, request, cancellationToken);
            var options = new List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>();
            foreach (var model in models)
            {
                var option = new SelectOption<string, GetDictionaryDataSelectQueryResultOption>();
                option.Data = model;
                option.Value = model.Code;
                option.Label = model.Content;
                options.Add(option);
            }
            if (request.WithChildren)
            {
                var parents = models.Where(it => it.Data.ParentId == null).ToList();
                LoopChildrens(parents, models);
                var parents = options.Where(it => it.Data.ParentId == null).ToList();
                LoopChildrens(parents, options);
                return parents;
            }
            return models;
            return options;
        }
        /// <summary>
FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
@@ -42,13 +42,38 @@
        public DateTime? HireTime { get; set; }
        /// <summary>
        /// 签约状态
        /// 灵工签约状态
        /// </summary>
        public EnumTaskUserSignContractStatus? SignContractStatus { get; set; }
        public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; }
        /// <summary>
        /// 签约时间
        /// 灵工签约时间
        /// </summary>
        public DateTime? SignContractTime { get; set; }
        public DateTime? UserSignContractTime { get; set; }
        /// <summary>
        /// 企业签约状态
        /// </summary>
        public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; }
        /// <summary>
        /// 企业签约时间
        /// </summary>
        public DateTime? EnterpriseSignContractTime { get; set; }
        /// <summary>
        /// 电子合同
        /// </summary>
        public string ContractUrl { get; set; }
        /// <summary>
        /// 安排状态
        /// </summary>
        public EnumTaskUserArrangeStatus? ArrangeStatus { get; set; }
        /// <summary>
        /// 安排状态
        /// </summary>
        public DateTime? ArrangeTime { get; set; }
    }
}
FlexJobApi.Core/Entities/UserServer/Users/User.cs
@@ -123,6 +123,11 @@
        public bool IsReal { get; set; }
        /// <summary>
        /// 实名时间
        /// </summary>
        public DateTime? RealTime { get; set; }
        /// <summary>
        /// 实名方式
        /// </summary>
        public EnumUserRealMethod? RealMethod { get; set; }
FlexJobApi.Core/Enums/Tasks/EnumTaskUserArrangeStatus.cs
New file
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 任务用户安排状态
    /// </summary>
    public enum EnumTaskUserArrangeStatus
    {
        /// <summary>
        /// 未安排
        /// </summary>
        Wait = 10,
        /// <summary>
        /// 已安排
        /// </summary>
        Complete = 20
    }
}
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -939,14 +939,39 @@
            录用时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.TaskInfoUser.SignContractStatus">
        <member name="P:FlexJobApi.Core.TaskInfoUser.UserSignContractStatus">
            <summary>
            签约状态
            灵工签约状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.TaskInfoUser.SignContractTime">
        <member name="P:FlexJobApi.Core.TaskInfoUser.UserSignContractTime">
            <summary>
            签约时间
            灵工签约时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.TaskInfoUser.EnterpriseSignContractStatus">
            <summary>
            企业签约状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.TaskInfoUser.EnterpriseSignContractTime">
            <summary>
            企业签约时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.TaskInfoUser.ContractUrl">
            <summary>
            电子合同
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.TaskInfoUser.ArrangeStatus">
            <summary>
            安排状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.TaskInfoUser.ArrangeTime">
            <summary>
            安排状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.UserTaskCollect">
@@ -1775,6 +1800,11 @@
            是否实名
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.User.RealTime">
            <summary>
            实名时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.User.RealMethod">
            <summary>
            实名方式
@@ -2492,6 +2522,21 @@
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumTaskStatus.Complete">
            <summary>
            已安排
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.EnumTaskUserArrangeStatus">
            <summary>
            任务用户安排状态
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumTaskUserArrangeStatus.Wait">
            <summary>
            未安排
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.EnumTaskUserArrangeStatus.Complete">
            <summary>
            已安排
            </summary>
@@ -3675,6 +3720,11 @@
        <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.EnterpriseEnterpriseName">
            <summary>
            企业全称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.EnterpriseContactPhoneNumber">
            <summary>
            联系电话
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.TaskCount">
@@ -6204,6 +6254,56 @@
            经历
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CreatedTime">
            <summary>
            报名时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.HireStatus">
            <summary>
            录用状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.HireTime">
            <summary>
            录用时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ArrangeStatus">
            <summary>
            安排状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ArrangeTime">
            <summary>
            安排状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserSignContractStatus">
            <summary>
            灵工签约状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserSignContractTime">
            <summary>
            灵工签约时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EnterpriseSignContractStatus">
            <summary>
            企业签约状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EnterpriseSignContractTime">
            <summary>
            企业签约时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ContractUrl">
            <summary>
            电子合同
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetUserResumeQueryResultExpectJob">
            <summary>
            查询用户简历-结果
@@ -6405,6 +6505,16 @@
            </summary>
            <remarks>联系电话</remarks>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Identity">
            <summary>
            身份证号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Age">
            <summary>
            年龄
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Gender">
            <summary>
            性别
@@ -6415,9 +6525,9 @@
            是否实名
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Age">
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.RealTime">
            <summary>
            年龄
            实名时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.PersonalIdentityCode">
@@ -6460,6 +6570,41 @@
            录用状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.HireTime">
            <summary>
            录用时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.ArrangeStatus">
            <summary>
            安排状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.ArrangeTime">
            <summary>
            安排状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.UserSignContractStatus">
            <summary>
            灵工签约状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.UserSignContractTime">
            <summary>
            灵工签约时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EnterpriseSignContractStatus">
            <summary>
            企业签约状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EnterpriseSignContractTime">
            <summary>
            企业签约时间
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQuery">
            <summary>
            查询用户简历-工作经验
FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs
@@ -51,7 +51,15 @@
        /// <summary>
        /// 子级
        /// </summary>
        public List<GetAreaSelectQueryResultOption> Children => Data.Children.Adapt<List<GetAreaSelectQueryResultOption>>();
        public List<GetAreaSelectQueryResultOption> Children
        {
            get
            {
                var children = Data.Children.Adapt<List<GetAreaSelectQueryResultOption>>();
                if (children.IsNull()) return null;
                else return children;
            }
        }
        /// <summary>
        /// Id
FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
@@ -53,7 +53,7 @@
    {
        public GetDictionaryDataSelectQueryResultOption()
        {
            Children = [];
        }
        /// <summary>
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
@@ -185,6 +185,57 @@
        /// 经历
        /// </summary>
        public List<GetUserResumeQueryResultExperience> TaskInfoUsers { get; set; }
        /// <summary>
        /// 报名时间
        /// </summary>
        public DateTime? CreatedTime { get; set; }
        /// <summary>
        /// 录用状态
        /// </summary>
        public EnumTaskUserHireStatus? HireStatus { get; set; }
        /// <summary>
        /// 录用时间
        /// </summary>
        public DateTime? HireTime { get; set; }
        /// <summary>
        /// 安排状态
        /// </summary>
        public EnumTaskUserArrangeStatus? ArrangeStatus { get; set; }
        /// <summary>
        /// 安排状态
        /// </summary>
        public DateTime? ArrangeTime { get; set; }
        /// <summary>
        /// 灵工签约状态
        /// </summary>
        public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; }
        /// <summary>
        /// 灵工签约时间
        /// </summary>
        public DateTime? UserSignContractTime { get; set; }
        /// <summary>
        /// 企业签约状态
        /// </summary>
        public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; }
        /// <summary>
        /// 企业签约时间
        /// </summary>
        public DateTime? EnterpriseSignContractTime { get; set; }
        /// <summary>
        /// 电子合同
        /// </summary>
        public string ContractUrl { get; set; }
    }
    /// <summary>
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs
@@ -91,6 +91,16 @@
        public string ContactPhoneNumber { get; set; }
        /// <summary>
        /// 身份证号
        /// </summary>
        public string Identity { get; set; }
        /// <summary>
        /// 年龄
        /// </summary>
        public int? Age { get; set; }
        /// <summary>
        /// 性别
        /// </summary>
        public EnumUserGender? Gender { get; set; }
@@ -101,9 +111,9 @@
        public bool IsReal { get; set; }
        /// <summary>
        /// 年龄
        /// 实名时间
        /// </summary>
        public int? Age { get; set; }
        public DateTime? RealTime { get; set; }
        /// <summary>
        /// 身份编号
@@ -146,5 +156,40 @@
        /// </summary>
        public EnumTaskUserHireStatus? HireStatus { get; set; }
        /// <summary>
        /// 录用时间
        /// </summary>
        public DateTime? HireTime { get; set; }
        /// <summary>
        /// 安排状态
        /// </summary>
        public EnumTaskUserArrangeStatus? ArrangeStatus { get; set; }
        /// <summary>
        /// 安排状态
        /// </summary>
        public DateTime? ArrangeTime { get; set; }
        /// <summary>
        /// 灵工签约状态
        /// </summary>
        public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; }
        /// <summary>
        /// 灵工签约时间
        /// </summary>
        public DateTime? UserSignContractTime { get; set; }
        /// <summary>
        /// 企业签约状态
        /// </summary>
        public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; }
        /// <summary>
        /// 企业签约时间
        /// </summary>
        public DateTime? EnterpriseSignContractTime { get; set; }
    }
}
FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs
@@ -107,7 +107,12 @@
                    entity.HireStatus = request.HireStatus;
                    if (entity.HireStatus == EnumTaskUserHireStatus.Pass)
                    {
                        entity.SignContractStatus = EnumTaskUserSignContractStatus.Pass;
                        entity.HireTime = DateTime.Now;
                        entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass;
                        entity.UserSignContractTime = DateTime.Now;
                        entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass;
                        entity.EnterpriseSignContractTime = DateTime.Now;
                        entity.ArrangeStatus = EnumTaskUserArrangeStatus.Wait;
                    }
                }
                await rep.UpdateAsync(entities);
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -148,7 +148,7 @@
                        AddressDetail = t.AddressDetail,
                        Latitude = t.Latitude,
                        Longitude = t.Longitude,
                        UserCount = t.TaskInfoUsers.Count(tu => tu.SignContractStatus == EnumTaskUserSignContractStatus.Pass),
                        UserCount = t.TaskInfoUsers.Count(),
                        Status = t.Status,
                        BeginTime = t.BeginTime,
                        EndTime = t.EndTime,
FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs
@@ -90,7 +90,10 @@
                WorkExperience = it.WorkExperience,
                HireStatus = request.TaskInfoId.HasValue
                    ? it.TaskInfoUsers.Where(it => it.TaskInfoId == request.TaskInfoId).Select(it => it.HireStatus as EnumTaskUserHireStatus?).FirstOrDefault()
                    : null
                    : null,
                ArrangeStatus = request.TaskInfoId.HasValue
                    ? it.TaskInfoUsers.Where(it => it.TaskInfoId == request.TaskInfoId).Select(it => it.ArrangeStatus).FirstOrDefault()
                    : null,
            });
            var result = await request.PageModel.GetPagedListAsync<GetUserResumesQueryResult, GetUserResumesQueryResultItem>(s, cancellationToken);
            return result;