diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFaceService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFaceService.cs index fbebac61..5645ca05 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFaceService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoFaceService.cs @@ -137,8 +137,35 @@ public class GainfoFaceService : IGainfoFaceService .SingleAsync(); gainfo.ThrowIfNull("人员信息不存在"); - + var face = await _faceDbContext.Queryable().Where(x => x.UserCode == gainfo.Code).SingleAsync(); + var faceSimilaritySetting = await _dbContext.Queryable().Where(x => x.Type == "faceSimilarity").SingleAsync(); + if (faceSimilaritySetting != null) + { + var faceSimilarity = await _hikService.GetSimilarityAsync(new GainfoFaceValidateRequest + { + SrcFacePicBinaryData = face.Face, + DistFacePicBinaryData = request.Face + }); + var acceptSimilarity = faceSimilaritySetting.Code.Adapt(); + + var isError = faceSimilarity < acceptSimilarity; + await _dbContext.InsertAsync(new HikValidateResultEntity + { + UserCode = face.UserCode, + Similarity = faceSimilarity, + AcceptSimilarity = acceptSimilarity, + CurrentFace = face.Face, + UploadFace = request.Face, + TenantId = gainfo.Factory, + }); + + if (isError) + { + throw new UserFriendlyException($"系统检测非本人更新,请重试(相似度{faceSimilarity})"); + } + } + var taskType = face == null ? DeviceTaskEnumType.Add : DeviceTaskEnumType.Update; if (face == null) {