diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoFacesController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoFacesController.cs new file mode 100644 index 00000000..124b041d --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoFacesController.cs @@ -0,0 +1,32 @@ +using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Organization.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.Organization.Controllers; + +/// +/// 人员face +/// +[Route("api/[controller]")] +[ApiController] +public class GainfoFacesController : ControllerBase +{ + private readonly IGainfoFaceService _gainfoFaceService; + + public GainfoFacesController(IGainfoFaceService gainfoFaceService) + { + _gainfoFaceService = gainfoFaceService; + } + + /// + /// 上传外部人员人脸照片 + /// + /// + [AllowAnonymous] + [HttpPost("external/face")] + public async Task UploadExternalFaceAsync(GainfoUploadFaceRequest request) + { + await _gainfoFaceService.UploadExternalFaceAsync(request); + } +} diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoUploadFaceRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoUploadFaceRequest.cs index 55b63b59..955e2b68 100644 --- a/Src/Dlhis.Basic/Organization/Request/GainfoUploadFaceRequest.cs +++ b/Src/Dlhis.Basic/Organization/Request/GainfoUploadFaceRequest.cs @@ -5,13 +5,13 @@ namespace Dlhis.Basic.Organization.Request; public class GainfoUploadFaceRequest : IValidatableObject { /// - /// 用户档案号 + /// no/idno /// - [Required(ErrorMessage = "用户档案号")] + [Required(ErrorMessage = "no/idno不能为空")] public string UserNo { get; set; } /// - /// 人脸照片 + /// 人脸base64 /// [Required(ErrorMessage = "人脸照片不能为空")] public string Face { get; set; } diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoFaceService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoFaceService.cs new file mode 100644 index 00000000..e2f00e2f --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoFaceService.cs @@ -0,0 +1,8 @@ +using Dlhis.Basic.Organization.Request; + +namespace Dlhis.Basic.Organization.Services; + +public interface IGainfoFaceService : IScopeDependency +{ + Task UploadExternalFaceAsync(GainfoUploadFaceRequest request); +} diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFaceService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFaceService.cs new file mode 100644 index 00000000..2b91d5d8 --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFaceService.cs @@ -0,0 +1,51 @@ +using Dlhis.Basic.Organization.Request; +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Basic.Enums; +using Kurisu.AspNetCore.Utils.Extensions; +using Kurisu.SqlSugar.Services; + +namespace Dlhis.Basic.Organization.Services.Implements; + +public class GainfoFaceService : IGainfoFaceService +{ + private readonly IGainfoStore _gainfoStore; + private readonly IDbContext _dbContext; + + public GainfoFaceService(IGainfoStore gainfoStore, IDbContext dbContext) + { + _gainfoStore = gainfoStore; + _dbContext = dbContext; + } + + public async Task UploadExternalFaceAsync(GainfoUploadFaceRequest request) + { + var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.External).Where(x => x.No == request.UserNo).FirstAsync(); + gainfo.ThrowIfNull("人员信息不存在"); + + var faceContext = _dbContext.ChangeDb("face"); + var face = await faceContext.Queryable().Where(x => x.UserCode == gainfo.Code).SingleAsync(); + + if (face == null) + { + face = new GainfoFaceEntity + { + UserCode = gainfo.Code, + Face = request.Face, + CreateTime = DateTime.Now, + ModifiedTime = DateTime.Now, + CreatedBy = 1, + ModifiedBy = 1 + }; + + await faceContext.InsertAsync(face); + } + else + { + face.Face = request.Face; + face.ModifiedBy = 1; + face.ModifiedTime = DateTime.Now; + + await faceContext.UpdateAsync(face); + } + } +}