deason 2 years ago
parent
commit
7cfae2df7a

+ 19 - 13
examcloud-core-oe-task-service/src/main/java/cn/com/qmth/examcloud/core/oe/task/service/job/FaceVerifyJobHandler.java

@@ -87,7 +87,7 @@ public class FaceVerifyJobHandler {
         // 获取当前学生的底照信息
         Long studentId = queues.get(0).getStudentId();
         StudentCacheBean studentCache = CacheHelper.getStudent(studentId);
-        if (StringUtils.isBlank(studentCache.getFaceToken()) || StringUtils.isBlank(studentCache.getPhotoPath())) {
+        if (StringUtils.isBlank(studentCache.getPhotoPath())) {
             throw new IllegalArgumentException("学生底照不存在!studentId is " + studentId);
         }
 
@@ -114,7 +114,7 @@ public class FaceVerifyJobHandler {
             // 将抓拍照图片转成Base64格式
             ImageParm capturePhoto = new ImageBase64Parm(CommonUtils.toBase64(FileStorageUtil.realPath(queue.getFileUrl())));
 
-            boolean errFaceNum = false;
+            boolean errFace = false;
 
             try {
                 if (ExamCaptureQueueStatus.PROCESS_FACE_COMPARE_COMPLETE != queue.getStatus()
@@ -129,17 +129,21 @@ public class FaceVerifyJobHandler {
                         faceCompareResult = faceVerifyService.faceCompareByFacePlus(basePhoto, capturePhoto);
                     }
 
-                    // if (!faceCompareResult.needReTry()) {
-                    //     throw new FaceVerifyException(faceCompareResult.getError());
-                    // }
+                    if (!faceCompareResult.isApiNeedRetry()) {
+                        queue.setExtMsg(faceCompareResult.getError());
+                        this.saveExamCaptureAndDeleteQueue(queue);
+                        continue;
+                    }
 
-                    queue.setIsPass(faceCompareResult.isPass());
+                    queue.setIsPass(faceCompareResult.isFacePass());
                     queue.setFaceCompareResult(faceCompareResult.getJsonResult());
                     queue.setStatus(ExamCaptureQueueStatus.PROCESS_FACE_COMPARE_COMPLETE);
                     queue.setIsStranger(false);
 
                     if (faceCompareResult.getFaceNum() == 0) {
-                        errFaceNum = true;
+                        if (!useBaiduApi) {
+                            errFace = true;
+                        }
                     } else if (faceCompareResult.getFaceNum() > 1) {
                         // 是否启用陌生人检测
                         ExamRecordData examRecordDataCache = examRecordDataService.getExamRecordDataCache(examRecordDataId);
@@ -152,7 +156,7 @@ public class FaceVerifyJobHandler {
                         }
                     }
 
-                    if (!faceCompareResult.isPass()) {
+                    if (!faceCompareResult.isFacePass()) {
                         queue.setExtMsg(faceCompareResult.getError());
                     }
 
@@ -170,7 +174,7 @@ public class FaceVerifyJobHandler {
                 continue;
             }
 
-            if (errFaceNum) {
+            if (errFace) {
                 // 没有检测到正常人脸,直接保存人脸检测最终结果并删除该队列记录
                 this.saveExamCaptureAndDeleteQueue(queue);
                 continue;
@@ -181,11 +185,13 @@ public class FaceVerifyJobHandler {
                 FaceResult faceLivenessResult = faceVerifyService.faceVerifyByBaidu(capturePhoto);
                 queue.setFacelivenessResult(faceLivenessResult.getJsonResult());
 
-                // if (!faceLivenessResult.needReTry()) {
-                //     throw new FaceVerifyException(faceLivenessResult.getError());
-                // }
+                if (!faceLivenessResult.isApiNeedRetry()) {
+                    queue.setExtMsg(faceLivenessResult.getError());
+                    this.saveExamCaptureAndDeleteQueue(queue);
+                    continue;
+                }
 
-                if (!faceLivenessResult.isPass()) {
+                if (!faceLivenessResult.isFacePass()) {
                     queue.setExtMsg(faceLivenessResult.getError());
                 }
             } catch (Exception e) {