sunpengfei
2025-08-13 94161f59f85ab482f283aaf861d7109bef326980
feat:开发
5个文件已添加
1 文件已重命名
6个文件已修改
795 ■■■■■ 已修改文件
FlexJobApi.Core/FlexJobApi.Core.xml 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -3743,6 +3743,36 @@
            Cron表达式
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.CheckReceiveTaskCommand">
            <summary>
            任务验收
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.CheckReceiveTaskCommand.Id">
            <summary>
            提交Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.CheckReceiveTaskCommand.CheckReceiveStatus">
            <summary>
            验收状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.SubmitCheckReceiveTaskCommand">
            <summary>
            任务提交验收
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.SubmitCheckReceiveTaskCommand.TaskInfoId">
            <summary>
            任务Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.SubmitCheckReceiveTaskCommand.Files">
            <summary>
            附件
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskQuery">
            <summary>
            查询验收任务详情
@@ -3970,6 +4000,41 @@
            最近验收时间
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQuery">
            <summary>
            查询验收提交详情
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQuery.Id">
            <summary>
            提交Id
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult">
            <summary>
            查询验收提交详情-结果
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.Id">
            <summary>
            提交Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.TaskInfoUserEnterpriseEmployeeUser">
            <summary>
            人员信息
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.CreatedTime">
            <summary>
            提交时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.Files">
            <summary>
            验收照片
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQuery">
            <summary>
            查询验收详情
