|
@@ -166,7 +166,7 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
|
|
|
// 是否开启人脸验证
|
|
|
boolean isFaceEnable = FaceBiopsyHelper.isFaceEnable(rootOrgId, examId, studentId);
|
|
|
|
|
|
- boolean skipFace = false, isFaceVerify = false, isFaceVerifyForceExit = false, isVirtualCameraAuditEnabled = false;
|
|
|
+ boolean skipFace = false, isFaceCheck = false, isFaceVerify = false, isFaceVerifyForceExit = false, isVirtualCameraAuditEnabled = false;
|
|
|
if (isFaceEnable) {
|
|
|
// 检查当前考生是否跳过人脸识别
|
|
|
skipFace = this.checkExamSkipFace(examId, examStudentId);
|
|
@@ -174,6 +174,9 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
|
|
|
// 是否开启考中人脸活体检测
|
|
|
isFaceVerify = FaceBiopsyHelper.isFaceVerify(rootOrgId, examId, studentId);
|
|
|
|
|
|
+ // 是否强制人脸验证
|
|
|
+ isFaceCheck = FaceBiopsyHelper.isFaceCheck(examId, studentId);
|
|
|
+
|
|
|
// 是否考中活体不通过强制退出
|
|
|
ExamPropertyCacheBean faceVerifyForceExitProperty = CacheHelper.getExamProperty(examId, ExamProperties.FACE_VERIFY_FORCE_EXIT.name());
|
|
|
isFaceVerifyForceExit = faceVerifyForceExitProperty != null && StringUtil.isTrue(faceVerifyForceExitProperty.getValue());
|
|
@@ -250,7 +253,9 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
|
|
|
|
|
|
//若开启人脸验证
|
|
|
if (isFaceEnable) {
|
|
|
- if (skipFace) {
|
|
|
+
|
|
|
+ //若强制人脸验证
|
|
|
+ if (isFaceCheck && skipFace) {
|
|
|
//【异常】人工跳过人脸验证
|
|
|
examWarnService.saveExamWarn(realExamRecordDataId, WarnType.SKIP_FACE);
|
|
|
//修改为异常状态
|
|
@@ -271,8 +276,6 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
|
|
|
if (CollectionUtils.isEmpty(req.getExamCaptures())) {
|
|
|
//【违纪】抓拍照片数量为0
|
|
|
examAuditService.saveExamAuditByNoPhoto(realExamRecordDataId);
|
|
|
- //修改为已审状态
|
|
|
- examRecordDataRepo.updateExamRecordIsAuditById(realExamRecordDataId, true);
|
|
|
LOG.warn("{}_{}_{} OTHER_抓拍照片数量为0...", studentId, tempExamRecordDataId, realExamRecordDataId);
|
|
|
} else {
|
|
|
if (isVirtualCameraAuditEnabled) {
|
|
@@ -281,6 +284,7 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
|
|
|
if (hasVirtualCamera) {
|
|
|
//修改为异常状态
|
|
|
examRecordDataRepo.updateExamRecordIsWarnById(realExamRecordDataId, true);
|
|
|
+ LOG.warn("{}_{}_{} 存在虚拟摄像头...", studentId, tempExamRecordDataId, realExamRecordDataId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -290,8 +294,6 @@ public class SyncExamDataCloudServiceProvider extends ControllerSupport implemen
|
|
|
if (isFaceVerifyForceExit) {
|
|
|
//【违纪】指定动作失败
|
|
|
examAuditService.saveExamAuditByFaceVerifyFailed(realExamRecordDataId, rootOrgId);
|
|
|
- //修改为已审状态
|
|
|
- examRecordDataRepo.updateExamRecordIsAuditById(realExamRecordDataId, true);
|
|
|
LOG.warn("{}_{}_{} ACTION_FAILURE...", studentId, tempExamRecordDataId, realExamRecordDataId);
|
|
|
} else {
|
|
|
//【异常】过程活体不通过
|