|  | @@ -116,6 +116,8 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |      private RedisTemplate<String, String> redisTemplate;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private RTCRoomPluginContext rtcRoomPluginContext;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private VipGroupDao vipGroupDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public Integer getCurrentCourseId(String roomId) {
 | 
	
	
		
			
				|  | @@ -336,6 +338,16 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |          // RTC服务提供方
 | 
	
		
			
				|  |  |          roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        // 课程人数
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            int studentNums = 1;
 | 
	
		
			
				|  |  | +            // 网管课
 | 
	
		
			
				|  |  | +            if (courseSchedule.getGroupType() == GroupType.VIP) {
 | 
	
		
			
				|  |  | +                studentNums = vipGroupDao.getCourseStudentNumsByGroupId(Long.parseLong(courseSchedule.getMusicGroupId()));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            roomResult.setStudentNums(studentNums);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          List<RoomMember> roomMemberList = roomMemberDao.findByRid(roomId);
 | 
	
		
			
				|  |  |          if (roomMemberList != null && roomMemberList.size() > 0) {
 | 
	
		
			
				|  |  |              Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
 | 
	
	
		
			
				|  | @@ -634,7 +646,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |          return roomMember;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public String getRoomServiceProviter(String roomId ) {
 | 
	
		
			
				|  |  | +    public String getRoomServiceProvider(String roomId ) {
 | 
	
		
			
				|  |  |          Integer firstCourseId = Integer.parseInt(roomId.substring(1));
 | 
	
		
			
				|  |  |          CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId.longValue());
 | 
	
		
			
				|  |  |          return courseSchedule.getServiceProvider();
 | 
	
	
		
			
				|  | @@ -903,7 +915,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        String roomServiceProviter = getRoomServiceProviter(roomId);
 | 
	
		
			
				|  |  | +        String roomServiceProviter = getRoomServiceProvider(roomId);
 | 
	
		
			
				|  |  |          if (displayEnum.equals(DisplayEnum.None)) {
 | 
	
		
			
				|  |  |              roomDao.updateDisplayByRid(roomId, "");
 | 
	
		
			
				|  |  |              if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 | 
	
	
		
			
				|  | @@ -1064,7 +1076,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            String roomServiceProviter = getRoomServiceProviter(roomId);
 | 
	
		
			
				|  |  | +            String roomServiceProviter = getRoomServiceProvider(roomId);
 | 
	
		
			
				|  |  |              if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  sendDisplayMessage(display, roomMember);
 | 
	
	
		
			
				|  | @@ -1102,7 +1114,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            String roomServiceProviter = getRoomServiceProviter(roomId);
 | 
	
		
			
				|  |  | +            String roomServiceProviter = getRoomServiceProvider(roomId);
 | 
	
		
			
				|  |  |              if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  sendDisplayMessage(display, roomMember);
 | 
	
	
		
			
				|  | @@ -1236,6 +1248,8 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |                  .enable(enable)
 | 
	
		
			
				|  |  |                  .targetId(userId)
 | 
	
		
			
				|  |  |                  .targetName(authUser.getUsername())
 | 
	
		
			
				|  |  | +                .songId(Optional.ofNullable(data.getMusicScoreAccompanimentId()).map(String::valueOf).orElse(null))
 | 
	
		
			
				|  |  | +                .songVolume(data.getSoundVolume())
 | 
	
		
			
				|  |  |                  .sendUserInfo(RTCRoomMessage.MessageUser.builder()
 | 
	
		
			
				|  |  |                          .sendUserId(data.getSendUserId())
 | 
	
		
			
				|  |  |                          .sendUserName(data.getSendUserName())
 | 
	
	
		
			
				|  | @@ -1257,7 +1271,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 腾讯云消息推送
 | 
	
		
			
				|  |  |          RTCRoomMessage message = RTCRoomMessage.builder()
 | 
	
		
			
				|  |  | -                .objectName(RTCRoomMessage.DEVICE_MESSAGE)
 | 
	
		
			
				|  |  | +                .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
 | 
	
		
			
				|  |  |                  .fromUserId(userId)
 | 
	
		
			
				|  |  |                  .toChatRoomId(roomId)
 | 
	
		
			
				|  |  |                  .content(messageContent)
 | 
	
	
		
			
				|  | @@ -1283,7 +1297,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |                  // 消息发送
 | 
	
		
			
				|  |  |                  if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
 | 
	
		
			
				|  |  |                      // 腾讯云推送
 | 
	
		
			
				|  |  | -                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.DEVICE_MESSAGE).content(messageContent));
 | 
	
		
			
				|  |  | +                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(messageContent));
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      // 融云推送
 | 
	
		
			
				|  |  |                      imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
 | 
	
	
		
			
				|  | @@ -1301,7 +1315,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |                  // 消息发送
 | 
	
		
			
				|  |  |                  if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
 | 
	
		
			
				|  |  |                      // 腾讯云推送
 | 
	
		
			
				|  |  | -                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.DEVICE_MESSAGE).content(messageContent));
 | 
	
		
			
				|  |  | +                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(messageContent));
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      // 融云推送
 | 
	
		
			
				|  |  |                      imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
 | 
	
	
		
			
				|  | @@ -1317,7 +1331,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |                  deviceResourceMessage.setSoundVolume(data.getSoundVolume());// 消息发送
 | 
	
		
			
				|  |  |                  if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
 | 
	
		
			
				|  |  |                      // 腾讯云推送
 | 
	
		
			
				|  |  | -                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.DEVICE_MESSAGE).content(messageContent));
 | 
	
		
			
				|  |  | +                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(messageContent));
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      // 融云推送
 | 
	
		
			
				|  |  |                      imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
 | 
	
	
		
			
				|  | @@ -1488,7 +1502,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        String roomServiceProviter = getRoomServiceProviter(roomId);
 | 
	
		
			
				|  |  | +        String roomServiceProviter = getRoomServiceProvider(roomId);
 | 
	
		
			
				|  |  |          if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 获取RTC服务提供方
 | 
	
	
		
			
				|  | @@ -1560,7 +1574,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        String roomServiceProviter = getRoomServiceProviter(roomId);
 | 
	
		
			
				|  |  | +        String roomServiceProviter = getRoomServiceProvider(roomId);
 | 
	
		
			
				|  |  |          if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 获取RTC服务提供方
 | 
	
	
		
			
				|  | @@ -2012,7 +2026,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        String roomServiceProviter = getRoomServiceProviter(roomId);
 | 
	
		
			
				|  |  | +        String roomServiceProviter = getRoomServiceProvider(roomId);
 | 
	
		
			
				|  |  |          roomDao.updateDisplayByRid(roomId, display);
 | 
	
		
			
				|  |  |          if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2129,7 +2143,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |          RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 获取RTC服务提供方
 | 
	
		
			
				|  |  | -        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(getRoomServiceProviter(roomId));
 | 
	
		
			
				|  |  | +        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(getRoomServiceProvider(roomId));
 | 
	
		
			
				|  |  |          if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 腾讯云RTC服务
 | 
	
	
		
			
				|  | @@ -2193,8 +2207,44 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |              courseScheduleStudentMusicScoreDao.batchInsert(scheduleStudentMusicScores);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          MusicScoreMessage musicScoreMessage = JSON.parseObject(JSON.toJSONString(accompaniment), MusicScoreMessage.class);
 | 
	
		
			
				|  |  | -        MusicScoreDownloadMessageMessage msg = new MusicScoreDownloadMessageMessage(musicScoreMessage);
 | 
	
		
			
				|  |  | -        imHelper.publishMessage(authUser.getId().toString(), roomId, msg, 0);
 | 
	
		
			
				|  |  | +        // 发送消息
 | 
	
		
			
				|  |  | +        String serviceProvider = getRoomServiceProvider(musicScoreData.getRoomId());
 | 
	
		
			
				|  |  | +        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(serviceProvider)) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(serviceProvider);
 | 
	
		
			
				|  |  | +            // 腾讯消息推送
 | 
	
		
			
				|  |  | +            RTCRoomMessage.MessageContent messageContent = RTCRoomMessage.MessageContent
 | 
	
		
			
				|  |  | +                    .builder()
 | 
	
		
			
				|  |  | +                    .url(musicScoreMessage.getUrl())
 | 
	
		
			
				|  |  | +                    .mp3Url(musicScoreMessage.getMp3Url())
 | 
	
		
			
				|  |  | +                    .songId(String.valueOf(musicScoreMessage.getId()))
 | 
	
		
			
				|  |  | +                    .speed(musicScoreMessage.getSpeed())
 | 
	
		
			
				|  |  | +                    .sendUserInfo(RTCRoomMessage.MessageUser.builder()
 | 
	
		
			
				|  |  | +                            .sendUserId(String.valueOf(authUser.getId()))
 | 
	
		
			
				|  |  | +                            .sendUserName(authUser.getUsername())
 | 
	
		
			
				|  |  | +                            .avatarUrl(authUser.getAvatar())
 | 
	
		
			
				|  |  | +                            .build())
 | 
	
		
			
				|  |  | +                    .build();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            RTCRoomMessage roomMessage = RTCRoomMessage.builder()
 | 
	
		
			
				|  |  | +                    .objectName(RTCRoomMessage.PLAY_MIDI_MESSAGE)
 | 
	
		
			
				|  |  | +                    .content(messageContent)
 | 
	
		
			
				|  |  | +                    .toChatRoomId(roomId)
 | 
	
		
			
				|  |  | +                    .fromUserId(String.valueOf(authUser.getId()))
 | 
	
		
			
				|  |  | +                    .isIncludeSender(1)
 | 
	
		
			
				|  |  | +                    .isPersisted(1)
 | 
	
		
			
				|  |  | +                    .build();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 发送消息
 | 
	
		
			
				|  |  | +            pluginService.sendChatRoomMessage(roomMessage);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 融云消息推送
 | 
	
		
			
				|  |  | +            MusicScoreDownloadMessageMessage msg = new MusicScoreDownloadMessageMessage(musicScoreMessage);
 | 
	
		
			
				|  |  | +            imHelper.publishMessage(authUser.getId().toString(), roomId, msg, 0);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -2293,7 +2343,7 @@ public class RoomServiceImpl implements RoomService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, senderId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        String roomServiceProviter = getRoomServiceProviter(roomId);
 | 
	
		
			
				|  |  | +        String roomServiceProviter = getRoomServiceProvider(roomId);
 | 
	
		
			
				|  |  |          if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              sendDisplayMessage(display, roomMember);
 |