Explorar o código

Merge branch 'feature/0803-im' of http://git.dayaedu.com/yonge/cooleshow into feature/0803-im

liujc hai 1 ano
pai
achega
90a5f4c255

+ 23 - 38
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -270,9 +270,9 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     }
 
     private RTCRoomMessage.MessageUser getSendUser(SysUser sysUser,RoleEnum role) {
-
+        String imUserId = imGroupService.getImUserId(sysUser.getId(), role);
         RTCRoomMessage.MessageUser build = RTCRoomMessage.MessageUser.builder()
-                .sendUserId(sysUser.getId().toString())
+                .sendUserId(imUserId)
                 .sendUserName(sysUser.getUsername())
                 .avatarUrl(sysUser.getAvatar())
                 .build();
@@ -437,7 +437,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                     .objectName(RTCRoomMessage.PLAY_MIDI_MESSAGE)
                     .content(messageContent)
                     .toChatRoomId(roomMember.getRoomId())
-                    .fromUserId(roomMember.getImUserId())
+                    .fromUserId(imUserId)
                     .isIncludeSender(1)
                     .isPersisted(1)
                     .build();
@@ -617,7 +617,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         CourseSchedule courseSchedule = courseScheduleService.getById(roomId);
         SysUser teacher = sysUserService.findUserById(courseSchedule.getTeacherId());
         if (Objects.nonNull(sysUser)) {
-            deviceControl.setSendUserId(teacher.getId().toString());
+            deviceControl.setSendUserId(imGroupService.getImUserId(teacher.getId(),RoleEnum.RoleTeacher));
             deviceControl.setSendUserName(teacher.getRealName());
             deviceControl.setAvatar(teacher.getAvatar());
         }
@@ -627,7 +627,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 .builder()
                 .type(deviceControl.getDeviceType().ordinal())
                 .enable(enable)
-                .targetId(userId.toString())
+                .targetId(imUserId)
                 .targetName(sysUser.getUsername())
                 .songId(Optional.ofNullable(deviceControl.getMusicSheetAccompanimentId()).map(String::valueOf).orElse(null))
                 .songVolume(deviceControl.getSoundVolume())
@@ -641,7 +641,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         // 腾讯云消息推送
         RTCRoomMessage message = RTCRoomMessage.builder()
                 .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
-                .fromUserId(userId.toString())
+                .fromUserId(imUserId)
                 .toChatRoomId(roomId)
                 .content(notifyContent)
                 .isPersisted(1)
@@ -682,7 +682,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                         pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(notifyContent));
                     } else {
                         // 融云推送
-                        imHelper.publishMessage(sysUser.getId().toString(), roomId, deviceResourceMessage, 1);
+                        imHelper.publishMessage(deviceControl.getSendUserId(), roomId, deviceResourceMessage, 1);
                     }
                     break;
                 case ACCOMPANIMENT:
@@ -700,7 +700,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                         pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(notifyContent));
                     } else {
                         // 融云推送
-                        imHelper.publishMessage(sysUser.getId().toString(), roomId, deviceResourceMessage, 1);
+                        imHelper.publishMessage(deviceControl.getSendUserId(), roomId, deviceResourceMessage, 1);
                     }
                     break;
                 default:
@@ -713,9 +713,9 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                         //邀请打开指定设备权限
                         ImNetworkControlDeviceNotifyMessage message1 = new ImNetworkControlDeviceNotifyMessage(ImNetworkActionEnum.INVITE.ordinal());
                         message1.setType(deviceControl.getDeviceType().ordinal());
-                        message1.setOpUserId(sysUser.getId().toString());
+                        message1.setOpUserId(deviceControl.getSendUserId());
                         message1.setOpUserName(sysUser.getUsername());
-                        imHelper.publishMessage(sysUser.getId().toString(), imUserId, roomId, message1);
+                        imHelper.publishMessage(deviceControl.getSendUserId(), imUserId, roomId, message1);
                     }
                     break;
             }
@@ -763,7 +763,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 if (Objects.nonNull(basicUserInfo)) {
                     deviceResourceMessage.setUserName(basicUserInfo.getUsername());
                 }
-                imHelper.publishMessage(sysUser.getId().toString(), roomId, deviceResourceMessage, 1);
+                imHelper.publishMessage(deviceControl.getSendUserId(), roomId, deviceResourceMessage, 1);
             }
         }
     }
@@ -850,7 +850,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             msg.setOpUserId(sysUser.getId().toString());
             msg.setOpUserName(sysUser.getUsername());
             //获取老师编号
