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