sunpengfei
2025-08-12 54a585e07c82223787c2d1db185e3fc085727eaa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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(false)
                .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(false)
                .Include(it => it.UserExpectJobs)
                .UpdateData(
                    request,
                    null,
                    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(false).SelectMany(it => it.UserCredentials),
                update: (entity) =>
                {
                    request.Adapt(entity);
                    if (request.Id == null)
                    {
                        entity.UserId = logier.Id;
                    }
                },
                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(false).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(false)
                .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(false)
                .Include(it => it.Photos)
                .UpdateData(request, cancellationToken: cancellationToken);
        }
    }
}