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;
|
}
|
}
|
}
|