feat 数据迁移接口
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
44
Src/Dlhis.Basic/Organization/Request/MigrationRequest.cs
Normal file
44
Src/Dlhis.Basic/Organization/Request/MigrationRequest.cs
Normal 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) });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,4 +32,7 @@ public interface IGainfoService : IScopeDependency
|
||||
Task<Pagination<GainfoListResponse>> GetGainfoListAsync(GainfoListRequest request);
|
||||
|
||||
Task<GainfoDetailResponse> GetGainfoDetailAsync(GainfoDetailRequest request);
|
||||
|
||||
|
||||
Task MigrationAsync(MigrationRequest request);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user