Bläddra i källkod

人脸表情由单一的happy.改为多种随机生成

lideyin 5 år sedan
förälder
incheckning
a4a9031ac8

+ 57 - 4
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/service/impl/FaceBiopsyServiceImpl.java

@@ -21,6 +21,7 @@ import cn.com.qmth.examcloud.core.oe.student.service.ExamSessionInfoService;
 import cn.com.qmth.examcloud.core.oe.student.service.FaceBiopsyService;
 import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
+import com.google.common.collect.Lists;
 import com.mysql.cj.util.StringUtils;
 import org.apache.commons.lang3.RandomUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -408,23 +410,74 @@ public class FaceBiopsyServiceImpl implements FaceBiopsyService {
      */
     private List<FaceBiopsyItemStepEntity> addFaceBiopsyItemStepList(Long examRecordDataId, Long faceBiopsyItemId) {
         List<FaceBiopsyItemStepEntity> faceBiopsyItemStepEntityList = new ArrayList<FaceBiopsyItemStepEntity>();
+
+        //step1.人脸比对
         FaceBiopsyItemStepEntity firstStep = new FaceBiopsyItemStepEntity();
         firstStep.setExamRecordDataId(examRecordDataId);
         firstStep.setFaceBiopsyItemId(faceBiopsyItemId);
         firstStep.setAction(FaceBiopsyAction.FACE_COMPARE);
         faceBiopsyItemStepEntityList.add(firstStep);
 
+        //生成乱序表情集合
+        List<FaceBiopsyAction> shuffledExpressionList = generateShuffleExpressions();
+
+        //step2随机表情
+        faceBiopsyItemStepEntityList.add(
+                randomGenerateExpressionStep(examRecordDataId, faceBiopsyItemId, shuffledExpressionList));
+
+        //step3随机表情
+        faceBiopsyItemStepEntityList.add(
+                randomGenerateExpressionStep(examRecordDataId, faceBiopsyItemId, shuffledExpressionList));
+
+        faceBiopsyItemStepRepo.saveAll(faceBiopsyItemStepEntityList);
+        return faceBiopsyItemStepEntityList;
+    }
+
+    /**
+     * 乱序生成人脸表情
+     *
+     * @return
+     */
+    private List<FaceBiopsyAction> generateShuffleExpressions() {
+        List<FaceBiopsyAction> expressionList = Lists.newArrayList();
+        expressionList.add(FaceBiopsyAction.HAPPY);
+        expressionList.add(FaceBiopsyAction.SERIOUS);
+        Collections.shuffle(expressionList);
+        return expressionList;
+    }
+
+    /**
+     * 随机生成表情相关步骤
+     *
+     * @param examRecordDataId
+     * @param faceBiopsyItemId
+     * @return
+     */
+    private FaceBiopsyItemStepEntity randomGenerateExpressionStep(Long examRecordDataId,
+                                                                  Long faceBiopsyItemId,
+                                                                  List<FaceBiopsyAction> shuffledExpressionList) {
         FaceBiopsyItemStepEntity secondStep = new FaceBiopsyItemStepEntity();
         secondStep.setExamRecordDataId(examRecordDataId);
         secondStep.setFaceBiopsyItemId(faceBiopsyItemId);
-        secondStep.setAction(FaceBiopsyAction.HAPPY);
+        secondStep.setAction(takeShuffledExpression(shuffledExpressionList));//获取一条随机生成表情指令
         secondStep.setActionStay(randomGenerateActionStay());//随机生成指令时长(3至6秒)
-        faceBiopsyItemStepEntityList.add(secondStep);
+        return secondStep;
+    }
 
-        faceBiopsyItemStepRepo.saveAll(faceBiopsyItemStepEntityList);
-        return faceBiopsyItemStepEntityList;
+    /**
+     * 获取一条随机生成的指令
+     *
+     * @param shuffledExpressionList
+     * @return
+     */
+    private FaceBiopsyAction takeShuffledExpression(List<FaceBiopsyAction> shuffledExpressionList) {
+        //取完第一条并删除
+        FaceBiopsyAction expression = shuffledExpressionList.get(0);
+        shuffledExpressionList.remove(0);
+        return expression;
     }
 
+
     /**
      * 随机生成指令持续的时长
      *