@@ -3983,6 +4048,97 @@
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResult">
            <summary>
            查询验收详情-结果
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResult.ObjectData">
            <summary>
            详情
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectData">
            <summary>
            查询验收详情-结果-详情
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectData.TaskInfo">
            <summary>
            任务信息
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectData.EnterpriseEmployeeUser">
            <summary>
            人员信息
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo">
            <summary>
            查询验收详情-结果-详情-任务信息
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.Name">
            <summary>
            任务名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.BeginTime">
            <summary>
            任务开始时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.EndTime">
            <summary>
            任务结束时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.AddressName">
            <summary>
            任务地点名称
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser">
            <summary>
            查询验收详情-结果-详情-人员信息
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Avatar">
            <summary>
            头像
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Name">
            <summary>
            姓名
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Identity">
            <summary>
            身份证号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Gender">
            <summary>
            性别
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Age">
            <summary>
            年龄
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.ContactPhoneNumber">
            <summary>
            手机号
            </summary>
            <remarks>联系电话</remarks>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.IsReal">
            <summary>
            是否实名
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.RealMethod">
            <summary>
            实名方式
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultItem">
@@ -4140,6 +4296,71 @@
            发布状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetOpenTaskInfosQuery">
            <summary>
            查询开放任务分页列表
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.Keywords">
            <summary>
            关键字(任务名称)
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.EnterpriseId">
            <summary>
            企业Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.BeginTime">
            <summary>
            发布时间-开始
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.EndTime">
            <summary>
            发布时间-结束
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.CityCode">
            <summary>
            任务地点所属城市编号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.SettlementCycle">
            <summary>
            结算方式
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.BenefitCodes">
            <summary>
            员工福利
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.GenderLimit">
            <summary>
            性别要求
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.Status">
            <summary>
            任务状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.ReleaseStatus">
            <summary>
            发布状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.RecommendStatus">
            <summary>
            推荐状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.CheckReceiveStatus">
            <summary>
            验收状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalApplyTaskInfosQuery">
            <summary>
            我的报名分页列表
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs
New file
@@ -0,0 +1,26 @@
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.TaskCheckReceive])]
    public class CheckReceiveTaskCommand : IRequest<Guid>
    {
        /// <summary>
        /// 提交Id
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        /// 验收状态
        /// </summary>
        public EnumTaskUserSubmitCheckReceiveStatus CheckReceiveStatus { get; set; }
    }
}
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs
New file
@@ -0,0 +1,31 @@
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.TaskCheckReceive])]
    public class SubmitCheckReceiveTaskCommand : IRequest<Guid>
    {
        public SubmitCheckReceiveTaskCommand()
        {
            Files = [];
        }
        /// <summary>
        /// 任务Id
        /// </summary>
        public Guid TaskInfoId { get; set; }
        /// <summary>
        /// 附件
        /// </summary>
        public List<string> Files { get; set; }
    }
}
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs
New file
@@ -0,0 +1,49 @@
using MediatR;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 查询验收提交详情
    /// </summary>
    [Resource([EnumResourceController.TaskCheckReceive])]
    public class GetCheckReceiveTaskUserSubmitQuery : IRequest<GetCheckReceiveTaskUserSubmitQueryResult>
    {
        /// <summary>
        /// 提交Id
        /// </summary>
        public Guid Id { get; set; }
    }
    /// <summary>
    /// 查询验收提交详情-结果
    /// </summary>
    public class GetCheckReceiveTaskUserSubmitQueryResult
    {
        /// <summary>
        /// 提交Id
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        /// 人员信息
        /// </summary>
        [JsonProperty("enterpriseEmployeeUser")]
        public GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser TaskInfoUserEnterpriseEmployeeUser { get; set; }
        /// <summary>
        /// 提交时间
        /// </summary>
        public DateTimeOffset CreatedTime { get; set; }
        /// <summary>
        /// 验收照片
        /// </summary>
        public List<string> Files { get; set; }
    }
}
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs
@@ -25,7 +25,99 @@
    /// </summary>
    public class GetCheckReceiveTaskUserSubmitsQueryResult : PagedListQueryResult<GetCheckReceiveTaskUserSubmitsQueryResultItem>
    {
        /// <summary>
        /// 详情
        /// </summary>
        public GetCheckReceiveTaskUserSubmitsQueryResultObjectData ObjectData { get; set; }
    }
    /// <summary>
    /// 查询验收详情-结果-详情
    /// </summary>
    public class GetCheckReceiveTaskUserSubmitsQueryResultObjectData
    {
        /// <summary>
        /// 任务信息
        /// </summary>
        public GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo TaskInfo { get; set; }
        /// <summary>
        /// 人员信息
        /// </summary>
        public GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser EnterpriseEmployeeUser { get; set; }
    }
    /// <summary>
    /// 查询验收详情-结果-详情-任务信息
    /// </summary>
    public class GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo
    {
        /// <summary>
        /// 任务名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 任务开始时间
        /// </summary>
        public DateTime BeginTime { get; set; }
        /// <summary>
        /// 任务结束时间
        /// </summary>
        public DateTime EndTime { get; set; }
        /// <summary>
        /// 任务地点名称
        /// </summary>
        public string AddressName { get; set; }
    }
    /// <summary>
    /// 查询验收详情-结果-详情-人员信息
    /// </summary>
    public class GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser
    {
        /// <summary>
        /// 头像
        /// </summary>
        public string Avatar { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 身份证号
        /// </summary>
        public string Identity { get; set; }
        /// <summary>
        /// 性别
        /// </summary>
        public EnumUserGender? Gender { get; set; }
        /// <summary>
        /// 年龄
        /// </summary>
        public int? Age { get; set; }
        /// <summary>
        /// 手机号
        /// </summary>
        /// <remarks>联系电话</remarks>
        public string ContactPhoneNumber { get; set; }
        /// <summary>
        /// 是否实名
        /// </summary>
        public bool IsReal { get; set; }
        /// <summary>
        /// 实名方式
        /// </summary>
        public EnumUserRealMethod? RealMethod { get; set; }
    }
    /// <summary>
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs
New file
@@ -0,0 +1,81 @@
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.Task], AllowAnonymous = true)]
    public class GetOpenTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>
    {
        public GetOpenTaskInfosQuery()
        {
            BenefitCodes = [];
        }
        /// <summary>
        /// 关键字(任务名称)
        /// </summary>
        public string Keywords { get; set; }
        /// <summary>
        /// 企业Id
        /// </summary>
        public Guid? EnterpriseId { get; set; }
        /// <summary>
        /// 发布时间-开始
        /// </summary>
        public DateTime? BeginTime { get; set; }
        /// <summary>
        /// 发布时间-结束
        /// </summary>
        public DateTime? EndTime { get; set; }
        /// <summary>
        /// 任务地点所属城市编号
        /// </summary>
        public string CityCode { get; set; }
        /// <summary>
        /// 结算方式
        /// </summary>
        public EnumSettlementCycle? SettlementCycle { get; set; }
        /// <summary>
        /// 员工福利
        /// </summary>
        public List<string> BenefitCodes { get; set; }
        /// <summary>
        /// 性别要求
        /// </summary>
        public EnumUserGender? GenderLimit { get; set; }
        /// <summary>
        /// 任务状态
        /// </summary>
        public EnumTaskStatus? Status { get; set; }
        /// <summary>
        /// 发布状态
        /// </summary>
        public EnumTaskReleaseStatus? ReleaseStatus { get; set; }
        /// <summary>
        /// 推荐状态
        /// </summary>
        public EnumTaskRecommendStatus? RecommendStatus { get; set; }
        /// <summary>
        /// 验收状态
        /// </summary>
        public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; }
    }
}
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
@@ -10,7 +10,7 @@
    /// <summary>
    /// 查询任务分页列表
    /// </summary>
    [Resource([EnumResourceController.Task], AllowAnonymous = true)]
    [Resource([EnumResourceController.Task])]
    public class GetTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>
    {
        public GetTaskInfosQuery()
FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
@@ -4,17 +4,43 @@
        <name>FlexJobApi.FlexJobServer.Application</name>
    </assembly>
    <members>
        <member name="T:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler">
        <member name="T:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler">
            <summary>
            任务人员查询处理器
            任务验收命令处理器
            </summary>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser})">
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUserSubmit})">
            <summary>
            任务人员查询处理器
            任务验收命令处理器
            </summary>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTasksQuery,System.Threading.CancellationToken)">
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler.Handle(FlexJobApi.Core.SubmitCheckReceiveTaskCommand,System.Threading.CancellationToken)">
            <summary>
            任务提交验收
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler.Handle(FlexJobApi.Core.CheckReceiveTaskCommand,System.Threading.CancellationToken)">
            <summary>
            任务验收
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="T:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler">
            <summary>
            任务验收查询处理器
            </summary>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUserSubmit})">
            <summary>
            任务验收查询处理器
            </summary>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTasksQuery,System.Threading.CancellationToken)">
            <summary>
            查询验收任务分页列表
            </summary>
