qinchao 4 жил өмнө
parent
commit
0835863f73

+ 54 - 6
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/controller/ExamController.java

@@ -1399,6 +1399,7 @@ public class ExamController extends ControllerSupport {
         return map;
     }
 
+    @ApiOperation(value = "ip限制分页",notes = "ip限制分页")
     @GetMapping("ipLimited/page/{curPage}/{pageSize}")
     public PageInfo<ExamIpLimitDomain> ipLimited(@PathVariable Integer curPage, @PathVariable Integer pageSize,
                                                  Long examId, Integer limitType, String ip) {
@@ -1416,23 +1417,61 @@ public class ExamController extends ControllerSupport {
         return pageInfo;
     }
 
-    @PostMapping("ipLimited")
-    public void save(@RequestBody ExamIpLimitEntity entity) {
-        examIpLimitRepo.save(entity);
+    @ApiOperation(value = "保存ip限制信息",notes = "保存ip限制")
+    @PostMapping("ipLimited/{ids}")
+    public void save(@PathVariable String ids, @RequestBody ExamIpLimitEntity entity) {
+
+        //ids不为空,说明是批量设置限制类型
+        if (StringUtils.isNotBlank(ids)) {
+            List<Long> ipIds = getIdsByPath(ids);
+            if(entity.getLimitType()!=null){
+                examIpLimitRepo.updateLimitType(entity.getLimitType(),entity.getExamId(),ipIds);
+            }
+        } else {
+            Long id = entity.getId();
+            Date now = new Date();
+            //新增
+            if (id==null) {
+                entity.setCreationTime(now);
+                examIpLimitRepo.save(entity);
+            } else {
+                //更新
+                Optional<ExamIpLimitEntity> byId = examIpLimitRepo.findById(id);
+                if (byId.isPresent()){
+                    ExamIpLimitEntity ipLimitEntity = byId.get();
+                    if(StringUtils.isNotBlank(entity.getIp())){
+                        ipLimitEntity.setIp(entity.getIp());
+                    }
+                    if(entity.getLimitType()!=null){
+                        ipLimitEntity.setLimitType(entity.getLimitType());
+                    }
+                    ipLimitEntity.setUpdateTime(now);
+                    examIpLimitRepo.save(ipLimitEntity);
+                }
+            }
+
+        }
+
     }
 
+    @ApiOperation(value = "根据主键删除ip限制",notes = "删除ip限制")
     @DeleteMapping("ipLimited/{ids}")
     public void delete(@PathVariable String ids) {
-        List<Long> ipIds = Stream.of(ids.split(",")).map(s -> Long.parseLong(s.trim()))
+        examIpLimitRepo.deleteByIds(getIdsByPath(ids));
+    }
+
+    private List<Long> getIdsByPath(String ids) {
+        return Stream.of(ids.split(",")).map(s -> Long.parseLong(s.trim()))
                 .collect(Collectors.toList());
-        examIpLimitRepo.deleteByIds(ipIds);
     }
 
+    @ApiOperation(value = "根据考试id批量删除ip限制",notes = "删除ip限制")
     @DeleteMapping("ipLimited/all/{examId}")
     public void delete(@PathVariable Long examId) {
         examIpLimitRepo.deleteAllByExamId(examId);
     }
 
+    @ApiOperation(value = "查询整体控制和学习中心控制",notes = "查询控制")
     @GetMapping("ipLimited/property/{examId}")
     public Map<String,Boolean> ipLimitedProperty(@PathVariable Long examId) {
         Map<String,Boolean> map = new HashMap<>();
@@ -1441,6 +1480,7 @@ public class ExamController extends ControllerSupport {
         return map;
     }
 
+    @ApiOperation(value = "修改整体控制和学习中心控制",notes = "修改控制")
     @PutMapping("ipLimited/property/{examId}")
     public void ipLimitedProperty(@PathVariable Long examId, @RequestBody Map<String,Boolean> map) {
         updateExamProperty(examId,49,map.get("totalLimit"));
@@ -1453,6 +1493,13 @@ public class ExamController extends ControllerSupport {
         jdbcTemplate.update(valueSql);
     }
 
+    @ApiOperation(value = "下载ip限制导入模板", notes = "下载导入模板")
+    @GetMapping("ipLimited/downloadTemplate")
+    public void downloadTemplate() {
+        String resoucePath = PathUtil.getResoucePath("templates/ipLimitImportTemplate.xlsx");
+        exportFile("ip限制导入模板.xlsx", new File(resoucePath));
+    }
+
     @ApiOperation(value = "导入考试ip限制", notes = "导入")
     @PostMapping("ipLimited/import")
     public Map<String, Object> importExamIpLimit(@RequestParam Long examId,
@@ -1542,7 +1589,7 @@ public class ExamController extends ControllerSupport {
         return map;
     }
 
-    @ApiOperation(value = "导出Ip限制")
+    @ApiOperation(value = "导出Ip限制",notes = "导出Ip限制")
     @GetMapping("ipLimited/export")
     public void export(Long examId, Integer limitType, String ip) {
         Specification<ExamIpLimitEntity> spec = (root, query, cb) -> {
@@ -1599,6 +1646,7 @@ public class ExamController extends ControllerSupport {
         return false;
     }
 
+    @ApiOperation(value = "检查是否Ip限制",notes = "检查是否Ip限制")
     @GetMapping("ipLimited/{examId}")
     public boolean ipLimited(HttpServletRequest request, @PathVariable Long examId) {
         //是否开启Ip限制

+ 4 - 0
examcloud-core-examwork-dao/src/main/java/cn/com/qmth/examcloud/core/examwork/dao/ExamIpLimitRepo.java

@@ -20,4 +20,8 @@ public interface ExamIpLimitRepo extends JpaRepository<ExamIpLimitEntity, Long>,
 
 	@Query(value = "delete from ec_e_exam_ip_limit where exam_id = ?1 ",nativeQuery = true)
 	void deleteAllByExamId(Long examId);
+
+	@Query(value = "update ec_e_exam_ip_limit t set t.limit_type = ?1" +
+			" where t.exam_id = ?2 and t.id in ?3",nativeQuery = true)
+	void updateLimitType(Integer LimitType, Long examId, List<Long> ids);
 }

BIN
examcloud-core-examwork-starter/src/main/resources/templates/ipLimitImportTemplate.xlsx