using FlexJobApi.Core;
|
using Furion.DatabaseAccessor;
|
using Furion.FriendlyException;
|
using Mapster;
|
using MediatR;
|
using Microsoft.EntityFrameworkCore;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace FlexJobApi.UserServer.Application
|
{
|
/// <summary>
|
/// 用户简历命令处理器
|
/// </summary>
|
public class UserResumeCommandHandler(
|
IRepository<User> rep
|
) :
|
IRequestHandler<SaveUserResumePersonalCommand, Guid>,
|
IRequestHandler<SaveUserResumeJobSeekingCommand, Guid>,
|
IRequestHandler<SaveUserResumeCredentialCommand, Guid>,
|
IRequestHandler<DeleteUserResumeCredentialCommand, int>,
|
IRequestHandler<SaveUserResumeWorkExperienceCommand, Guid>,
|
IRequestHandler<SaveUserResumeDetailCommand, Guid>
|
{
|
private readonly IRepository<User> rep = rep;
|
|
/// <summary>
|
/// 保存用户简历-个人信息
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public Task<Guid> Handle(SaveUserResumePersonalCommand request, CancellationToken cancellationToken)
|
{
|
return rep.GetPersonalQueryable(true)
|
.UpdateData(request, cancellationToken: cancellationToken);
|
}
|
|
/// <summary>
|
/// 保存用户简历-求职意向
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public Task<Guid> Handle(SaveUserResumeJobSeekingCommand request, CancellationToken cancellationToken)
|
{
|
return rep.GetPersonalQueryable(true)
|
.Include(it => it.UserExpectJobs)
|
.UpdateData(
|
request,
|
(entity) =>
|
{
|
request.Adapt(entity);
|
entity.UserExpectJobs = request.UserExpectJobs.Select(it => new UserExpectJob
|
{
|
ExpectJobCode = it
|
}).ToList();
|
},
|
cancellationToken: cancellationToken);
|
}
|
|
/// <summary>
|
/// 保存用户简历-资格证书
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public Task<Guid> Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken)
|
{
|
var logier = JwtUtils.GetCurrentLogier();
|
return request.SaveData<UserCredential, SaveUserResumeCredentialCommand>(
|
q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials),
|
cancellationToken: cancellationToken);
|
}
|
|
/// <summary>
|
/// 删除用户简历-资格证书
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public Task<int> Handle(DeleteUserResumeCredentialCommand request, CancellationToken cancellationToken)
|
{
|
return request.DeleteData<UserCredential>(
|
q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials),
|
cancellationToken);
|
}
|
|
/// <summary>
|
/// 保存用户简历-工作经验
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public Task<Guid> Handle(SaveUserResumeWorkExperienceCommand request, CancellationToken cancellationToken)
|
{
|
return rep.GetPersonalQueryable(true)
|
.UpdateData(request, cancellationToken: cancellationToken);
|
}
|
|
/// <summary>
|
/// 保存用户简历-详细信息
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public Task<Guid> Handle(SaveUserResumeDetailCommand request, CancellationToken cancellationToken)
|
{
|
return rep.GetPersonalQueryable(true)
|
.Include(it => it.Photos)
|
.UpdateData(request, cancellationToken: cancellationToken);
|
}
|
}
|
}
|