Browse Source

Merge branch 'feature/0414-trtc' into master_saas

shangke 1 year ago
parent
commit
b733858713
1 changed files with 44 additions and 32 deletions
  1. 44 32
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

+ 44 - 32
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -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)