feat 数据迁移接口
This commit is contained in:
@@ -165,5 +165,20 @@ public class GainfosController : ControllerBase
|
|||||||
{
|
{
|
||||||
return await _gainfoService.GetGainfoDetailAsync(request);
|
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<Pagination<GainfoListResponse>> GetGainfoListAsync(GainfoListRequest request);
|
||||||
|
|
||||||
Task<GainfoDetailResponse> GetGainfoDetailAsync(GainfoDetailRequest request);
|
Task<GainfoDetailResponse> GetGainfoDetailAsync(GainfoDetailRequest request);
|
||||||
|
|
||||||
|
|
||||||
|
Task MigrationAsync(MigrationRequest request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -640,4 +640,41 @@ public class GainfoService : IGainfoService
|
|||||||
return null;
|
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