Joburgess 5 years ago
parent
commit
fe43b43504

+ 22 - 0
edu-task/src/main/java/com/keao/edu/task/jobs/CleanExamRoomTask.java

@@ -0,0 +1,22 @@
+package com.keao.edu.task.jobs;
+
+import com.keao.edu.task.core.BaseTask;
+import com.keao.edu.user.api.client.TaskRemoteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.07.30
+ */
+@Service
+public class CleanExamRoomTask extends BaseTask {
+
+    @Autowired
+    private TaskRemoteService taskRemoteService;
+
+    @Override
+    public void execute() {
+        taskRemoteService.cleanExamRoom();
+    }
+}

+ 8 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java

@@ -92,4 +92,12 @@ public interface ExamRoomDao extends BaseDAO<Long, ExamRoom> {
      */
     List<ExamRoom> getWithExamAndSubject(@Param("examId") Long examId,
                                          @Param("subjectId") Integer subjectId);
+
+    /**
+     * @describe 获取当前时间之前未关闭的考场
+     * @author Joburgess
+     * @date 2020.07.30
+     * @return java.util.List<com.keao.edu.user.api.entity.ExamRoom>
+     */
+    List<ExamRoom> getHistoryOpenExamRoom();
 }

+ 17 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExamRoomService.java

@@ -107,4 +107,21 @@ public interface ExamRoomService extends BaseService<Long, ExamRoom> {
      * @param openFlag
      */
     void changeExamRoom(Long examRoomId, Integer openFlag);
+
+    /**
+     * @describe 强制关闭考场
+     * @author Joburgess
+     * @date 2020.07.30
+     * @param examRoomId: 考场编号
+     * @return com.keao.edu.common.entity.HttpResponseResult
+     */
+    HttpResponseResult forceCloseExamRoom(Long examRoomId);
+
+    /**
+     * @describe 清理未关闭考场
+     * @author Joburgess
+     * @date 2020.07.30
+     * @return void
+     */
+    void cleanExamRoom();
 }

+ 32 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java

@@ -843,4 +843,36 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 			imFeignService.destroyRoom(examRoomId);
 		}
 	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public HttpResponseResult forceCloseExamRoom(Long examRoomId) {
+		if(Objects.isNull(examRoomId)){
+			throw new BizException("请指定考场");
+		}
+		ExamRoom examRoom = examRoomDao.get(examRoomId);
+		if(Objects.isNull(examRoom)){
+			throw new BizException("考场不存在");
+		}
+		examRoom.setOpenFlag(0);
+		examRoomDao.update(examRoom);
+		imFeignService.dismissGroup(examRoom.getMainTeacherUserId().toString(),examRoomId.toString());
+		imFeignService.destroyRoom(examRoomId);
+		return BaseController.succeed();
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void cleanExamRoom() {
+		List<ExamRoom> examRooms = examRoomDao.getHistoryOpenExamRoom();
+		if(CollectionUtils.isEmpty(examRooms)){
+			return;
+		}
+		for (ExamRoom examRoom : examRooms) {
+			examRoom.setOpenFlag(0);
+			imFeignService.dismissGroup(examRoom.getMainTeacherUserId().toString(),examRoom.getId().toString());
+			imFeignService.destroyRoom(examRoom.getId());
+		}
+		examRoomDao.batchUpdate(examRooms);
+	}
 }

+ 9 - 0
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRoomMapper.xml

@@ -428,4 +428,13 @@
 			MAX(exam_end_time_) examEndTime
 		FROM exam_room WHERE examination_basic_id_=#{examId}
     </select>
+    <select id="getHistoryOpenExamRoom" resultMap="ExamRoom">
+		SELECT
+			*
+		FROM
+			exam_room
+		WHERE
+			exam_start_time_ &lt; NOW( )
+			AND open_flag_ =1
+	</select>
 </mapper>

+ 9 - 0
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/TaskRemoteService.java

@@ -39,4 +39,13 @@ public interface TaskRemoteService {
 	@GetMapping("/examEndRemind")
 	void examEndRemind();
 
+	/**
+	 * @describe 清理历史未关闭考场
+	 * @author Joburgess
+	 * @date 2020.07.30
+	 * @return void
+	 */
+	@GetMapping("/cleanExamRoom")
+	void cleanExamRoom();
+
 }

+ 5 - 0
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/fallback/TaskRemoteServiceFallback.java

@@ -29,4 +29,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void examEndRemind() {
 		return;
 	}
+
+	@Override
+	public void cleanExamRoom() {
+		return;
+	}
 }

+ 6 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomController.java

@@ -170,4 +170,10 @@ public class ExamRoomController extends BaseController {
     public HttpResponseResult<List<ExamRoom>> getStudentEnableJoinRoom(Long registId){
         return succeed(examRoomService.getStudentEnableJoinRoom(registId));
     }
+
+    @ApiOperation("强制关闭考场")
+    @GetMapping(value = "/forceCloseExamRoom")
+    public HttpResponseResult forceCloseExamRoom(Long examRoomId){
+        return examRoomService.forceCloseExamRoom(examRoomId);
+    }
 }

+ 6 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/TaskController.java

@@ -47,4 +47,10 @@ public class TaskController extends BaseController {
     public void examEndRemind(){
         examinationBasicService.examEndRemind();
     }
+
+    //清理历史未关闭教室
+    @GetMapping("/cleanExamRoom")
+    public void cleanExamRoom(){
+        examRoomService.cleanExamRoom();
+    }
 }