sunpengfei
2025-08-20 327d52a5d0e51ac5e6e1aced3599a18dcfaf25b6
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
using FlexJobApi.Core;
using Furion;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
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 ElectronSignCallbackCommandHandler(
            IRepository<User> repUser
        ) :
        IRequestHandler<ElectronSignCallbackCommand, bool>
    {
        private readonly IRepository<User> repUser = repUser;
 
        /// <summary>
        /// 电子签回传
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<bool> Handle(ElectronSignCallbackCommand request, CancellationToken cancellationToken)
        {
            var appId = App.GetConfig<Guid>("ElectronSignServer:AppId");
            if (appId != request.CustomerId)
                throw Oops.Oh(EnumErrorCodeType.s400, "无效的AppId");
            if (request.Action == "UserSign")
            {
                var user = await repUser.AsQueryable()
                    .Include(it => it.UserAuth)
                    .Where(it => it.UserAuth.ElectronSignUserId == request.RelationId)
                    .FirstOrDefaultAsync();
                if (user == null)
                    throw Oops.Oh(EnumErrorCodeType.s404, "用户");
                if (request.Data is ElectronSignCallbackCommandUserSignModel data)
                {
                    if (user.Id != data.OutUserId)
                        throw Oops.Oh(EnumErrorCodeType.s404, "用户");
                    var enterpriseEmployees = request.Success
                        ? await repUser.Change<EnterpriseEmployee>().AsQueryable()
                            .Where(it => it.UserId == user.Id)
                            .ToListAsync()
                        : new List<EnterpriseEmployee>();
                    PersonalUserRealCommandHandler.PersonalReal(
                        request.Success == true
                        ? EnumPersonalUserRealStatus.Real
                        : EnumPersonalUserRealStatus.Fail,
                        EnumUserRealMethod.Face,
                        user,
                        enterpriseEmployees,
                        user.UserAuth.Name,
                        user.UserAuth.Identity,
                        user.UserAuth.IdentityImg,
                        user.UserAuth.IdentityBackImg,
                        faceRealUrl: user.UserAuth.FaceRealUrl);
                    await repUser.UpdateAsync(user);
                }
            }
            return true;
        }
    }
}