Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 năm trước cách đây
mục cha
commit
c9e59278be

+ 10 - 0
edu-im/edu-im-api/src/main/java/com/keao/edu/im/api/entity/MemberChangedMessage.java

@@ -7,12 +7,14 @@ public class MemberChangedMessage extends BaseMessage {
     public final static int Action_Leave = 2;
     public final static int Action_Kick = 3;
     public final static int Action_Recorded = 4;
+    public final static int Student_Queue = 5;
 
     private int action;
 
     private String userId;
     private String userName;
     private String roomId;
+    private String paramJson;
     private boolean camera;
     private boolean microphone;
 
@@ -20,6 +22,14 @@ public class MemberChangedMessage extends BaseMessage {
 
     private Date timestamp;
 
+    public String getParamJson() {
+        return paramJson;
+    }
+
+    public void setParamJson(String paramJson) {
+        this.paramJson = paramJson;
+    }
+
     public String getRoomId() {
         return roomId;
     }

+ 3 - 3
edu-im/edu-im-server/src/main/java/com/keao/edu/im/controller/RoomController.java

@@ -32,7 +32,7 @@ public class RoomController{
 
     @RequestMapping(value = "/join", method = RequestMethod.POST)
     public Object joinRoom(@RequestBody ReqUserData data)
-            throws ApiException, Exception {
+            throws Exception {
         RoomResult roomResult = roomService.joinRoom(data.getRegistrationId(), data.isAudience(), data.isDisableCamera(),data.isMusicMode(),data.getRoomId());
         return new BaseResponse<>(roomResult);
     }
@@ -49,7 +49,7 @@ public class RoomController{
         return new BaseResponse<>(roomService.levelRecorded(registrationId));
     }
 
-    @RequestMapping(value = "/roomQuery", method = RequestMethod.POST)
+    @RequestMapping(value = "/startRecord", method = RequestMethod.POST)
     public Object signIn(String roomId) throws Exception {
         roomService.startRecord(roomId);
         return new BaseResponse<>();
@@ -64,7 +64,7 @@ public class RoomController{
     @RequestMapping(value = "/leave", method = RequestMethod.POST)
     public Object leaveRoom(@RequestBody ReqUserData data)
             throws ApiException, Exception {
-        boolean result = roomService.leaveRoom(data.getRegistrationId(),data.getUserId());
+        boolean result = roomService.leaveRoom(data.getRegistrationId(),data.getUserId(),data.getRoomId());
         return new BaseResponse<>(result);
     }
 

+ 1 - 0
edu-im/edu-im-server/src/main/java/com/keao/edu/im/pojo/RoomResult.java

@@ -15,6 +15,7 @@ public class RoomResult {
     private @Getter @Setter String roomId;
     private @Getter @Setter Date startTime;
     private @Getter @Setter int surplusTime;
+    private @Getter @Setter Long registrationId;
     private @Getter @Setter String imToken;
     private @Getter @Setter String authorization;
     private @Getter List<MemberResult> members = new ArrayList<>();

+ 13 - 8
edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/Impl/RoomServiceImpl.java

@@ -180,7 +180,7 @@ public class RoomServiceImpl implements RoomService {
         userResult.setRole(Student.getValue());
         roomResult.setUserInfo(userResult);
         roomResult.setRoomId(recordedRoomId);
-
+        roomResult.setRegistrationId(examRegistrationId);
         roomResult.setMembers(roomMemberDao.findByRid(recordedRoomId));
         log.info("joinRecorded join success: roomId = {}, userId = {}, userName={}, role = {}", recordedRoomId, userId, Student);
         return roomResult;
@@ -189,15 +189,16 @@ public class RoomServiceImpl implements RoomService {
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     @Override
     public RoomResult joinRoom(Long registrationId, boolean isAudience, boolean isDisableCamera,boolean isMusicMode,String roomId) throws ApiException, Exception {
-        if(StringUtils.isNotEmpty(roomId)){
+        if(registrationId != null){
             StudentExamResultApiDto examResult = eduUserFeignService.getExamResult(registrationId);
             Integer recordFlag = examResult.getRecordFlag();
             if(recordFlag != null && recordFlag == 1){
                 joinRecorded(registrationId);
             }
+            roomId = examResult.getRoomId();
         }
 
-        CheckUtils.checkArgument(registrationId != null, "registrationId must't be null");
+        CheckUtils.checkArgument(roomId != null, "roomId must't be null");
 
         log.info("joinRoom: roomId={}, isAudience={}, isDisableCamera={},isMusicMode={}", roomId, isAudience, isDisableCamera,isMusicMode);
 
@@ -440,9 +441,15 @@ public class RoomServiceImpl implements RoomService {
 
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     @Override
-    public Boolean leaveRoom(Long registrationId,String userId){
-        StudentExamResultApiDto examResult = eduUserFeignService.getExamResult(registrationId);
-        String roomId = examResult.getRoomId();
+    public Boolean leaveRoom(Long registrationId,String userId,String roomId){
+        if(registrationId != null){
+            StudentExamResultApiDto examResult = eduUserFeignService.getExamResult(registrationId);
+            Integer recordFlag = examResult.getRecordFlag();
+            if(recordFlag != null && recordFlag == 1){
+                levelRecorded(registrationId);
+            }
+            roomId = examResult.getRoomId();
+        }
 
         SysUser user = null;
         if(StringUtils.isEmpty(userId)){
@@ -555,7 +562,6 @@ public class RoomServiceImpl implements RoomService {
                 if (apiResultInfo.getCode() == 200) {
                     roomMemberDao.deleteUserByRidAndUid(roomId, userId);
                     roomDao.deleteByRid(roomId);
-//                    deleteWhiteboardByUser(roomId, userId);
                     log.info("levelRecorded dismiss the room: {},userId: {}", roomId,userId);
                 } else {
                     log.error("levelRecorded {} exit {} room error: {}", userId, roomId, apiResultInfo.getErrorMessage());
@@ -585,7 +591,6 @@ public class RoomServiceImpl implements RoomService {
             }
         }
         userDao.deleteByUid(userId);
-//        this.signOut(Long.parseLong(roomId));
         return true;
     }
 

+ 1 - 1
edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/RoomService.java

@@ -24,7 +24,7 @@ public interface RoomService {
 
     void signOut(Long roomId);
 
-    public Boolean leaveRoom(Long registrationId,String userId) throws ApiException, Exception;
+    public Boolean leaveRoom(Long registrationId,String userId,String roomId) throws ApiException, Exception;
 
     //only host
     public Boolean downgrade(String roomId, List<ReqChangeUserRoleData.ChangedUser> users) throws ApiException, Exception;

+ 1 - 1
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/EduUserFeignService.java

@@ -36,7 +36,7 @@ public interface EduUserFeignService {
 	 * @param id
 	 * @return
 	 */
-	@PostMapping(value = "examResult/api/get")
+	@PostMapping(value = "studentExamResult/api/get")
 	StudentExamResultApiDto getExamResult(@RequestParam("id") Long id);
 
 	/**

+ 2 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomStudentRelationController.java

@@ -58,8 +58,8 @@ public class ExamRoomStudentRelationController extends BaseController {
 
     @ApiOperation("监考端去录播")
     @PostMapping(value = "/webRecorded")
-    public HttpResponseResult webRecorded(Long nextExamRoomStudentRelationId,Long examRoomStudentRelationId,Integer examStatus,Long roomId) {
-        examRoomStudentRelationService.recorded(nextExamRoomStudentRelationId,examRoomStudentRelationId,examStatus,roomId);
+    public HttpResponseResult webRecorded(Long nextExamRoomStudentRelationId,Long examRoomStudentRelationId,Long roomId) {
+        examRoomStudentRelationService.recorded(nextExamRoomStudentRelationId,examRoomStudentRelationId,roomId);
         return succeed();
     }
 

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/StudentExamResultController.java

@@ -62,7 +62,7 @@ public class StudentExamResultController extends BaseController {
 
     @ApiOperation("获取考试结果")
     @PostMapping(value = "/api/get")
-    public StudentExamResultApiDto update(Long id){
+    public StudentExamResultApiDto get(Long id){
         return studentExamResultService.getStudentExamResultApiDto(id);
     }
 

+ 4 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamCertificationService.java

@@ -41,4 +41,8 @@ public interface ExamCertificationService extends BaseService<Long, ExamCertific
      * @return
      */
     ExamCertificationDto findDetailByStudentId(Integer studentId, Long examRegistrationId);
+
+    void batchInsert(List<ExamCertification> examCertifications);
+
+    int deleteWithRegist(List<Long> registIds);
 }

+ 4 - 5
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRoomStudentRelationService.java

@@ -96,12 +96,11 @@ public interface ExamRoomStudentRelationService extends BaseService<Long, ExamRo
 
     /**
      * 监考端去录播
-     * @param nextExamRoomStudentRelationId
-     * @param examRoomStudentRelationId
-     * @param examStatus
-     * @param roomId
+     * @param nextExamRoomStudentRelationId 下一位学员房间关联id
+     * @param examRoomStudentRelationId 当前学员房间关联id
+     * @param roomId 房间编号
      */
-    void recorded(Long nextExamRoomStudentRelationId, Long examRoomStudentRelationId, Integer examStatus, Long roomId);
+    void recorded(Long nextExamRoomStudentRelationId, Long examRoomStudentRelationId, Long roomId);
 
     /**
      * 学生端去录播

+ 10 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamCertificationServiceImpl.java

@@ -87,4 +87,14 @@ public class ExamCertificationServiceImpl extends BaseServiceImpl<Long, ExamCert
 		examCertificationDto.setCertificatePhoto(student.getCertificatePhoto());
 		return examCertificationDto;
 	}
+
+	@Override
+	public void batchInsert(List<ExamCertification> examCertifications) {
+		examCertificationDao.batchInsert(examCertifications);
+	}
+
+	@Override
+	public int deleteWithRegist(List<Long> registIds) {
+		return examCertificationDao.deleteWithRegist(registIds);
+	}
 }

+ 43 - 16
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -14,6 +14,7 @@ import com.keao.edu.common.service.IdGeneratorService;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.im.api.client.ImFeignService;
+import com.keao.edu.im.api.entity.MemberChangedMessage;
 import com.keao.edu.im.api.entity.PublishMessageDto;
 import com.keao.edu.im.api.entity.ReqUserData;
 import com.keao.edu.user.api.entity.ExamRoom;
@@ -25,6 +26,7 @@ import com.keao.edu.user.dto.ExamRoomStudentRelationDto;
 import com.keao.edu.user.dto.RoomStudentListDto;
 import com.keao.edu.user.entity.*;
 import com.keao.edu.user.page.ExamRoomStudentRelationQueryInfo;
+import com.keao.edu.user.service.ExamCertificationService;
 import com.keao.edu.user.service.ExamRoomStudentRelationService;
 import com.keao.edu.user.service.ExamTeacherSalaryService;
 import com.keao.edu.user.service.OrganizationService;
@@ -52,7 +54,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 	@Autowired
 	private StudentExamResultDao studentExamResultDao;
 	@Autowired
-	private ExamCertificationDao examCertificationDao;
+	private ExamCertificationService examCertificationService;
 	@Autowired
 	private ExamLocationDao examLocationDao;
 	@Autowired
@@ -165,7 +167,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 			studentExamResultDao.batchInsert(studentExamResults);
 		}
 		if(!CollectionUtils.isEmpty(examCertifications)){
-			examCertificationDao.batchInsert(examCertifications);
+			examCertificationService.batchInsert(examCertifications);
 		}
 		if(!CollectionUtils.isEmpty(updateRegistrations)){
 			examRegistrationDao.batchUpdate(updateRegistrations);
@@ -263,7 +265,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		List<Long> registIds = Arrays.asList(registIdsStr.split(",")).stream().map(e -> Long.valueOf(e)).collect(Collectors.toList());
 		examRoomStudentRelationDao.deleteStudentsFromExamRoom(examRoomId, registIds);
 		studentExamResultDao.deleteWithRegists(registIds);
-		int deleteNum = examCertificationDao.deleteWithRegist(registIds);
+		int deleteNum = examCertificationService.deleteWithRegist(registIds);
 		examRoom.setExamRoomStudentNum(examRoom.getExamRoomStudentNum()-deleteNum);
 		examRoomDao.update(examRoom);
 		examTeacherSalaryService.teacherSalarySettlementWithExam(examRoom.getExaminationBasicId());
@@ -275,10 +277,22 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 	}
 
 	@Override
-	public void recorded(Long nextExamRoomStudentRelationId, Long examRoomStudentRelationId, Integer examStatus, Long roomId) {
-		PublishMessageDto publishMessageDto = new PublishMessageDto();
-//		publishMessageDto.setUserId();
-//		imFeignService.publishMessage();
+	public void recorded(Long nextExamRoomStudentRelationId, Long examRoomStudentRelationId, Long roomId) {
+		if(examRoomStudentRelationId != null){
+			ExamRoomStudentRelation examRoomStudentRelation = examRoomStudentRelationDao.get(examRoomStudentRelationId);
+			//将当前学员退出教室并添加参考状态,如果考试未完成,清除签到时间,重新签到
+			//关闭学员房间入口
+			examRoomStudentRelation.setClassroomSwitch(YesOrNoEnum.NO);
+			examRoomStudentRelationDao.update(examRoomStudentRelation);
+			PublishMessageDto publishMessageDto = new PublishMessageDto();
+			String userId = examRoomStudentRelation.getStudentId().toString();
+			publishMessageDto.setUserId(userId);
+			publishMessageDto.setRoomId(examRoomStudentRelation.getExamRoomId().toString());
+			MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Recorded, userId,3);
+			publishMessageDto.setMemberChangedMessage(msg);
+			imFeignService.publishMessage(publishMessageDto);
+		}
+		nextStudent(nextExamRoomStudentRelationId);
 	}
 
 	@Override
@@ -292,10 +306,8 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 
 	@Override
 	public void nextBit(Long nextExamRoomStudentRelationId, Long currentExamRoomStudentRelationId, Integer examStatus,Long examRoomId) {
-
 		if(currentExamRoomStudentRelationId != null){
 			ExamRoomStudentRelation examRoomStudentRelation = examRoomStudentRelationDao.get(currentExamRoomStudentRelationId);
-//			Long roomId = examRoomStudentRelation.getExamRoomId();
 			//将当前学员退出教室并添加参考状态,如果考试未完成,清除签到时间,重新签到
 			imFeignService.leaveRoom(new ReqUserData(examRoomStudentRelation.getExamRegistrationId()));
 			if(examStatus == 0){
@@ -309,6 +321,18 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 			examRoomStudentRelation.setClassroomSwitch(YesOrNoEnum.NO);
 			examRoomStudentRelationDao.update(examRoomStudentRelation);
 		}
+		nextStudent(nextExamRoomStudentRelationId);
+
+		try {
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			String message = JSONObject.toJSONString(this.queryNeedCheckingList(examRoomId));
+			WebSocketServer.sendInfo(message,sysUser.getId().toString());
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void nextStudent(Long nextExamRoomStudentRelationId){
 		if(nextExamRoomStudentRelationId != null){
 			ExamRoomStudentRelation examRoomStudentRelation = examRoomStudentRelationDao.get(nextExamRoomStudentRelationId);
 			//开启学员房间入口
@@ -322,13 +346,6 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 					userPhoneMap, null, 0, null, null);
 			sysMessageFeignService.batchSendMessage(sysMessageParams);
 		}
-		try {
-			SysUser sysUser = sysUserFeignService.queryUserInfo();
-			String message = JSONObject.toJSONString(this.queryNeedCheckingList(examRoomId));
-			WebSocketServer.sendInfo(message,sysUser.getId().toString());
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
 	}
 
 	@Override
@@ -356,5 +373,15 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		}
 		studentExamRoom.setSignInTime(new Date());
 		examRoomStudentRelationDao.update(studentExamRoom);
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		PublishMessageDto publishMessageDto = new PublishMessageDto();
+		String userId = sysUser.getId().toString();
+		publishMessageDto.setUserId(userId);
+		publishMessageDto.setRoomId(studentExamRoom.getExamRoomId().toString());
+		MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Student_Queue, userId,3);
+		String jsonString = JSONObject.toJSONString(examCertificationService.needCheckingDetail(examRegistrationId));
+		msg.setParamJson(jsonString);
+		publishMessageDto.setMemberChangedMessage(msg);
+		imFeignService.publishMessage(publishMessageDto);
 	}
 }

+ 1 - 1
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamCertificationMapper.xml

@@ -157,7 +157,7 @@
 	</resultMap>
 	<select id="needCheckingDetail" resultMap="NeedCheckingDetailDtoMap">
 		SELECT ersr.id_ exam_room_student_relation_id_,eb.name_ exam_base_name_,er.exam_start_time_,er.exam_end_time_,er.open_flag_,
-		ser.is_finished_exam_,ersr.exam_room_id_,ersr.sign_in_time_,ersr.classroom_switch_
+		ser.is_finished_exam_,ersr.exam_room_id_,ersr.sign_in_time_,ersr.classroom_switch_,ersr.exam_registration_id_
 		FROM exam_room_student_relation ersr
 		LEFT JOIN examination_basic eb ON eb.id_ = ersr.examination_basic_id_
 		LEFT JOIN exam_room er ON er.id_ = ersr.exam_room_id_