feat 数据迁移接口

This commit is contained in:
2024-03-12 12:45:25 +08:00
parent 73cc592cd3
commit 80aa3f6932
4 changed files with 99 additions and 0 deletions

View File

@@ -165,5 +165,20 @@ public class GainfosController : ControllerBase
{
return await _gainfoService.GetGainfoDetailAsync(request);
}
/// <summary>
/// 数据迁移
/// </summary>
/// <returns></returns>
[AllowAnonymous]
[HttpPost("migrations")]
public async Task MigrationAsync(List<MigrationRequest> requests)
{
foreach (var request in requests)
{
await _gainfoService.MigrationAsync(request);
}
}
}

View File

@@ -0,0 +1,44 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic.Organization.Request;
public class MigrationRequest : IValidatableObject
{
/// <summary>
/// 工号
/// </summary>
[Required(ErrorMessage = "工号不能为空")]
public string Code { get; set; }
/// <summary>
/// 卡号
/// </summary>
public string CardNo { get; set; }
/// <summary>
/// base64
/// </summary>
public string Face { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Face.IsPresent())
{
bool v = true;
try
{
Convert.FromBase64String(Face);
}
catch (Exception)
{
v = false;
}
if (!v)
{
yield return new ValidationResult("人脸照片需要为Base64格式", new[] { nameof(Face) });
}
}
}
}

View File

@@ -32,4 +32,7 @@ public interface IGainfoService : IScopeDependency
Task<Pagination<GainfoListResponse>> GetGainfoListAsync(GainfoListRequest request);
Task<GainfoDetailResponse> GetGainfoDetailAsync(GainfoDetailRequest request);
Task MigrationAsync(MigrationRequest request);
}

View File

@@ -640,4 +640,41 @@ public class GainfoService : IGainfoService
return null;
}
}
public async Task MigrationAsync(MigrationRequest request)
{
//档案数据
var gainfo = await _gainfoStore.Queryable().Where(x => x.Code == request.Code).FirstAsync();
if (gainfo == null)
{
return;
}
//卡号为空则更新
if (gainfo.CardNo.IsEmpty())
{
gainfo.CardNo = request.CardNo;
await _gainfoStore.UpdateAsync(gainfo);
}
//外部传入人脸
if (request.Face.IsPresent())
{
var faceDbContext = _dbContext.ChangeDb("face");
var exists = await faceDbContext.Queryable<GainfoFaceEntity>().AnyAsync(x => x.UserCode == gainfo.Code);
//人脸不存在则写入
if (!exists)
{
await faceDbContext.InsertAsync(new GainfoFaceEntity
{
CreatedBy = 1,
CreateTime = DateTime.Now,
ModifiedBy = 1,
ModifiedTime = DateTime.Now,
UserCode = gainfo.Code,
Face = request.Face,
});
}
}
}
}