|
@@ -404,42 +404,50 @@ public class RoomServiceImpl implements RoomService {
|
|
|
RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(courseSchedule.getServiceProvider());
|
|
|
if (Optional.ofNullable(exists).orElse(false)) {
|
|
|
|
|
|
- // 创建群组
|
|
|
- log.info("createImGroup: roomId = {}, userId = {}", roomId, actualTeacherId);
|
|
|
- if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
|
|
|
-
|
|
|
- // 生成群组
|
|
|
- pluginService.chatRoomCreate(roomId, courseSchedule.getName(), courseSchedule.getTeacherId().toString());
|
|
|
+ try {
|
|
|
+ // 创建群组
|
|
|
+ log.info("createImGroup: roomId = {}, userId = {}", roomId, actualTeacherId);
|
|
|
+ if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
|
|
|
|
|
|
- // 群组老师信息
|
|
|
- List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList(ImGroupMemberWrapper.ImGroupMember
|
|
|
- .builder()
|
|
|
- .userId(Long.valueOf(actualTeacherId))
|
|
|
- .imUserIdFormat(false)
|
|
|
- .build());
|
|
|
-
|
|
|
- List<CourseScheduleStudentPayment> payments = courseScheduleStudentPaymentDao.findByCourseSchedule(Long.parseLong(roomId.substring(1)));
|
|
|
- // 群组学生信息
|
|
|
- if (CollectionUtils.isNotEmpty(payments)) {
|
|
|
- for (CourseScheduleStudentPayment item : payments) {
|
|
|
- groupMembers.add(ImGroupMemberWrapper.ImGroupMember
|
|
|
- .builder()
|
|
|
- .userId(Long.valueOf(item.getUserId()))
|
|
|
- .imUserIdFormat(false)
|
|
|
- .build());
|
|
|
+ // 生成群组
|
|
|
+ pluginService.chatRoomCreate(roomId, courseSchedule.getName(), courseSchedule.getTeacherId().toString());
|
|
|
+
|
|
|
+ // 群组老师信息
|
|
|
+ List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList(ImGroupMemberWrapper.ImGroupMember
|
|
|
+ .builder()
|
|
|
+ .userId(Long.valueOf(actualTeacherId))
|
|
|
+ .imUserIdFormat(false)
|
|
|
+ .build());
|
|
|
+
|
|
|
+ List<CourseScheduleStudentPayment> payments = courseScheduleStudentPaymentDao.findByCourseSchedule(Long.parseLong(roomId.substring(1)));
|
|
|
+ // 群组学生信息
|
|
|
+ if (CollectionUtils.isNotEmpty(payments)) {
|
|
|
+ for (CourseScheduleStudentPayment item : payments) {
|
|
|
+ groupMembers.add(ImGroupMemberWrapper.ImGroupMember
|
|
|
+ .builder()
|
|
|
+ .userId(Long.valueOf(item.getUserId()))
|
|
|
+ .imUserIdFormat(false)
|
|
|
+ .build());
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ // 加入群组成员
|
|
|
+ log.info("joinImGroup: roomId = {}, serviceProvider={}, userIds = {}", roomId, courseSchedule.getServiceProvider(), groupMembers);
|
|
|
+ pluginService.chatRoomGroupJoin(roomId, courseSchedule.getName(), groupMembers);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ List<CourseScheduleStudentPayment> payments = courseScheduleStudentPaymentDao.findByCourseSchedule(Long.parseLong(roomId.substring(1)));
|
|
|
+ List<String> collect = payments.stream().map(e -> e.getUserId().toString()).collect(Collectors.toList());
|
|
|
+ collect.add(actualTeacherId.toString());
|
|
|
+ String[] integers = collect.toArray(new String[]{});
|
|
|
+ imHelper.joinGroup(integers, roomId, roomId);
|
|
|
}
|
|
|
|
|
|
- // 加入群组成员
|
|
|
- log.info("joinImGroup: roomId = {}, serviceProvider={}, userIds = {}", roomId, courseSchedule.getServiceProvider(), groupMembers);
|
|
|
- pluginService.chatRoomGroupJoin(roomId, courseSchedule.getName(), groupMembers);
|
|
|
- } else {
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
|
- List<CourseScheduleStudentPayment> payments = courseScheduleStudentPaymentDao.findByCourseSchedule(Long.parseLong(roomId.substring(1)));
|
|
|
- List<String> collect = payments.stream().map(e -> e.getUserId().toString()).collect(Collectors.toList());
|
|
|
- collect.add(actualTeacherId.toString());
|
|
|
- String[] integers = collect.toArray(new String[]{});
|
|
|
- imHelper.joinGroup(integers, roomId, roomId);
|
|
|
+ redisTemplate.delete(joinImGroupKey);
|
|
|
+ // 异常抛出,删除缓存标识
|
|
|
+ throw e;
|
|
|
}
|
|
|
|
|
|
// 更新网络课服务提供方
|
|
@@ -593,11 +601,15 @@ public class RoomServiceImpl implements RoomService {
|
|
|
action.role(roleEnum.getValue());
|
|
|
}
|
|
|
action.handUpOn(roomMember.isHand())
|
|
|
- .microphone(!schedule.getMuteAll())
|
|
|
+ .microphone(roomMember.isMic())
|
|
|
.timestamp(curTime.getTime())
|
|
|
.camera(true)
|
|
|
.sendUserInfo(getSendUser(userId,roleEnum));
|
|
|
|
|
|
+ // 开启全员静音,重置学员状态
|
|
|
+ if (schedule.getMuteAll()) {
|
|
|
+ action.microphone(false);
|
|
|
+ }
|
|
|
|
|
|
RTCRoomMessage roomMessage = RTCRoomMessage.builder()
|
|
|
.objectName(RTCRoomMessage.MEMBER_CHANGE_MESSAGE)
|