Răsfoiți Sursa

saveFaceLiveVerifyResult api

deason 3 ani în urmă
părinte
comite
7849647015

+ 11 - 0
examcloud-core-oe-student-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/student/api/controller/client/ExamProcessController.java

@@ -6,6 +6,9 @@ import cn.com.qmth.examcloud.commons.util.FileUtil;
 import cn.com.qmth.examcloud.commons.util.JsonMapper;
 import cn.com.qmth.examcloud.core.oe.student.base.utils.Check;
 import cn.com.qmth.examcloud.core.oe.student.bean.*;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceCaptureResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceCompareResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceLiveVerifyResult;
 import cn.com.qmth.examcloud.core.oe.student.service.*;
 import cn.com.qmth.examcloud.support.Constants;
 import cn.com.qmth.examcloud.support.examing.ExamQuestion;
@@ -210,4 +213,12 @@ public class ExamProcessController extends ControllerSupport {
         faceProcessService.saveFaceCaptureResult(req);
     }
 
+    @ApiOperation(value = "保存人脸活体验证结果")
+    @PostMapping("/saveFaceLiveVerifyResult")
+    public void saveFaceLiveVerifyResult(@RequestBody FaceLiveVerifyResult req) {
+        User user = getAccessUser();
+        req.setStudentId(user.getUserId());
+        faceProcessService.saveFaceLiveVerifyResult(req);
+    }
+
 }

