| | |
| | | /// 用户简历命令处理器 |
| | | /// </summary> |
| | | public class UserResumeCommandHandler( |
| | | IRepository<User> rep |
| | | IRepository<User> rep, |
| | | IRepository<EnterpriseUserCollect> repEnterpriseUserCollect |
| | | ) : |
| | | IRequestHandler<SaveUserResumePersonalCommand, Guid>, |
| | | IRequestHandler<SaveUserResumeJobSeekingCommand, Guid>, |
| | | IRequestHandler<SaveUserResumeCredentialCommand, Guid>, |
| | | IRequestHandler<DeleteUserResumeCredentialCommand, int>, |
| | | IRequestHandler<SaveUserResumeWorkExperienceCommand, Guid>, |
| | | IRequestHandler<SaveUserResumeDetailCommand, Guid> |
| | | IRequestHandler<SaveUserResumeDetailCommand, Guid>, |
| | | IRequestHandler<CollectUserResumeCommand, Guid>, |
| | | IRequestHandler<ContactUserResumeCommand, Guid> |
| | | { |
| | | private readonly IRepository<User> rep = rep; |
| | | private readonly IRepository<EnterpriseUserCollect> repEnterpriseUserCollect = repEnterpriseUserCollect; |
| | | |
| | | /// <summary> |
| | | /// 保存用户简历-个人信息 |
| | |
| | | /// <returns></returns> |
| | | public Task<Guid> Handle(SaveUserResumePersonalCommand request, CancellationToken cancellationToken) |
| | | { |
| | | return rep.GetPersonalQueryable(true) |
| | | return rep.GetPersonalQueryable(false) |
| | | .UpdateData(request, cancellationToken: cancellationToken); |
| | | } |
| | | |
| | |
| | | /// <returns></returns> |
| | | public Task<Guid> Handle(SaveUserResumeJobSeekingCommand request, CancellationToken cancellationToken) |
| | | { |
| | | return rep.GetPersonalQueryable(true) |
| | | return rep.GetPersonalQueryable(false) |
| | | .Include(it => it.UserExpectJobs) |
| | | .UpdateData( |
| | | request, |
| | | (entity) => |
| | | { |
| | | request.Adapt(entity); |
| | | entity.UserExpectJobs = request.UserExpectJobs.Select(it => new UserExpectJob |
| | | { |
| | | ExpectJobCode = it |
| | | }).ToList(); |
| | | }, |
| | | null, |
| | | cancellationToken: cancellationToken); |
| | | } |
| | | |
| | |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public Task<Guid> Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken) |
| | | public async Task<Guid> Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | return request.SaveData<UserCredential, SaveUserResumeCredentialCommand>( |
| | | q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials), |
| | | var entity = await request.SaveData<UserCredential, SaveUserResumeCredentialCommand>( |
| | | q => rep.GetPersonalQueryable(false).SelectMany(it => it.UserCredentials), |
| | | update: (entity) => |
| | | { |
| | | request.Adapt(entity); |
| | | if (request.Id == null) |
| | | { |
| | | entity.UserId = logier.Id; |
| | | } |
| | | }, |
| | | cancellationToken: cancellationToken); |
| | | return entity.Id; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | public Task<int> Handle(DeleteUserResumeCredentialCommand request, CancellationToken cancellationToken) |
| | | { |
| | | return request.DeleteData<UserCredential>( |
| | | q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials), |
| | | q => rep.GetPersonalQueryable(false).SelectMany(it => it.UserCredentials), |
| | | cancellationToken); |
| | | } |
| | | |
| | |
| | | /// <returns></returns> |
| | | public Task<Guid> Handle(SaveUserResumeWorkExperienceCommand request, CancellationToken cancellationToken) |
| | | { |
| | | return rep.GetPersonalQueryable(true) |
| | | return rep.GetPersonalQueryable(false) |
| | | .UpdateData(request, cancellationToken: cancellationToken); |
| | | } |
| | | |
| | |
| | | /// <returns></returns> |
| | | public Task<Guid> Handle(SaveUserResumeDetailCommand request, CancellationToken cancellationToken) |
| | | { |
| | | return rep.GetPersonalQueryable(true) |
| | | return rep.GetPersonalQueryable(false) |
| | | .Include(it => it.Photos) |
| | | .UpdateData(request, cancellationToken: cancellationToken); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 收藏灵工 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<Guid> Handle(CollectUserResumeCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | if (logier.Type != EnumUserType.Enterprise) throw Oops.Oh(EnumErrorCodeType.s400, "需企业用户方可联系"); |
| | | var entity = await repEnterpriseUserCollect.AsQueryable() |
| | | .FirstOrDefaultAsync(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == request.Id); |
| | | if (entity == null) |
| | | { |
| | | entity = new EnterpriseUserCollect |
| | | { |
| | | EnterpriseId = logier.EnterpriseId!.Value, |
| | | UserId = request.Id, |
| | | IsCollected = true, |
| | | CollectedTime = request.IsCollected |
| | | ? DateTime.Now |
| | | : null |
| | | }; |
| | | await repEnterpriseUserCollect.InsertAsync(entity); |
| | | } |
| | | else if (entity.IsCollected != request.IsCollected) |
| | | { |
| | | entity.IsCollected = request.IsCollected; |
| | | entity.CollectedTime = request.IsCollected |
| | | ? DateTime.Now |
| | | : null; |
| | | await repEnterpriseUserCollect.UpdateAsync(entity); |
| | | } |
| | | return entity.Id; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 联系灵工 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<Guid> Handle(ContactUserResumeCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | if (logier.Type != EnumUserType.Enterprise) throw Oops.Oh(EnumErrorCodeType.s400, "需企业用户方可联系"); |
| | | var entity = await repEnterpriseUserCollect.AsQueryable() |
| | | .FirstOrDefaultAsync(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == request.Id); |
| | | if (entity == null) |
| | | { |
| | | entity = new EnterpriseUserCollect |
| | | { |
| | | EnterpriseId = logier.EnterpriseId!.Value, |
| | | UserId = request.Id, |
| | | IsContacted = true, |
| | | ContactedTime = DateTime.Now |
| | | }; |
| | | await repEnterpriseUserCollect.InsertAsync(entity); |
| | | } |
| | | else if (entity.IsContacted == false) |
| | | { |
| | | entity.IsContacted = true; |
| | | entity.ContactedTime = DateTime.Now; |
| | | await repEnterpriseUserCollect.UpdateAsync(entity); |
| | | } |
| | | return entity.Id; |
| | | } |
| | | } |
| | | } |