|
@@ -166,7 +166,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public BaseResponse joinRoom(String roomId) throws Exception {
|
|
|
+ public BaseResponse joinRoom(String roomId, Boolean joinRoom) throws Exception {
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
String userId = sysUser.getId().toString();
|
|
@@ -257,10 +257,12 @@ public class RoomServiceImpl implements RoomService {
|
|
|
userResult.setCamera(true);
|
|
|
userResult.setHandUpOn(false);
|
|
|
userResult.setJoinTime(curTime);
|
|
|
- saveRoomMember(userId, sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime, microphone);
|
|
|
+ if (Optional.ofNullable(joinRoom).orElse(true)) {
|
|
|
+ saveRoomMember(userId, sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime, microphone);
|
|
|
+ }
|
|
|
} else {
|
|
|
roleEnum = RoleEnum.getEnumByValue(member.getRole());
|
|
|
- if (roleEnum == RoleTeacher) {
|
|
|
+ if (roleEnum == RoleTeacher && Optional.ofNullable(joinRoom).orElse(true)) {
|
|
|
courseScheduleStudentPaymentDao.adjustPlayMidi(courseId, null, null);
|
|
|
}
|
|
|
userName = member.getName();
|
|
@@ -299,10 +301,12 @@ public class RoomServiceImpl implements RoomService {
|
|
|
.setGroupId(roomId);
|
|
|
}
|
|
|
|
|
|
- // 创建IM群聊
|
|
|
- this.joinImGroup(roomId, courseSchedule.getActualTeacherId(), courseSchedule);
|
|
|
- // RTC服务提供方
|
|
|
- roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
|
|
|
+ if (Optional.ofNullable(joinRoom).orElse(true)) {
|
|
|
+ // 创建IM群聊
|
|
|
+ this.joinImGroup(roomId, courseSchedule.getActualTeacherId(), courseSchedule);
|
|
|
+ // RTC服务提供方
|
|
|
+ roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
|
|
|
+ }
|
|
|
|
|
|
List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores = courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(null, courseId, null, null, null);
|
|
|
Room room = roomDao.findByRid(roomId);
|
|
@@ -712,7 +716,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
// 用户退出房间多次触发调用判定
|
|
|
RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
if (Objects.isNull(roomMember)) {
|
|
|
- log.error("leaveRoomSuccess: REPEATED_EXECUTION roomId={}, userId={}, deviceNum={}", roomId, userId, deviceNum);
|
|
|
+ log.warn("leaveRoomSuccess: REPEATED_EXECUTION roomId={}, userId={}, deviceNum={}", roomId, userId, deviceNum);
|
|
|
return;
|
|
|
}
|
|
|
log.info("leaveRoomSuccess: roomId={}, userId={}, deviceNum={}", roomId, userId, deviceNum);
|
|
@@ -767,10 +771,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
updateDisplay(roomId, userId, "", 0);
|
|
|
}
|
|
|
|
|
|
- List<String> collect = roomMemberDao.findByRid(roomId).stream()
|
|
|
- .map(RoomMember::getUid).distinct().collect(Collectors.toList());
|
|
|
- int roomMembers = roomMemberDao.countByRid(roomId);
|
|
|
- if (roomMembers <= 1 || CollectionUtils.size(collect) <= 1) {
|
|
|
+ if (roomMemberDao.countByRid(roomId) <= 1) {
|
|
|
// 删除群组用户信息
|
|
|
roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
// 删除群组信息
|
|
@@ -781,8 +782,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
this.dismissImGroup(userId, roomId, courseSchedule.getServiceProvider());
|
|
|
//关闭所有曲目播放
|
|
|
courseScheduleStudentMusicScoreDao.closePlayStatus(courseSchedule.getId(), null, null);
|
|
|
- log.info("leaveRoomSuccess dismiss the room: {}, userId: {}, userIds={}, roomMembers={}, role={}", roomId, userId,
|
|
|
- JSON.toJSONString(collect), roomMembers, roleEnum.name());
|
|
|
+ log.info("leaveRoomSuccess dismiss the room: {}, userId: {}, role={}", roomId, userId, roleEnum.name());
|
|
|
} else {
|
|
|
roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
|