-            imHelper.publishMessage(imUserId, courseSchedule.getTeacherId().toString(), deviceControl.getRoomId(), msg);
+            String imUserId1 = imGroupService.getImUserId(courseSchedule.getTeacherId(), RoleEnum.RoleTeacher);
+            imHelper.publishMessage(imUserId, imUserId1, deviceControl.getRoomId(), msg);
             //发送设备状态变更消息
             this.sendDeviceStateChangedMessage(deviceControl, imUserId);
         }
@@ -956,6 +957,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         SysUser sysUser = sysUserService.getUser();
 
         CourseSchedule courseSchedule = courseScheduleService.getById(deviceControl.getRoomId());
+        String imUserId = imGroupService.getImUserId(sysUser.getId(), RoleEnum.RoleStudent);
         if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(courseSchedule.getServiceProvider())) {
 
             // 获取RTC服务提供方
@@ -964,16 +966,16 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
                     .type(ImNetworkActionEnum.REJECT.ordinal())
                     .enable(deviceControl.getEnable())
-                    .targetId(sysUser.getId().toString())
+                    .targetId(imUserId)
                     .targetName(sysUser.getUsername())
-                    .sendUserInfo(getSendUser(sysUser, RoleEnum.RoleTeacher));
+                    .sendUserInfo(getSendUser(sysUserService.findUserById(courseSchedule.getTeacherId()), RoleEnum.RoleTeacher));
 
 
             RTCRoomMessage roomMessage = RTCRoomMessage.builder()
                     .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
                     .content(action.build())
                     .toChatRoomId(deviceControl.getRoomId())
-                    .fromUserId(sysUser.getId().toString())
+                    .fromUserId(imUserId)
                     .isIncludeSender(1)
                     .isPersisted(1)
                     .build();
@@ -982,13 +984,11 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         } else {
             ImNetworkControlDeviceNotifyMessage msg = new ImNetworkControlDeviceNotifyMessage(ImNetworkActionEnum.REJECT.ordinal());
             msg.setType(deviceControl.getDeviceType().ordinal());
-            msg.setOpUserId(sysUser.getId().toString());
+            msg.setOpUserId(imUserId);
             msg.setOpUserName(sysUser.getUsername());
             //获取老师编号
-            Long teacherId = Optional.ofNullable(courseScheduleService.getById(deviceControl.getRoomId())).
-                    map(CourseSchedule::getTeacherId).
-                    orElseThrow(()->new BizException("房间信息不存在"));
-            imHelper.publishMessage(sysUser.getId().toString(),teacherId.toString(), deviceControl.getRoomId(), msg);
+            String imUserId1 = imGroupService.getImUserId(courseSchedule.getTeacherId(), RoleEnum.RoleTeacher);
+            imHelper.publishMessage(imUserId,imUserId1, deviceControl.getRoomId(), msg);
         }
     }
 
@@ -1077,16 +1077,17 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         // 获取RTC服务提供方
         RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(TencentCloudRTCPlugin.PLUGIN_NAME);
         // 腾讯云RTC服务
+        RTCRoomMessage.MessageUser sendUser = getSendUser(sysUserService.findUserById(roomMember.getUserId()), RoleEnum.getEnumByValue(roomMember.getRole()));
         RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
                 .display(display)
-                .sendUserInfo(getSendUser(sysUserService.findUserById(roomMember.getUserId()),RoleEnum.getEnumByValue(roomMember.getRole())));
+                .sendUserInfo(sendUser);
 
 
         RTCRoomMessage roomMessage = RTCRoomMessage.builder()
                 .objectName(RTCRoomMessage.DISPLAY_MESSAGE)
                 .content(action.build())
                 .toChatRoomId(roomMember.getRoomId())
-                .fromUserId(roomMember.getUserId().toString())
+                .fromUserId(sendUser.getSendUserId())
                 .isIncludeSender(1)
                 .isPersisted(1)
                 .build();
@@ -1178,20 +1179,4 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
         }
     }
-
-    private void dismissImGroup(String userId,String roomId, String serviceProvider) throws Exception {
-        log.info("dismissImGroup: roomId = {}, userId = {}", roomId, userId);
-        String joinImGroupKey = "joinImGroup:" + roomId;
-        redisTemplate.delete(joinImGroupKey);
-
-        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(serviceProvider);
-        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
-            // 腾讯云群销毁
-            pluginService.chatRoomDestroy(roomId);
-        } else {
-            // 融云群销毁
-            // 销毁群组
-            imHelper.dismiss(userId, roomId);
-        }
-    }
 }