+ 28 - 0
examcloud-core-oe-student-dao/src/main/java/cn/com/qmth/examcloud/core/oe/student/dao/enums/FaceLiveVerifyStatus.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.examcloud.core.oe.student.dao.enums;
+
+/**
+ * 人脸活体验证状态
+ */
+public enum FaceLiveVerifyStatus {
+
+    none("验证成功"),// 无异常
+
+    liveness_action_error("活检动作错误"),
+
+    face_count_error("人脸数量异常"),
+
+    face_compare_error("人脸比对异常"),
+
+    unknown("未知");
+
+    private String description;
+
+    FaceLiveVerifyStatus(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+}

+ 1 - 8
examcloud-core-oe-student-dao/src/main/java/cn/com/qmth/examcloud/core/oe/student/dao/enums/FaceVerifyResult.java

@@ -35,7 +35,7 @@ public enum FaceVerifyResult {
 
     private String desc;
 
-    private FaceVerifyResult(String desc) {
+    FaceVerifyResult(String desc) {
         this.desc = desc;
     }
 
@@ -43,12 +43,5 @@ public enum FaceVerifyResult {
         return desc;
     }
 
-    public void setDesc(String desc) {
-        this.desc = desc;
-    }
-
-    public static void main(String[] args) {
-
-    }
 }	
 

+ 1 - 1
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/bean/FaceCaptureResult.java → examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/bean/client/FaceCaptureResult.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.core.oe.student.bean;
+package cn.com.qmth.examcloud.core.oe.student.bean.client;
 
 import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/bean/FaceCompareResult.java → examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/bean/client/FaceCompareResult.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.core.oe.student.bean;
+package cn.com.qmth.examcloud.core.oe.student.bean.client;
 
 import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
 import io.swagger.annotations.ApiModelProperty;

+ 68 - 0
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/bean/client/FaceLiveVerifyAction.java

@@ -0,0 +1,68 @@
+package cn.com.qmth.examcloud.core.oe.student.bean.client;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 人脸活体具体动作验证结果
+ */
+public class FaceLiveVerifyAction implements JsonSerializable {
+
+    private static final long serialVersionUID = 3567311334163339241L;
+
+    @ApiModelProperty(value = "动作类型")
+    private String type;
+
+    @ApiModelProperty(value = "是否通过")
+    private Boolean pass;
+
+    @ApiModelProperty(value = "图片地址")
+    private String fileUrl;
+
+    @ApiModelProperty(value = "操作次数")
+    private Integer operateNum;
+
+    @ApiModelProperty(value = "处理耗时(毫秒)")
+    private Long processTime;
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Boolean getPass() {
+        return pass;
+    }
+
+    public void setPass(Boolean pass) {
+        this.pass = pass;
+    }
+
+    public String getFileUrl() {
+        return fileUrl;
+    }
+
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
+    }
+
+    public Integer getOperateNum() {
+        return operateNum;
+    }
+
+    public void setOperateNum(Integer operateNum) {
+        this.operateNum = operateNum;
+    }
+
+    public Long getProcessTime() {
+        return processTime;
+    }
+
+    public void setProcessTime(Long processTime) {
+        this.processTime = processTime;
+    }
+
+}

+ 137 - 0
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/bean/client/FaceLiveVerifyResult.java

@@ -0,0 +1,137 @@
+package cn.com.qmth.examcloud.core.oe.student.bean.client;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import cn.com.qmth.examcloud.core.oe.student.dao.enums.FaceLiveVerifyStatus;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * 人脸活体验证结果
+ */
+public class FaceLiveVerifyResult implements JsonSerializable {
+
+    private static final long serialVersionUID = 3567311334163339241L;
+
+    @ApiModelProperty(value = "学生ID", hidden = true)
+    private Long studentId;
+
+    @ApiModelProperty(value = "考试记录ID")
+    private Long examRecordDataId;
+
+    @ApiModelProperty(value = "验证状态")
+    private FaceLiveVerifyStatus status;
+
+    @ApiModelProperty(value = "动作验证列表")
+    private List<FaceLiveVerifyAction> actions;
+
+    @ApiModelProperty(value = "人脸数量")
+    private Integer faceCount;
+
+    @ApiModelProperty(value = "相似度分数")
+    private Double similarity;
+
+    @ApiModelProperty(value = "真实性分数")
+    private Double realness;
+
+    @ApiModelProperty(value = "处理耗时(毫秒)")
+    private Long processTime;
+
+    @ApiModelProperty(value = "验证次数")
+    private Integer verifyTimes;
+
+    @ApiModelProperty(value = "是否错误")
+    private Boolean hasError;
+
+    @ApiModelProperty(value = "错误信息")
+    private String errorMsg;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public Long getExamRecordDataId() {
+        return examRecordDataId;
+    }
+
+    public void setExamRecordDataId(Long examRecordDataId) {
+        this.examRecordDataId = examRecordDataId;
+    }
+
+    public FaceLiveVerifyStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(FaceLiveVerifyStatus status) {
+        this.status = status;
+    }
+
+    public List<FaceLiveVerifyAction> getActions() {
+        return actions;
+    }
+
+    public void setActions(List<FaceLiveVerifyAction> actions) {
+        this.actions = actions;
+    }
+
+    public Integer getFaceCount() {
+        return faceCount;
+    }
+
+    public void setFaceCount(Integer faceCount) {
+        this.faceCount = faceCount;
+    }
+
+    public Double getSimilarity() {
+        return similarity;
+    }
+
+    public void setSimilarity(Double similarity) {
+        this.similarity = similarity;
+    }
+
+    public Double getRealness() {
+        return realness;
+    }
+
+    public void setRealness(Double realness) {
+        this.realness = realness;
+    }
+
+    public Long getProcessTime() {
+        return processTime;
+    }
+
+    public void setProcessTime(Long processTime) {
+        this.processTime = processTime;
+    }
+
+    public Integer getVerifyTimes() {
+        return verifyTimes;
+    }
+
+    public void setVerifyTimes(Integer verifyTimes) {
+        this.verifyTimes = verifyTimes;
+    }
+
+    public Boolean getHasError() {
+        return hasError;
+    }
+
+    public void setHasError(Boolean hasError) {
+        this.hasError = hasError;
+    }
+
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+
+}

+ 5 - 2
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/service/FaceProcessService.java

@@ -1,7 +1,8 @@
 package cn.com.qmth.examcloud.core.oe.student.service;
 
-import cn.com.qmth.examcloud.core.oe.student.bean.FaceCaptureResult;
-import cn.com.qmth.examcloud.core.oe.student.bean.FaceCompareResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceCaptureResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceCompareResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceLiveVerifyResult;
 
 /**
  * 人脸照片处理相关接口
@@ -12,4 +13,6 @@ public interface FaceProcessService {
 
     void saveFaceCaptureResult(FaceCaptureResult req);
 
+    void saveFaceLiveVerifyResult(FaceLiveVerifyResult req);
+
 }

+ 9 - 3
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/service/impl/FaceProcessServiceImpl.java

@@ -3,8 +3,9 @@ package cn.com.qmth.examcloud.core.oe.student.service.impl;
 import cn.com.qmth.examcloud.commons.util.FileUtil;
 import cn.com.qmth.examcloud.core.oe.student.base.bean.CompareFaceSyncInfo;
 import cn.com.qmth.examcloud.core.oe.student.base.utils.Check;
-import cn.com.qmth.examcloud.core.oe.student.bean.FaceCaptureResult;
-import cn.com.qmth.examcloud.core.oe.student.bean.FaceCompareResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceCaptureResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceCompareResult;
+import cn.com.qmth.examcloud.core.oe.student.bean.client.FaceLiveVerifyResult;
 import cn.com.qmth.examcloud.core.oe.student.dao.ExamCaptureRepo;
 import cn.com.qmth.examcloud.core.oe.student.dao.entity.ExamCaptureEntity;
 import cn.com.qmth.examcloud.core.oe.student.service.ExamRecordDataService;
@@ -100,10 +101,15 @@ public class FaceProcessServiceImpl implements FaceProcessService {
             entity.setCameraInfos(Constants.VM_CAMERA_WARN);
             log.warn("虚拟摄像头信息超长! " + req.getExamRecordDataId());
         } else {
-            entity.setCameraInfos(req.getCameraInfos());
+            entity.setCameraInfos(StringUtils.trimToNull(req.getCameraInfos()));
         }
 
         examCaptureRepo.save(entity);
     }
 
+    @Override
+    public void saveFaceLiveVerifyResult(FaceLiveVerifyResult req) {
+        //todo
+    }
+
 }