| | |
| | | using FlexJobApi.Core; |
| | | using Furion.DatabaseAccessor; |
| | | using Mapster; |
| | | using MediatR; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System; |
| | |
| | | /// C端人员查询处理器 |
| | | /// </summary> |
| | | public class GetPersonalUserInfosQueryHandler( |
| | | IRepository<User> rep |
| | | IRepository<User> rep, |
| | | IRepository<UserBankCard> repUserBankCard |
| | | ) : |
| | | IRequestHandler<GetPersonalUserInfosQuery, GetPersonalUserInfosQueryResult> |
| | | IRequestHandler<GetPersonalUserInfosQuery, GetPersonalUserInfosQueryResult>, |
| | | IRequestHandler<GetPersonalUserInfoSignContractsQuery, GetPersonalUserInfoSignContractsQueryResult>, |
| | | IRequestHandler<GetPersonalUserBankCardQuery, GetPersonalUserBankCardQueryResult> |
| | | { |
| | | private readonly IRepository<User> rep = rep; |
| | | private readonly IRepository<UserBankCard> repUserBankCard = repUserBankCard; |
| | | |
| | | /// <summary> |
| | | /// 查询C端人员分页列表数据 |
| | |
| | | public async Task<GetPersonalUserInfosQueryResult> Handle(GetPersonalUserInfosQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = rep.AsQueryable().AsNoTracking(); |
| | | var q = rep.AsQueryable().AsNoTracking() |
| | | .Where(it => it.Type == EnumUserType.Personal); |
| | | if (request.Keywords.IsNotNull()) |
| | | { |
| | | q = q.Where(it => |
| | |
| | | if (request.HireTimeBegin.HasValue && request.HireTimeEnd.HasValue) |
| | | { |
| | | q = q.Where(it => |
| | | it.EnterpriseEmployees.Any(e => |
| | | e.HireStatus == EnumTaskUserHireStatus.Pass |
| | | && e.HireTime.HasValue |
| | | && request.HireTimeBegin <= e.HireTime |
| | | && e.HireTime <= request.HireTimeEnd)); |
| | | it.EnterpriseEmployees.SelectMany(ee => ee.TaskInfoUsers).Any(tu => |
| | | tu.HireStatus == EnumTaskUserHireStatus.Pass |
| | | && tu.HireTime.HasValue |
| | | && request.HireTimeBegin <= tu.HireTime |
| | | && tu.HireTime <= request.HireTimeEnd)); |
| | | } |
| | | if (request.SignContractBegin.HasValue && request.SignContractEnd.HasValue) |
| | | { |
| | | q = q.Where(it => |
| | | it.EnterpriseEmployees.Any(e => |
| | | e.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass |
| | | && e.UserSignContractTime.HasValue |
| | | && request.SignContractBegin <= e.UserSignContractTime |
| | | && e.UserSignContractTime <= request.SignContractEnd |
| | | || e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass |
| | | e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass |
| | | && e.EnterpriseSignContractTime.HasValue |
| | | && request.SignContractBegin <= e.EnterpriseSignContractTime |
| | | && e.EnterpriseSignContractTime <= request.SignContractEnd)); |
| | |
| | | Name = it.Name, |
| | | ContactPhoneNumber = it.ContactPhoneNumber, |
| | | Identity = it.Identity, |
| | | IdentityImg = it.UserAuth.IdentityImg, |
| | | IdentityBackImg = it.UserAuth.IdentityBackImg, |
| | | Gender = it.Gender, |
| | | Age = it.Age, |
| | | ProvinceCode = it.ProvinceCode, |
| | |
| | | IsReal = it.IsReal, |
| | | RealTime = it.RealTime, |
| | | HireTime = it.EnterpriseEmployees |
| | | .SelectMany(ee => ee.TaskInfoUsers) |
| | | .OrderByDescending(e => e.HireTime) |
| | | .Where(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue) |
| | | .Where(e => e.HireTime.HasValue) |
| | | .Select(e => e.HireTime) |
| | | .FirstOrDefault(), |
| | | SignContractTime = it.EnterpriseEmployees |
| | | .OrderByDescending(e => e.EnterpriseSignContractTime > e.UserSignContractTime ? e.EnterpriseSignContractTime : e.UserSignContractTime) |
| | | .Where(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue) |
| | | .Select(e => e.HireTime) |
| | | .OrderByDescending(e => e.EnterpriseSignContractTime) |
| | | .Where(e => e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass && e.EnterpriseSignContractTime.HasValue) |
| | | .Select(e => e.EnterpriseSignContractTime) |
| | | .FirstOrDefault(), |
| | | }); |
| | | var result = await request.PageModel.GetPagedListAsync<GetPersonalUserInfosQueryResult, GetPersonalUserInfosQueryResultItem>(s, cancellationToken); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询C端人员签约详情分页列表数据 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public Task<GetPersonalUserInfoSignContractsQueryResult> Handle(GetPersonalUserInfoSignContractsQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var q = rep.Change<EnterpriseEmployee>().AsQueryable().AsNoTracking() |
| | | .Where(it => it.UserId == request.Id) |
| | | .Select(it => new GetPersonalUserInfoSignContractsQueryResultItem |
| | | { |
| | | Id = it.Id, |
| | | EnterpriseName = it.Enterprise.EnterpriseName, |
| | | ApplyTime = it.TaskInfoUsers |
| | | .OrderBy(tu => tu.CreatedTime) |
| | | .Select(tu => tu.CreatedTime as DateTimeOffset?) |
| | | .FirstOrDefault(), |
| | | HireStatus = it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass) |
| | | ? EnumTaskUserHireStatus.Pass |
| | | : it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Refuse) |
| | | ? EnumTaskUserHireStatus.Refuse |
| | | : EnumTaskUserHireStatus.Wait, |
| | | HireTime = it.TaskInfoUsers |
| | | .OrderBy(tu => tu.HireTime) |
| | | .Where(tu => tu.HireTime.HasValue) |
| | | .Select(tu => tu.HireTime) |
| | | .FirstOrDefault(), |
| | | UserSignContractStatus = it.UserSignContractStatus, |
| | | EnterpriseSignContractStatus = it.EnterpriseSignContractStatus, |
| | | EnterpriseSignContractTime = it.EnterpriseSignContractTime, |
| | | ContractUrl = it.ContractUrl |
| | | }); |
| | | return request.PageModel.GetPagedListAsync<GetPersonalUserInfoSignContractsQueryResult, GetPersonalUserInfoSignContractsQueryResultItem>(q, cancellationToken); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询个人用户银行卡信息 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public Task<GetPersonalUserBankCardQueryResult> Handle(GetPersonalUserBankCardQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var model = repUserBankCard.AsQueryable().AsNoTracking() |
| | | .Where(it => it.UserId == logier.Id) |
| | | .ProjectToType<GetPersonalUserBankCardQueryResult>() |
| | | .FirstOrDefaultAsync(); |
| | | return model; |
| | | } |
| | | } |
| | | } |