fix: .
This commit is contained in:
@@ -89,11 +89,6 @@ public class AliyunClient : IAliyunClient
|
|||||||
RawResponse = rawResponse
|
RawResponse = rawResponse
|
||||||
};
|
};
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(rawResponse))
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
var response = JsonConvert.DeserializeObject<AliyunId3MetaVerifyApiResponse>(rawResponse);
|
var response = JsonConvert.DeserializeObject<AliyunId3MetaVerifyApiResponse>(rawResponse);
|
||||||
result.RequestId = response?.RequestId;
|
result.RequestId = response?.RequestId;
|
||||||
result.Code = response?.Code;
|
result.Code = response?.Code;
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
|||||||
|| record.IdNo == request.Search
|
|| record.IdNo == request.Search
|
||||||
|| record.UserName.Contains(request.Search)
|
|| record.UserName.Contains(request.Search)
|
||||||
|| gainfo.Name.Contains(request.Search))
|
|| gainfo.Name.Contains(request.Search))
|
||||||
|
.OrderBy(record => record.LastCompareTime, OrderByType.Desc)
|
||||||
.OrderBy(record => record.CreateTime, OrderByType.Desc)
|
.OrderBy(record => record.CreateTime, OrderByType.Desc)
|
||||||
.Select((record, gainfo, department) => new IdCardFaceCompareRecordResponse
|
.Select((record, gainfo, department) => new IdCardFaceCompareRecordResponse
|
||||||
{
|
{
|
||||||
@@ -74,20 +75,6 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
|||||||
.Where(x => x.Code == request.UserCode)
|
.Where(x => x.Code == request.UserCode)
|
||||||
.SingleAsync();
|
.SingleAsync();
|
||||||
gainfo.ThrowIfNull("人员档案信息不存在");
|
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 now = DateTime.Now;
|
||||||
var userId = _currentUser.GetIntSubjectId();
|
var userId = _currentUser.GetIntSubjectId();
|
||||||
@@ -105,6 +92,11 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
|||||||
IdNo = gainfo.IdNo,
|
IdNo = gainfo.IdNo,
|
||||||
CompareResult = IdCardFaceCompareResultEnumType.NotCompared,
|
CompareResult = IdCardFaceCompareResultEnumType.NotCompared,
|
||||||
CompareCount = 0,
|
CompareCount = 0,
|
||||||
|
ErrorMessage = null,
|
||||||
|
CreatedBy = userId,
|
||||||
|
ModifiedBy = userId,
|
||||||
|
CreateTime = now,
|
||||||
|
ModifiedTime = now
|
||||||
};
|
};
|
||||||
|
|
||||||
await _dbContext.InsertAsync(record);
|
await _dbContext.InsertAsync(record);
|
||||||
@@ -115,34 +107,70 @@ public class GainfoIdCardFaceCompareService : IGainfoIdCardFaceCompareService
|
|||||||
record.UserName = gainfo.Name;
|
record.UserName = gainfo.Name;
|
||||||
record.IdNo = gainfo.IdNo;
|
record.IdNo = gainfo.IdNo;
|
||||||
record.CompareResult = IdCardFaceCompareResultEnumType.NotCompared;
|
record.CompareResult = IdCardFaceCompareResultEnumType.NotCompared;
|
||||||
|
record.IsPassed = null;
|
||||||
|
record.Similarity = null;
|
||||||
|
record.ApiResponse = null;
|
||||||
record.ErrorMessage = null;
|
record.ErrorMessage = null;
|
||||||
|
record.ModifiedTime = now;
|
||||||
|
record.ModifiedBy = userId;
|
||||||
await _dbContext.UpdateAsync(record);
|
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())
|
if (!face.IsPresent())
|
||||||
{
|
{
|
||||||
record.ErrorMessage = "人脸照片尚未录入";
|
await UpdateRecordErrorAndThrowAsync(record, "人脸照片尚未录入", userId);
|
||||||
record.ModifiedTime = DateTime.Now;
|
}
|
||||||
record.ModifiedBy = userId;
|
|
||||||
await _dbContext.UpdateAsync(record);
|
AliyunId3MetaVerifyResponse response;
|
||||||
throw new UserFriendlyException(record.ErrorMessage);
|
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.CompareResult = IdCardFaceCompareResultEnumType.Compared;
|
||||||
record.ApiResponse = response.RawResponse;
|
record.ApiResponse = response.RawResponse;
|
||||||
record.IsPassed = response.Passed;
|
record.IsPassed = response.Passed;
|
||||||
record.Similarity = response.Similarity;
|
record.Similarity = response.Similarity;
|
||||||
record.CompareCount += 1;
|
record.CompareCount += 1;
|
||||||
record.LastCompareTime = now;
|
record.LastCompareTime = now;
|
||||||
|
record.ErrorMessage = null;
|
||||||
|
record.ModifiedTime = DateTime.Now;
|
||||||
|
record.ModifiedBy = userId;
|
||||||
|
|
||||||
await _dbContext.UpdateAsync(record);
|
await _dbContext.UpdateAsync(record);
|
||||||
|
|
||||||
return await GetRecordAsync(record.UserCode);
|
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)
|
private async Task<IdCardFaceCompareRecordResponse> GetRecordAsync(string userCode)
|
||||||
{
|
{
|
||||||
return await _dbContext.Queryable<IdCardFaceCompareRecordEntity>()
|
return await _dbContext.Queryable<IdCardFaceCompareRecordEntity>()
|
||||||
|
|||||||
Reference in New Issue
Block a user