diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoIdCardFaceCompareService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoIdCardFaceCompareService.cs index fa8ef7d7..78acd48d 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoIdCardFaceCompareService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoIdCardFaceCompareService.cs @@ -15,17 +15,18 @@ namespace Dlhis.Basic.Organization.Services.Implements; public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService { private readonly IDbContext _dbContext; - private readonly IDbContext _faceDbContext; + private readonly IServiceProvider _serviceProvider; private readonly IAliyunClient _aliyunClient; private readonly ICurrentUser _currentUser; public GainfoIdCardFaceCompareService( IDbContext dbContext, + IServiceProvider serviceProvider, IAliyunClient aliyunClient, ICurrentUser currentUser) { _dbContext = dbContext; - _faceDbContext = dbContext.ChangeDb("face"); + _serviceProvider = serviceProvider; _aliyunClient = aliyunClient; _currentUser = currentUser; } @@ -75,6 +76,19 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService gainfo.ThrowIfNull("人员档案信息不存在"); gainfo.IdNo.IsPresent().ThrowIfFalse("人员证件号为空,无法对比"); + var face = string.Empty; + using (var scope = _serviceProvider.CreateScope()) + { + var faceDbContext = scope.ServiceProvider.GetService().ChangeDb("face"); + face = await faceDbContext.Queryable() + .Where(x => x.UserCode == gainfo.Code) + .Select(x => x.Face) + .SingleAsync(); + } + + face.IsEmpty().ThrowIfTrue("人脸照片尚未录入"); + + var now = DateTime.Now; var userId = _currentUser.GetIntSubjectId(); var record = await _dbContext.Queryable() @@ -111,10 +125,7 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService await _dbContext.UpdateAsync(record); } - var face = await _faceDbContext.Queryable() - .Where(x => x.UserCode == gainfo.Code) - .Select(x => x.Face) - .SingleAsync(); + if (!face.IsPresent()) {