|
@@ -98,15 +98,17 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void joinRoomSuccess(Long registrationId,String roomId,String userId) throws Exception {
|
|
|
+ public void joinRoomSuccess(RoomMember roomMember) throws Exception {
|
|
|
StudentExamResultApiDto examResult = null;
|
|
|
- log.info("joinRoomSuccess: roomId={}, isAudience={}, isDisableCamera={},isMusicMode={}", roomId);
|
|
|
+ String roomId = roomMember.getRid();
|
|
|
+ String userId = roomMember.getUid();
|
|
|
+ Long registrationId = roomMember.getExamRegistrationId();
|
|
|
+ log.info("joinRoomSuccess: roomId={}, userId={}", roomId,userId);
|
|
|
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userId));
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(roomMember.getUid()));
|
|
|
String realName = sysUser.getRealName();
|
|
|
if(registrationId != null){
|
|
|
examResult = eduUserFeignService.getExamResult(registrationId);
|
|
|
- roomId = examResult.getRoomId();
|
|
|
}
|
|
|
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
@@ -125,7 +127,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
saveRoom(roomId, roomId, curTime, null);
|
|
|
}
|
|
|
RoleEnum roleEnum;
|
|
|
- RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
if (roomMember == null) {
|
|
|
if(sysUser.getId().equals(examRoom.getMainTeacherUserId())){
|
|
|
roleEnum = RoleEnum.MainTeacher;
|
|
@@ -293,14 +294,17 @@ public class RoomServiceImpl implements RoomService {
|
|
|
roomMemberDao.save(roomMember);
|
|
|
}
|
|
|
|
|
|
- public void leaveRoomSuccess(Long registrationId,String roomId,String userId) throws Exception {
|
|
|
+ public void leaveRoomSuccess(RoomMember roomMember) throws Exception {
|
|
|
+ String roomId = roomMember.getRid();
|
|
|
+ String userId = roomMember.getUid();
|
|
|
+ Long registrationId = roomMember.getExamRegistrationId();
|
|
|
+ log.info("leaveRoomSuccess: roomId={}, userId={}", roomId,userId);
|
|
|
if(registrationId != null){
|
|
|
StudentExamResultApiDto examResult = eduUserFeignService.getExamResult(registrationId);
|
|
|
roomId = examResult.getRoomId();
|
|
|
}
|
|
|
|
|
|
SysUser user = sysUserFeignService.queryUserById(Integer.parseInt(userId));
|
|
|
- log.info("leaveRoom: roomId={}, userId={}", roomId,userId);
|
|
|
|
|
|
CheckUtils.checkArgument(userId != null, "userId must't be null");
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
@@ -310,7 +314,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
log.error("room : {} not exist ", roomId);
|
|
|
return;
|
|
|
}
|
|
|
- RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
if (roomMember == null) {
|
|
|
log.error("{} not exist in room: {}", userId, roomId);
|
|
|
return;
|
|
@@ -1220,13 +1223,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
public boolean statusSync(ChannelStateNotify notify) throws Exception {
|
|
|
String roomId = notify.getRoomId();
|
|
|
String userId = notify.getUserId();
|
|
|
-
|
|
|
- RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
- log.info("statusSync roomMember:{}",roomMember);
|
|
|
-
|
|
|
- if(roomMember == null){
|
|
|
- return false;
|
|
|
- }
|
|
|
+ RoomMember roomMember = null;
|
|
|
if(notify.getEvent() == 1){
|
|
|
//同步房间信息
|
|
|
}else if(notify.getEvent() == 2){
|
|
@@ -1237,47 +1234,66 @@ public class RoomServiceImpl implements RoomService {
|
|
|
redisTemplate.delete("sessionId:" + roomId);
|
|
|
}else if(notify.getEvent() == 11){
|
|
|
//成员加入
|
|
|
- log.info("成员加入 roomId: {}, userId: {}",roomId, userId);
|
|
|
// roomMemberDao.updateMsidByRidAndUid(roomId,userId,msidFlag);
|
|
|
- joinRoomSuccess(roomMember.getExamRegistrationId(),roomId,userId);
|
|
|
+ roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
+ if(roomMember == null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ joinRoomSuccess(roomMember);
|
|
|
}else if(notify.getEvent() == 12){
|
|
|
//成员退出
|
|
|
- log.info("成员退出 roomId: {}, userId: {}",roomId, userId);
|
|
|
// roomMemberDao.updateMsidByRidAndUid(roomId,userId,msidFlag);
|
|
|
- leaveRoomSuccess(roomMember.getExamRegistrationId(),roomId,userId);
|
|
|
+ roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
+ if(roomMember == null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ leaveRoomSuccess(roomMember);
|
|
|
}else if(notify.getEvent() == 20){
|
|
|
- log.info("资源变动 roomId: {}, userId: {}",roomId, userId);
|
|
|
- boolean msidFlag = false;
|
|
|
- Integer state = null;
|
|
|
- List<Member> members = notify.getMembers();
|
|
|
- if(members != null && members.size() != 0){
|
|
|
- Object uris = JSONObject.parseObject(members.get(0).getData().toJSONString()).get("uris");
|
|
|
- if(uris != null){
|
|
|
- List<UrisDto> jsonArray = JSONObject.parseArray(uris.toString(),UrisDto.class);
|
|
|
- for (UrisDto urisDto : jsonArray) {
|
|
|
- //视频流
|
|
|
- if(urisDto.getMediaType() == 1){
|
|
|
- state = urisDto.getState();
|
|
|
- if(state == 1){
|
|
|
- msidFlag = true;
|
|
|
- }
|
|
|
- break;
|
|
|
- }else {
|
|
|
- //音频流
|
|
|
+ roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
+ if(roomMember == null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ resourceChange(roomMember,notify.getMembers());
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void resourceChange(RoomMember roomMember,List<Member> members){
|
|
|
+ String roomId = roomMember.getRid();
|
|
|
+ String userId = roomMember.getUid();
|
|
|
+ log.info("资源变动 roomId: {}, userId: {}",roomId, userId);
|
|
|
+ boolean msidFlag = false;
|
|
|
+ Integer state = null;
|
|
|
+ if(members != null && members.size() != 0){
|
|
|
+ Object uris = JSONObject.parseObject(members.get(0).getData().toJSONString()).get("uris");
|
|
|
+ if(uris != null){
|
|
|
+ List<UrisDto> jsonArray = JSONObject.parseArray(uris.toString(),UrisDto.class);
|
|
|
+ for (UrisDto urisDto : jsonArray) {
|
|
|
+ //视频流
|
|
|
+ if(urisDto.getMediaType() == 1){
|
|
|
+ state = urisDto.getState();
|
|
|
+ if(state == 1){
|
|
|
+ msidFlag = true;
|
|
|
}
|
|
|
+ break;
|
|
|
+ }else {
|
|
|
+ //音频流
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //同步录制资源
|
|
|
- //资源发生变动
|
|
|
- if(roomMember.isMsidFlag() != msidFlag){
|
|
|
- roomMemberDao.updateMsidFlagByRidAndUid(roomId,userId,state);
|
|
|
- if(roomMember.getExamRegistrationId() == null){
|
|
|
+ }
|
|
|
+ //同步录制资源
|
|
|
+ //资源发生变动
|
|
|
+ if(roomMember.isMsidFlag() != msidFlag){
|
|
|
+ roomMemberDao.updateMsidFlagByRidAndUid(roomId,userId,state);
|
|
|
+ if(roomMember.getExamRegistrationId() == null){
|
|
|
+ try {
|
|
|
imHelper.configRecord(roomId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return true;
|
|
|
}
|
|
|
|
|
|
@Override
|