fix: .
This commit is contained in:
@@ -89,11 +89,6 @@ public class AliyunClient : IAliyunClient
|
||||
RawResponse = rawResponse
|
||||
};
|
||||
|
||||
if (string.IsNullOrWhiteSpace(rawResponse))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var response = JsonConvert.DeserializeObject<AliyunId3MetaVerifyApiResponse>(rawResponse);
|
||||
result.RequestId = response?.RequestId;
|
||||
result.Code = response?.Code;
|
||||
|
||||
@@ -46,6 +46,7 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
||||
|| record.IdNo == request.Search
|
||||
|| record.UserName.Contains(request.Search)
|
||||
|| gainfo.Name.Contains(request.Search))
|
||||
.OrderBy(record => record.LastCompareTime, OrderByType.Desc)
|
||||
.OrderBy(record => record.CreateTime, OrderByType.Desc)
|
||||
.Select((record, gainfo, department) => new IdCardFaceCompareRecordResponse
|
||||
{
|
||||
@@ -74,20 +75,6 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
||||
.Where(x => x.Code == request.UserCode)
|
||||
.SingleAsync();
|
||||
gainfo.ThrowIfNull("人员档案信息不存在");
|
||||
gainfo.IdNo.IsPresent().ThrowIfFalse("人员证件号为空,无法对比");
|
||||
|
||||
var face = string.Empty;
|
||||
using (var scope = _serviceProvider.CreateScope())
|
||||
{
|
||||
var faceDbContext = scope.ServiceProvider.GetService<IDbContext>().ChangeDb("face");
|
||||
face = await faceDbContext.Queryable<GainfoFaceEntity>()
|
||||
.Where(x => x.UserCode == gainfo.Code)
|
||||
.Select(x => x.Face)
|
||||
.SingleAsync();
|
||||
}
|
||||
|
||||
face.IsEmpty().ThrowIfTrue("人脸照片尚未录入");
|
||||
|
||||
|
||||
var now = DateTime.Now;
|
||||
var userId = _currentUser.GetIntSubjectId();
|
||||
@@ -105,6 +92,11 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
||||
IdNo = gainfo.IdNo,
|
||||
CompareResult = IdCardFaceCompareResultEnumType.NotCompared,
|
||||
CompareCount = 0,
|
||||
ErrorMessage = null,
|
||||
CreatedBy = userId,
|
||||
ModifiedBy = userId,
|
||||
CreateTime = now,
|
||||
ModifiedTime = now
|
||||
};
|
||||
|
||||
await _dbContext.InsertAsync(record);
|
||||
@@ -115,34 +107,70 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
||||
record.UserName = gainfo.Name;
|
||||
record.IdNo = gainfo.IdNo;
|
||||
record.CompareResult = IdCardFaceCompareResultEnumType.NotCompared;
|
||||
record.IsPassed = null;
|
||||
record.Similarity = null;
|
||||
record.ApiResponse = null;
|
||||
record.ErrorMessage = null;
|
||||
record.ModifiedTime = now;
|
||||
record.ModifiedBy = userId;
|
||||
await _dbContext.UpdateAsync(record);
|
||||
}
|
||||
|
||||
if (!gainfo.IdNo.IsPresent())
|
||||
{
|
||||
await UpdateRecordErrorAndThrowAsync(record, "人员证件号为空,无法对比", userId);
|
||||
}
|
||||
|
||||
var face = string.Empty;
|
||||
using (var scope = _serviceProvider.CreateScope())
|
||||
{
|
||||
var faceDbContext = scope.ServiceProvider.GetService<IDbContext>().ChangeDb("face");
|
||||
face = await faceDbContext.Queryable<GainfoFaceEntity>()
|
||||
.Where(x => x.UserCode == gainfo.Code)
|
||||
.Select(x => x.Face)
|
||||
.SingleAsync();
|
||||
}
|
||||
|
||||
if (!face.IsPresent())
|
||||
{
|
||||
record.ErrorMessage = "人脸照片尚未录入";
|
||||
record.ModifiedTime = DateTime.Now;
|
||||
record.ModifiedBy = userId;
|
||||
await _dbContext.UpdateAsync(record);
|
||||
throw new UserFriendlyException(record.ErrorMessage);
|
||||
await UpdateRecordErrorAndThrowAsync(record, "人脸照片尚未录入", userId);
|
||||
}
|
||||
|
||||
AliyunId3MetaVerifyResponse response;
|
||||
try
|
||||
{
|
||||
response = await _aliyunClient.Id3MetaVerifyAsync(gainfo.IdNo, gainfo.Name, face);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
await UpdateRecordErrorAndThrowAsync(record, $"人证人脸对比接口调用失败:{e.Message}", userId);
|
||||
throw;
|
||||
}
|
||||
|
||||
var response = await _aliyunClient.Id3MetaVerifyAsync(gainfo.IdNo, gainfo.Name, face);
|
||||
record.CompareResult = IdCardFaceCompareResultEnumType.Compared;
|
||||
record.ApiResponse = response.RawResponse;
|
||||
record.IsPassed = response.Passed;
|
||||
record.Similarity = response.Similarity;
|
||||
record.CompareCount += 1;
|
||||
record.LastCompareTime = now;
|
||||
record.ErrorMessage = null;
|
||||
record.ModifiedTime = DateTime.Now;
|
||||
record.ModifiedBy = userId;
|
||||
|
||||
await _dbContext.UpdateAsync(record);
|
||||
|
||||
return await GetRecordAsync(record.UserCode);
|
||||
}
|
||||
|
||||
private async Task UpdateRecordErrorAndThrowAsync(IdCardFaceCompareRecordEntity record, string message, int userId)
|
||||
{
|
||||
record.ErrorMessage = message;
|
||||
record.ModifiedTime = DateTime.Now;
|
||||
record.ModifiedBy = userId;
|
||||
await _dbContext.UpdateAsync(record);
|
||||
throw new UserFriendlyException(message);
|
||||
}
|
||||
|
||||
private async Task<IdCardFaceCompareRecordResponse> GetRecordAsync(string userCode)
|
||||
{
|
||||
return await _dbContext.Queryable<IdCardFaceCompareRecordEntity>()
|
||||
|
||||
Reference in New Issue
Block a user