|
@@ -33,6 +33,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Isolation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -76,6 +77,28 @@ public class RoomServiceImpl implements RoomService {
|
|
|
return baseResponse;
|
|
|
}
|
|
|
|
|
|
+ @Async
|
|
|
+ public void exitRoom(String roomId,String userId){
|
|
|
+ List<RoomMember> byRidAndRole = roomMemberDao.findByRidAndRole(roomId, 3);
|
|
|
+ if(byRidAndRole != null && byRidAndRole.size() > 0){
|
|
|
+ log.info("学员加入时,将其他学员退出房间 byRidAndRole{}",byRidAndRole);
|
|
|
+ for (RoomMember e: byRidAndRole) {
|
|
|
+ if(e.getUid().equals(userId)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ roomMemberDao.deleteUserByRidAndUid(roomId, e.getUid());
|
|
|
+ MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, 3);
|
|
|
+ msg.setUserName(e.getName());
|
|
|
+ userDao.deleteByUid(userId);
|
|
|
+ try {
|
|
|
+ imHelper.publishMessage(userId, roomId, msg);
|
|
|
+ } catch (Exception e1) {
|
|
|
+ e1.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void joinRoomSuccess(Long registrationId,String roomId,String userId) throws Exception {
|
|
|
StudentExamResultApiDto examResult = null;
|
|
|
log.info("joinRoomSuccess: roomId={}, isAudience={}, isDisableCamera={},isMusicMode={}", roomId);
|
|
@@ -85,21 +108,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
if(registrationId != null){
|
|
|
examResult = eduUserFeignService.getExamResult(registrationId);
|
|
|
roomId = examResult.getRoomId();
|
|
|
- List<RoomMember> byRidAndRole = roomMemberDao.findByRidAndRole(roomId, 3);
|
|
|
- if(byRidAndRole != null && byRidAndRole.size() > 0){
|
|
|
- log.info("学员加入时,将其他学员退出房间 byRidAndRole{}",byRidAndRole);
|
|
|
- for (RoomMember e: byRidAndRole) {
|
|
|
- if(e.getUid().equals(userId)){
|
|
|
- continue;
|
|
|
- }
|
|
|
- roomMemberDao.deleteUserByRidAndUid(roomId, e.getUid());
|
|
|
- MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, 3);
|
|
|
- msg.setUserName(e.getName());
|
|
|
- userDao.deleteByUid(userId);
|
|
|
- imHelper.publishMessage(userId, roomId, msg);
|
|
|
-// leaveRoom(e.getExamRegistrationId(),roomId,userId);
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
@@ -158,6 +166,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
this.publishMessage(eduUserFeignService.getPublishMessage(registrationId));
|
|
|
eduUserFeignService.upsetStudentAttendance(registrationId,0);
|
|
|
imHelper.startRecord(roomId, registrationId);
|
|
|
+// exitRoom(roomId,userId);
|
|
|
}else {
|
|
|
eduUserFeignService.upsetTeacherAttendance(examRoom.getId(),sysUser.getId(),0);
|
|
|
imHelper.configRecord(roomId);
|