@@ -22,9 +48,25 @@
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskQuery,System.Threading.CancellationToken)">
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskQuery,System.Threading.CancellationToken)">
            <summary>
            查询验收任务详情
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQuery,System.Threading.CancellationToken)">
            <summary>
            查询验收详情
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQuery,System.Threading.CancellationToken)">
            <summary>
            查询验收提交详情
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
@@ -91,6 +133,14 @@
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskInfoQueryHandler.Handle(FlexJobApi.Core.GetOpenTaskInfosQuery,System.Threading.CancellationToken)">
            <summary>
            查询开放任务分页列表
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskInfoQueryHandler.Handle(FlexJobApi.Core.GetTaskInfosQuery,System.Threading.CancellationToken)">
            <summary>
            查询任务分页列表
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
New file
@@ -0,0 +1,156 @@
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.FlexJobServer.Application
{
    /// <summary>
    /// 任务验收命令处理器
    /// </summary>
    public class TaskCheckReceiveCommandHandler(
            IRepository<TaskInfo> repTaskInfo,
            IRepository<TaskInfoUser> repTaskInfoUser,
            IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit
        ) :
        IRequestHandler<SubmitCheckReceiveTaskCommand, Guid>,
        IRequestHandler<CheckReceiveTaskCommand, Guid>
    {
        private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo;
        private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser;
        private readonly IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit = repTaskInfoUserSubmit;
        /// <summary>
        /// 任务提交验收
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        [UnitOfWork]
        public async Task<Guid> Handle(SubmitCheckReceiveTaskCommand request, CancellationToken cancellationToken)
        {
            var now = DateTime.Now;
            var logier = JwtUtils.GetCurrentLogier();
            var task = await repTaskInfo.AsQueryable()
                .FirstOrDefaultAsync(it => it.Id == request.TaskInfoId, cancellationToken);
            if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "该任务");
            if (task.Status == EnumTaskStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "该任务暂未安排人员");
            if (task.ReleaseStatus == EnumTaskReleaseStatus.Stopped) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (!(task.BeginTime <= now && now <= task.EndTime)) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            var taskUser = await repTaskInfoUser.AsQueryable()
                .FirstOrDefaultAsync(it => it.TaskInfoId == task.Id && it.EnterpriseEmployee.UserId == logier.Id, cancellationToken);
            if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "该报名信息");
            if (taskUser.ArrangeStatus == EnumTaskUserArrangeStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "暂未安排该任务");
            task.LastSubmitTime = now;
            taskUser.LastSubmitTime = now;
            var submit = await repTaskInfoUserSubmit.AsQueryable()
                .Include(it => it.Files)
                .FirstOrDefaultAsync(it => it.TaskInfoUserId == taskUser.Id && it.Date == now.Date);
            if (submit == null)
            {
                submit = new TaskInfoUserSubmit
                {
                    TaskInfoUserId = taskUser.Id,
                    Date = now.Date,
                    Files = request.Files.Select(it => new TaskInfoUserSubmitFile
                    {
                        File = it
                    }).ToList(),
                    CreatedTime = now,
                    CheckReceiveStatus = EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive,
                };
                await repTaskInfoUserSubmit.InsertAsync(submit);
                return submit.Id;
            }
            else if (submit.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success)
            {
                throw Oops.Oh(EnumErrorCodeType.s510, "验收已完成,无法修改");
            }
            else
            {
                submit.Files = request.Files.Select(it => new TaskInfoUserSubmitFile
                {
                    File = it
                }).ToList();
                submit.CheckReceiveStatus = EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive;
                submit.CreatedTime = now;
                await repTaskInfoUserSubmit.UpdateAsync(submit);
                return submit.Id;
            }
        }
        /// <summary>
        /// 任务验收
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        [UnitOfWork]
        public async Task<Guid> Handle(CheckReceiveTaskCommand request, CancellationToken cancellationToken)
        {
            var now = DateTime.Now;
            var logier = JwtUtils.GetCurrentLogier();
            var submit = await repTaskInfoUserSubmit.AsQueryable()
                .Include(it => it.Files)
                .FirstOrDefaultAsync(it => it.Id == request.Id);
            if (submit == null) throw Oops.Oh(EnumErrorCodeType.s404, "该提交信息");
            var taskUser = await repTaskInfoUser.AsQueryable()
                .FirstOrDefaultAsync(it => it.Id == submit.TaskInfoUserId, cancellationToken);
            if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "该灵工信息");
            if (taskUser.ArrangeStatus == EnumTaskUserArrangeStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "未安排该灵工");
            var task = await repTaskInfo.AsQueryable()
                .FirstOrDefaultAsync(it => it.Id == taskUser.TaskInfoId && it.EnterpriseId == logier.EnterpriseId, cancellationToken);
            if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "该任务");
            if (task.Status == EnumTaskStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "该任务暂未安排人员");
            if (task.ReleaseStatus == EnumTaskReleaseStatus.Stopped) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (!(task.BeginTime <= now && now <= task.EndTime)) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Success
                && request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Fail)
                throw Oops.Oh(EnumErrorCodeType.s400, "请选择正确的验收状态");
            submit.CheckReceiveStatus = request.CheckReceiveStatus;
            submit.CheckReceiveTime = now;
            taskUser.LastCheckReceiveTime = now;
            task.LastCheckReceiveTime = now;
            var dates = new List<DateTime>();
            for (DateTime i = task.BeginTime.Date; i <= task.EndTime.Date; i = i.AddDays(1))
            {
                dates.Add(i);
            }
            var taskUserSubmitDates = await repTaskInfoUserSubmit.AsQueryable().AsNoTracking()
                .Where(it =>
                    it.TaskInfoUserId == taskUser.Id
                    && it.Id != submit.Id
                    && (it.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success
                    || it.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail))
                .Select(it => it.Date)
                .ToListAsync();
            taskUserSubmitDates.Add(now.Date);
            if (dates.All(taskUserSubmitDates.Contains))
            {
                taskUser.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Completed;
            }
            var taskUserCheckReceiveStatuses = await repTaskInfoUser.AsQueryable().AsNoTracking()
                .Where(it =>
                    it.TaskInfoId == task.Id
                    && it.Id != taskUser.Id)
                .Select(it => it.CheckReceiveStatus)
                .ToListAsync();
            taskUserCheckReceiveStatuses.Add(EnumTaskCheckReceiveStatus.Completed);
            if (taskUserCheckReceiveStatuses.All(it => it == EnumTaskCheckReceiveStatus.Completed))
            {
                task.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Completed;
            }
            await repTaskInfoUserSubmit.UpdateAsync(submit);
            return submit.Id;
        }
    }
}
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs
File was renamed from FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskUserSubmitQueryHandler.cs
@@ -13,16 +13,20 @@
namespace FlexJobApi.FlexJobServer.Application
{
    /// <summary>
    /// 任务人员查询处理器
    /// 任务验收查询处理器
    /// </summary>
    public class TaskUserSubmitQueryHandler(
    public class TaskCheckReceiveQueryHandler(
        IRepository<TaskInfo> repTaskInfo,
        IRepository<TaskInfoUser> repTaskInfoUser) :
        IRepository<TaskInfoUser> repTaskInfoUser,
        IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit) :
        IRequestHandler<GetCheckReceiveTasksQuery, GetCheckReceiveTasksQueryResult>,
        IRequestHandler<GetCheckReceiveTaskQuery, GetCheckReceiveTaskQueryResult>
        IRequestHandler<GetCheckReceiveTaskQuery, GetCheckReceiveTaskQueryResult>,
        IRequestHandler<GetCheckReceiveTaskUserSubmitsQuery, GetCheckReceiveTaskUserSubmitsQueryResult>,
        IRequestHandler<GetCheckReceiveTaskUserSubmitQuery, GetCheckReceiveTaskUserSubmitQueryResult>
    {
        private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo;
        private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser;
        private readonly IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit = repTaskInfoUserSubmit;
        /// <summary>
        /// 查询验收任务分页列表
@@ -58,14 +62,16 @@
                q = q.Where(it =>
                    it.TaskInfoUsers.Any(tu =>
                        tu.EnterpriseEmployee.UserId == logier.Id
                        && tu.Submits.Any(s =>
                        && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit
                        ? !tu.Submits.Any(s => s.Date.Date == request.Date.Value.Date)
                        : tu.Submits.Any(s =>
                            s.Date.Date == request.Date.Value.Date
                            && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit
                            ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit
                            : request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive
                            ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
                            : (s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success
                            || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail)))));
                            || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail))))));
            }
            else
            {
@@ -120,7 +126,50 @@
                LastSubmitTime = it.LastSubmitTime,
            });
            var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskQueryResult, GetCheckReceiveTaskQueryResultItem>(s, cancellationToken);
            result.ObjectData = await repTaskInfo.AsQueryable().AsNoTracking()
                .Where(it => it.Id == request.TaskInfoId)
                .GetDetail<TaskInfo, GetCheckReceiveTaskQueryResultObjectData>();
            return result;
        }
        /// <summary>
        /// 查询验收详情
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<GetCheckReceiveTaskUserSubmitsQueryResult> Handle(GetCheckReceiveTaskUserSubmitsQuery request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var q = repTaskInfoUserSubmit.AsQueryable().AsNoTracking()
                .OrderByDescending(it => it.CreatedTime)
                .Where(it => it.TaskInfoUserId == request.Id);
            var s = q.Select(it => new GetCheckReceiveTaskUserSubmitsQueryResultItem
            {
                Id = it.Id,
                CreatedTime = it.CreatedTime,
                Files = it.Files.Select(f => f.File).ToList(),
                CheckReceiveStatus = it.CheckReceiveStatus,
                CheckReceiveTime = it.CheckReceiveTime,
            });
            var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserSubmitsQueryResult, GetCheckReceiveTaskUserSubmitsQueryResultItem>(s, cancellationToken);
            result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking()
                .Where(it => it.Id == request.Id)
                .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>();
            return result;
        }
        /// <summary>
        /// 查询验收提交详情
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task<GetCheckReceiveTaskUserSubmitQueryResult> Handle(GetCheckReceiveTaskUserSubmitQuery request, CancellationToken cancellationToken)
        {
            return repTaskInfoUserSubmit.AsQueryable().AsNoTracking()
                .Where(it => it.Id == request.Id)
                .GetDetail<TaskInfoUserSubmit, GetCheckReceiveTaskUserSubmitQueryResult>();
        }
    }
}
FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs
@@ -114,6 +114,7 @@
                entity.ArrangeTime = DateTime.Now;
                entity.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitSubmit;
                entity.TaskInfo.Status = EnumTaskStatus.Complete;
                entity.TaskInfo.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitSubmit;
            }
            await rep.UpdateAsync(entity);
            return entity.Id;
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -20,6 +20,7 @@
            IRepository<DictionaryData> repDictionaryData
        ) :
        IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>,
        IRequestHandler<GetOpenTaskInfosQuery, GetTaskInfosQueryResult>,
        IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult>,
        IRequestHandler<GetPersonalApplyTaskInfosQuery, GetPersonalApplyTaskInfosQueryResult>,
        IRequestHandler<GetPersonalHireTaskInfosQuery, GetPersonalHireTaskInfosQueryResult>,
@@ -84,6 +85,17 @@
                    .AnyAsync(it => it.TaskInfoId == request.Id && it.UserId == logier.Id);
            }
            return model;
        }
        /// <summary>
        /// 查询开放任务分页列表
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task<GetTaskInfosQueryResult> Handle(GetOpenTaskInfosQuery request, CancellationToken cancellationToken)
        {
            return Handle(request.Adapt<GetTaskInfosQuery>(), cancellationToken);
        }
        /// <summary>
@@ -338,5 +350,6 @@
            });
            return await request.PageModel.GetPagedListAsync<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>(s, cancellationToken);
        }
    }
}