| 
					
				 | 
			
			
				@@ -290,35 +290,31 @@ public class RealExamService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * [学生]开始考试 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * [学生]开始考试、训练、练习 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param examId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param studentBindIp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param examId             考试Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param studentBindIp      考试学员IP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param examCollectionType 考试集合类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public AjaxResult studentStartRealExam(final Long examId, final String studentBindIp, final String examCollectionType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        l.info("studentStartRealExam = {}", examId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // todo: 暂时没有解决方案 检查 考试的sim和seat,是否正确对应。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // todo:delete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // re.setSimId(getFakeSimId(re)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // l.info("fake re = {}", re); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // check id data. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Step :检查参数examId有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Step :检查参数studentBindIp有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Step :检查参数examCollectionType有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Check:检查参数examId有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            AjaxResult ar01 = checkExamId(examId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (ar01.isError()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return ar01; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AjaxResult ar = checkExamId(examId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ar.isError()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return ar; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // todo:examCollectionType 类型对应 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Check:检查studentBindIp有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtils.isBlank(studentBindIp)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return AjaxResult.error("ip地址无效。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return AjaxResult.error("IP地址无效"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // todo:examCollectionType 类型对应 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         RealExam re = selectRealExamByExamId(examId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Seat seat = seatService.uniqueByBindIp(studentBindIp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -439,69 +435,25 @@ public class RealExamService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public AjaxResult studentRefreshSimState(final String studentBindIp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Seat seat = seatService.uniqueByBindIp(studentBindIp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Check:Seat有效性。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (seat == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new IllegalArgumentException("XXX"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return AjaxResult.error("没有IP对应座次数据!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        AjaxResult ar = commCheckService.checkOneSeatState(seat, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return ar; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                return AjaxResult.success("QWERT-nihao"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return commCheckService.checkOneSeatState(seat, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public AjaxResult checkExamId(final Long examId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // check 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 检查 examId 是否正确存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!exist(examId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return AjaxResult.error("对应考试Id不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        RealExam re = selectRealExamByExamId(examId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 检查 seat_id 是否正确存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Java后端处理填写,不检查。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!seatService.exist(re.getSeatId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return AjaxResult.error("对应座Id不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Java后端处理填写,不检查。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 检查 sim_id 是否正确存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!simService.existBySimId(re.getSimId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return AjaxResult.error("对应模拟器Id不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return AjaxResult.success(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 根据考试集合获得sim_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param exam 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Deprecated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public long getFakeSimId(RealExam exam) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            RealExamCollection coll = realExamCollectionService.selectRealExamCollectionByExamCollectionId(exam.getExamCollectionId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String simType = coll.getSimType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            switch (simType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case Sim.TYPE_0001 -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return 11L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case Sim.TYPE_0002 -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return 12L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case Sim.TYPE_0003 -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return 31L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Check:检查 examId 是否正确存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!exist(examId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return AjaxResult.error("对应考试Id不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return AjaxResult.success(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * [轮询][学生]正在考试界面。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -530,14 +482,9 @@ public class RealExamService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public AjaxResult studentSubmitRealExam(final Long examId, final String studentBindIp, final String examCollectionType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         RealExam re = selectRealExamByExamId(examId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // todo:delete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // re.setSimId(getFakeSimId(re)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Step :检查参数examId有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Step :检查参数studentBindIp有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Step :检查参数examCollectionType有效性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // check part. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             AjaxResult arE1 = checkExamId(examId); 
			 |