|
@@ -30,7 +30,7 @@ import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
|
|
import cn.com.qmth.examcloud.support.helper.ExamCacheTransferHelper;
|
|
import cn.com.qmth.examcloud.support.helper.ExamCacheTransferHelper;
|
|
import cn.com.qmth.examcloud.support.helper.FaceBiopsyHelper;
|
|
import cn.com.qmth.examcloud.support.helper.FaceBiopsyHelper;
|
|
import cn.com.qmth.examcloud.web.aliyun.OssClient;
|
|
import cn.com.qmth.examcloud.web.aliyun.OssClient;
|
|
-import cn.com.qmth.examcloud.web.facepp.FaceppClient;
|
|
|
|
|
|
+// import cn.com.qmth.examcloud.web.facepp.FaceppClient;
|
|
import cn.com.qmth.examcloud.web.redis.RedisClient;
|
|
import cn.com.qmth.examcloud.web.redis.RedisClient;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -106,78 +106,78 @@ public class ExamCaptureServiceImpl implements ExamCaptureService {
|
|
examCaptureQueueRepo.deleteById(examCaptureQueue.getId());
|
|
examCaptureQueueRepo.deleteById(examCaptureQueue.getId());
|
|
}
|
|
}
|
|
|
|
|
|
- @Deprecated
|
|
|
|
- @Override
|
|
|
|
- public CompareFaceSyncInfo compareFaceSyncByFileUrl(Long studentId, String baseFaceToken, String fileUrl) {
|
|
|
|
- CompareFaceSyncInfo compareFaceSyncInfo = new CompareFaceSyncInfo();
|
|
|
|
- compareFaceSyncInfo.setStudentId(studentId);
|
|
|
|
- JSONObject facePPResult = null;
|
|
|
|
- JsonHttpResponseHolder jsonHttpResponseHolder = null;
|
|
|
|
- try {
|
|
|
|
- jsonHttpResponseHolder = FaceppClient.getClient().
|
|
|
|
- compareWithTokenAndImageUrl(baseFaceToken,
|
|
|
|
- FileStorageUtil.realPath(fileUrl),
|
|
|
|
- FileStorageUtil.realPathBackup(fileUrl));
|
|
|
|
- facePPResult = jsonHttpResponseHolder.getRespBody();
|
|
|
|
- } catch (StatusException e) {
|
|
|
|
- //如果错误码是801,802,803直接结束,不重试
|
|
|
|
- if (e.getCode().equals("801") || e.getCode().equals("802") || e.getCode().equals("803")) {
|
|
|
|
- compareFaceSyncInfo.setIsPass(false);
|
|
|
|
- compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
- compareFaceSyncInfo.setErrorMsg(e.getDesc());
|
|
|
|
-
|
|
|
|
- log.error("[COMPARE_FACE_SYNC] face++人脸比对无法处理的图片地址,errMsg=" + e.getDesc(), e);
|
|
|
|
- return compareFaceSyncInfo;
|
|
|
|
- }
|
|
|
|
- throw e;
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- compareFaceSyncInfo.setIsPass(false);
|
|
|
|
- compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
- compareFaceSyncInfo.setErrorMsg("系统异常");
|
|
|
|
-
|
|
|
|
- log.error("[COMPARE_FACE_SYNC] 未处理的系统异常,errMsg=" + e.getMessage(), e);
|
|
|
|
- return compareFaceSyncInfo;
|
|
|
|
- }
|
|
|
|
- if (facePPResult.containsKey(Constants.ERROR_MSG)) {
|
|
|
|
- compareFaceSyncInfo.setFaceCompareResult(facePPResult.toString());
|
|
|
|
- compareFaceSyncInfo.setIsPass(false);
|
|
|
|
- String errMsg = facePPResult.getString(Constants.ERROR_MSG);
|
|
|
|
- if (errMsg.contains(Constants.FACE_COMPARE_AUTHORIZATION_ERROR)) {
|
|
|
|
- compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
- }
|
|
|
|
- if (errMsg.contains(Constants.FACE_COMPARE_CONCURRENCY_LIMIT_EXCEEDED)) {
|
|
|
|
- log.error("[FaceCompare] FacePlusPlus_QPS_CONCURRENCY_LIMITED");
|
|
|
|
- compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
- }
|
|
|
|
- compareFaceSyncInfo.setErrorMsg("facePP called failed : " + facePPResult.toString());
|
|
|
|
- return compareFaceSyncInfo;
|
|
|
|
- } else {
|
|
|
|
- compareFaceSyncInfo.setFaceCompareResult(facePPResult.toString());
|
|
|
|
- if (facePPResult.containsKey("confidence")) {
|
|
|
|
- double confidence = facePPResult.getDouble("confidence");
|
|
|
|
- JSONObject thresholdsJsonObject = facePPResult.getJSONObject("thresholds");
|
|
|
|
- double le4 = thresholdsJsonObject.getDouble("1e-4");
|
|
|
|
- JSONArray face2Array = facePPResult.getJSONArray("faces2");
|
|
|
|
- boolean hasStranger = face2Array.size() > 1;
|
|
|
|
- compareFaceSyncInfo.setIsStranger(hasStranger);//是否有陌生人
|
|
|
|
- boolean isPass = confidence >= le4;
|
|
|
|
- compareFaceSyncInfo.setIsPass(isPass);//是否通过
|
|
|
|
- String errorMsg = null;
|
|
|
|
- if (hasStranger && !isPass) {
|
|
|
|
- errorMsg = "检测过程中相片非本人,且存在多人脸";
|
|
|
|
- } else if (hasStranger) {
|
|
|
|
- errorMsg = "检测过程中多人脸失败";
|
|
|
|
- } else if (!isPass) {
|
|
|
|
- errorMsg = "检测过程中相片非本人";
|
|
|
|
- }
|
|
|
|
- compareFaceSyncInfo.setErrorMsg(errorMsg);
|
|
|
|
- } else {
|
|
|
|
- compareFaceSyncInfo.setIsPass(false);
|
|
|
|
- compareFaceSyncInfo.setErrorMsg("未检测到人脸");
|
|
|
|
- }
|
|
|
|
- return compareFaceSyncInfo;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ // @Deprecated
|
|
|
|
+ // @Override
|
|
|
|
+ // public CompareFaceSyncInfo compareFaceSyncByFileUrl(Long studentId, String baseFaceToken, String fileUrl) {
|
|
|
|
+ // CompareFaceSyncInfo compareFaceSyncInfo = new CompareFaceSyncInfo();
|
|
|
|
+ // compareFaceSyncInfo.setStudentId(studentId);
|
|
|
|
+ // JSONObject facePPResult = null;
|
|
|
|
+ // JsonHttpResponseHolder jsonHttpResponseHolder = null;
|
|
|
|
+ // try {
|
|
|
|
+ // jsonHttpResponseHolder = FaceppClient.getClient().
|
|
|
|
+ // compareWithTokenAndImageUrl(baseFaceToken,
|
|
|
|
+ // FileStorageUtil.realPath(fileUrl),
|
|
|
|
+ // FileStorageUtil.realPathBackup(fileUrl));
|
|
|
|
+ // facePPResult = jsonHttpResponseHolder.getRespBody();
|
|
|
|
+ // } catch (StatusException e) {
|
|
|
|
+ // //如果错误码是801,802,803直接结束,不重试
|
|
|
|
+ // if (e.getCode().equals("801") || e.getCode().equals("802") || e.getCode().equals("803")) {
|
|
|
|
+ // compareFaceSyncInfo.setIsPass(false);
|
|
|
|
+ // compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
+ // compareFaceSyncInfo.setErrorMsg(e.getDesc());
|
|
|
|
+ //
|
|
|
|
+ // log.error("[COMPARE_FACE_SYNC] face++人脸比对无法处理的图片地址,errMsg=" + e.getDesc(), e);
|
|
|
|
+ // return compareFaceSyncInfo;
|
|
|
|
+ // }
|
|
|
|
+ // throw e;
|
|
|
|
+ // } catch (Exception e) {
|
|
|
|
+ // compareFaceSyncInfo.setIsPass(false);
|
|
|
|
+ // compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
+ // compareFaceSyncInfo.setErrorMsg("系统异常");
|
|
|
|
+ //
|
|
|
|
+ // log.error("[COMPARE_FACE_SYNC] 未处理的系统异常,errMsg=" + e.getMessage(), e);
|
|
|
|
+ // return compareFaceSyncInfo;
|
|
|
|
+ // }
|
|
|
|
+ // if (facePPResult.containsKey(Constants.ERROR_MSG)) {
|
|
|
|
+ // compareFaceSyncInfo.setFaceCompareResult(facePPResult.toString());
|
|
|
|
+ // compareFaceSyncInfo.setIsPass(false);
|
|
|
|
+ // String errMsg = facePPResult.getString(Constants.ERROR_MSG);
|
|
|
|
+ // if (errMsg.contains(Constants.FACE_COMPARE_AUTHORIZATION_ERROR)) {
|
|
|
|
+ // compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
+ // }
|
|
|
|
+ // if (errMsg.contains(Constants.FACE_COMPARE_CONCURRENCY_LIMIT_EXCEEDED)) {
|
|
|
|
+ // log.error("[FaceCompare] FacePlusPlus_QPS_CONCURRENCY_LIMITED");
|
|
|
|
+ // compareFaceSyncInfo.setExistsSystemError(true);
|
|
|
|
+ // }
|
|
|
|
+ // compareFaceSyncInfo.setErrorMsg("facePP called failed : " + facePPResult.toString());
|
|
|
|
+ // return compareFaceSyncInfo;
|
|
|
|
+ // } else {
|
|
|
|
+ // compareFaceSyncInfo.setFaceCompareResult(facePPResult.toString());
|
|
|
|
+ // if (facePPResult.containsKey("confidence")) {
|
|
|
|
+ // double confidence = facePPResult.getDouble("confidence");
|
|
|
|
+ // JSONObject thresholdsJsonObject = facePPResult.getJSONObject("thresholds");
|
|
|
|
+ // double le4 = thresholdsJsonObject.getDouble("1e-4");
|
|
|
|
+ // JSONArray face2Array = facePPResult.getJSONArray("faces2");
|
|
|
|
+ // boolean hasStranger = face2Array.size() > 1;
|
|
|
|
+ // compareFaceSyncInfo.setIsStranger(hasStranger);//是否有陌生人
|
|
|
|
+ // boolean isPass = confidence >= le4;
|
|
|
|
+ // compareFaceSyncInfo.setIsPass(isPass);//是否通过
|
|
|
|
+ // String errorMsg = null;
|
|
|
|
+ // if (hasStranger && !isPass) {
|
|
|
|
+ // errorMsg = "检测过程中相片非本人,且存在多人脸";
|
|
|
|
+ // } else if (hasStranger) {
|
|
|
|
+ // errorMsg = "检测过程中多人脸失败";
|
|
|
|
+ // } else if (!isPass) {
|
|
|
|
+ // errorMsg = "检测过程中相片非本人";
|
|
|
|
+ // }
|
|
|
|
+ // compareFaceSyncInfo.setErrorMsg(errorMsg);
|
|
|
|
+ // } else {
|
|
|
|
+ // compareFaceSyncInfo.setIsPass(false);
|
|
|
|
+ // compareFaceSyncInfo.setErrorMsg("未检测到人脸");
|
|
|
|
+ // }
|
|
|
|
+ // return compareFaceSyncInfo;
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public CompareFaceSyncInfo compareFaceSync(StudentCacheBean student, String fileUrl) {
|
|
public CompareFaceSyncInfo compareFaceSync(StudentCacheBean student, String fileUrl) {
|