sunpengfei
2 天以前 5b86cd10f893872da68c040adea52953eb25c4a0
FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -11,6 +11,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TaskInfo = FlexJobApi.Core.TaskInfo;
namespace FlexJobApi.FlexJobServer.Application
{
@@ -18,13 +19,16 @@
    /// 任务人员查询处理器
    /// </summary>
    public class TaskUserQueryHandler(
        IRepository<TaskInfoUser> rep) :
            IRepository<TaskInfoUser> rep,
            IRepository<TaskInfo> repTaskInfo
        ) :
        IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>,
        IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>,
        IRequestHandler<GetTaskUserHireStatusQuery, GetTaskUserHireStatusQueryResult>,
        IRequestHandler<GetSettlementTaskUsersQuery, GetSettlementTaskUsersQueryResult>
    {
        private readonly IRepository<TaskInfoUser> rep = rep;
        private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo;
        /// <summary>
        /// B端查询应聘报名分页列表信息
@@ -169,6 +173,11 @@
        {
            var logier = JwtUtils.GetCurrentLogier();
            var list = new GetSettlementTaskUsersQueryResult();
            list.Detail = await TaskInfoRepository.GetQueryable(repTaskInfo, true, logier)
                .Where(it => it.Id == request.TaskInfoId)
                .GetDetail<TaskInfo, GetSettlementTaskQueryResult>();
            var q = rep.AsQueryable().AsNoTracking()
                .Where(it => it.TaskInfoId == request.TaskInfoId);
            list.Data = q
@@ -184,7 +193,8 @@
                    ReceiveAccount = it.ReceiveAccount,
                    SettlementAmount = it.SettlementAmount,
                    ActualSettlementAmount = it.ActualSettlementAmount,
                    SettlementTime = it.SettlementTime
                    SettlementTime = it.SettlementTime,
                    SettlementStatus = it.SettlementStatus,
                })
                .ToList();
@@ -235,7 +245,7 @@
                    {
                        errors.Add("实发金额不可为负数");
                    }
                    else if (model.ActualSettlementAmount > 0 && model.ActualSettlementAmount < (decimal)0.3)
                    else if (model.ActualSettlementAmount > 0 && model.ActualSettlementAmount < 1)
                    {
                        errors.Add("实发金额不可小于1元");
                    }
@@ -261,6 +271,10 @@
                        item.Bank = model.Bank;
                        item.BankBranch = model.BankBranch;
                    }
                    if (model.TaskName != list.Detail.Name)
                    {
                        errors.Add("任务名称不一致");
                    }
                    if (errors.IsNotNull())
                    {
@@ -284,6 +298,23 @@
                        .Where(it => successList.Any(s => s.Identity == it.Identity))
                        .ToList();
                }
                list.Detail.SettlementOrderStatus = EnumTaskSettlementOrderStatus.Wait;
                list.Detail.SettlementOrderName = request.SettlementOrderUrl.Substring(request.SettlementOrderUrl.LastIndexOf("/") + 1);
                list.Detail.SettlementOrderTime = DateTime.Now;
                list.Detail.SettlementStatus = EnumTaskSettlementStatus.Wait;
                list.Detail.SettlementAmount = list.Data.Sum(it => it.SettlementAmount ?? 0);
                list.Detail.ActualSettlementAmount = list.Data.Sum(it => it.ActualSettlementAmount ?? 0);
            }
            else
            {
                var task = await repTaskInfo.AsQueryable().AsNoTracking()
                    .Where(it => it.Id == request.TaskInfoId)
                    .FirstOrDefaultAsync();
                if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "任务");
                list.Data = list.Data
                    .Where(it => it.SettlementStatus == task.SettlementStatus)
                    .ToList();
            }
            return list;