浏览代码

update api

deason 1 年之前
父节点
当前提交
7d9f54e606

+ 10 - 0
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/controller/ExamSkipFaceController.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.core.examwork.api.controller;
 
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
 import cn.com.qmth.examcloud.commons.helpers.poi.ExcelWriter;
 import cn.com.qmth.examcloud.core.examwork.service.ExamSkipFaceService;
 import cn.com.qmth.examcloud.core.examwork.service.bean.ExamSkipFaceInfo;
@@ -64,4 +65,13 @@ public class ExamSkipFaceController extends ControllerSupport {
         FileUtils.deleteQuietly(file);
     }
 
+    @PostMapping("/skip/face/setting")
+    @ApiOperation(value = "设置跳过人脸名单(批量启用或取消)")
+    public void enabled(@RequestParam Long examId,
+                        @RequestParam Long[] examStudentIds,
+                        @RequestParam Boolean enabled) {
+        User user = super.getAccessUser();
+        examSkipFaceService.settingExamSkipFace(examId, examStudentIds, enabled, user.getUserId());
+    }
+
 }

+ 6 - 0
examcloud-core-examwork-dao/src/main/java/cn/com/qmth/examcloud/core/examwork/dao/ExamSkipFaceRepo.java

@@ -4,8 +4,14 @@ import cn.com.qmth.examcloud.core.examwork.dao.entity.ExamSkipFaceEntity;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 @Repository
 public interface ExamSkipFaceRepo extends JpaRepository<ExamSkipFaceEntity, Long>, JpaSpecificationExecutor<ExamSkipFaceEntity> {
 
+    @Transactional
+    void deleteByExamIdAndExamStudentIdIn(Long examId, List<Long> examStudentIds);
+
 }

+ 3 - 0
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/ExamSkipFaceService.java

@@ -12,4 +12,7 @@ public interface ExamSkipFaceService {
 
     List<ExamSkipFaceInfo> getAllExamSkipFaceList(ExamSkipFaceQuery req);
 
+    void settingExamSkipFace(Long examId, Long[] examStudentIds, Boolean enabled, Long operateId);
+
+
 }

+ 33 - 0
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/impl/ExamSkipFaceServiceImpl.java

@@ -2,10 +2,12 @@ package cn.com.qmth.examcloud.core.examwork.service.impl;
 
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.examwork.dao.ExamSkipFaceRepo;
+import cn.com.qmth.examcloud.core.examwork.dao.entity.ExamSkipFaceEntity;
 import cn.com.qmth.examcloud.core.examwork.service.ExamSkipFaceService;
 import cn.com.qmth.examcloud.core.examwork.service.bean.ExamSkipFaceInfo;
 import cn.com.qmth.examcloud.core.examwork.service.bean.ExamSkipFaceQuery;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -19,6 +21,8 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -106,4 +110,33 @@ public class ExamSkipFaceServiceImpl implements ExamSkipFaceService {
         return sql.toString();
     }
 
+    @Override
+    public void settingExamSkipFace(Long examId, Long[] examStudentIds, Boolean enabled, Long operateId) {
+        if (examId == null) {
+            throw new StatusException("考试ID不能为空!");
+        }
+
+        if (ArrayUtils.isEmpty(examStudentIds)) {
+            throw new StatusException("考生ID集合不能为空!");
+        }
+
+        log.warn("设置考试跳过人脸名单!examId:{} examStudentIds:{} enabled:{} operateId:{}",
+                examId, examStudentIds, enabled, operateId);
+
+        if (enabled) {
+            for (Long examStudentId : examStudentIds) {
+                ExamSkipFaceEntity entity = new ExamSkipFaceEntity();
+                entity.setExamId(examId);
+                entity.setExamStudentId(examStudentId);
+                entity.setOperateId(operateId);
+                entity.setCreationTime(new Date());
+                entity.setUpdateTime(new Date());
+                examSkipFaceRepo.save(entity);
+            }
+            return;
+        }
+
+        examSkipFaceRepo.deleteByExamIdAndExamStudentIdIn(examId, Arrays.asList(examStudentIds));
+    }
+
 }