|
@@ -6,6 +6,8 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginContext;
|
|
|
import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
|
|
|
+import com.microsvc.toolkit.middleware.rtc.enums.EMemberAction;
|
|
|
+import com.microsvc.toolkit.middleware.rtc.enums.EMemberRole;
|
|
|
import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin;
|
|
|
import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper;
|
|
|
import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage;
|
|
@@ -267,7 +269,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
String rtcServiceProvider = Optional.ofNullable(sysConfigDao.findConfigValue("rtc_service_provider")).orElse("rongCloud");
|
|
|
|
|
|
RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(rtcServiceProvider);
|
|
|
- if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(rtcServiceProvider)) {
|
|
|
+ if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
|
|
|
// 腾讯云RTC
|
|
|
// 用户IM帐号创建
|
|
|
String userSig = "";
|
|
@@ -317,12 +319,17 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 加入群组成员
|
|
|
- log.info("joinImGroup: roomId = {}, userIds = {}", roomId, groupMembers);
|
|
|
- pluginService.chatRoomGroupJoin(roomId, courseSchedule.getName(), groupMembers);
|
|
|
+ // 生成群组,更新服务提供方
|
|
|
+ if (StringUtils.isBlank(courseSchedule.getServiceProvider())) {
|
|
|
+
|
|
|
+ // 加入群组成员
|
|
|
+ log.info("joinImGroup: roomId = {}, userIds = {}", roomId, groupMembers);
|
|
|
+ pluginService.chatRoomGroupJoin(roomId, courseSchedule.getName(), groupMembers);
|
|
|
+
|
|
|
+ // 更新网络课服务提供方
|
|
|
+ courseScheduleDao.updateServiceProvider(courseSchedule.getId(), rtcServiceProvider);
|
|
|
+ }
|
|
|
|
|
|
- // 更新网络课服务提供方
|
|
|
- courseScheduleDao.updateServiceProvider(courseSchedule.getId(), rtcServiceProvider);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -528,7 +535,45 @@ public class RoomServiceImpl implements RoomService {
|
|
|
msg.setHandUpOn(roomMember.isHand());
|
|
|
msg.setMetronomeSwitch(playMidi);
|
|
|
msg.setExamSongSwitch(examSong);
|
|
|
- imHelper.publishMessage(userId, roomId, msg);
|
|
|
+
|
|
|
+
|
|
|
+ // 获取RTC服务提供方
|
|
|
+ String rtcServiceProvider = Optional.ofNullable(sysConfigDao.findConfigValue("rtc_service_provider")).orElse("rongCloud");
|
|
|
+
|
|
|
+ RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(rtcServiceProvider);
|
|
|
+ if (rtcServiceProvider.equals(TencentCloudRTCPlugin.PLUGIN_NAME)) {
|
|
|
+ // 腾讯云RTC服务
|
|
|
+ RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
|
|
|
+ .action(EMemberAction.JOIN.getValue());
|
|
|
+
|
|
|
+ if (roleEnum == RoleTeacher) {
|
|
|
+ action.role(EMemberRole.TEACHER.getValue());
|
|
|
+ } else {
|
|
|
+ action.role(EMemberRole.STUDENT.getValue());
|
|
|
+ }
|
|
|
+ action.handUpOn(roomMember.isHand())
|
|
|
+ .microphone(playMidi)
|
|
|
+ .camera(true)
|
|
|
+ .sendUserInfo(RTCRoomMessage.MessageUser.builder()
|
|
|
+ .sendUserId(userId)
|
|
|
+ .sendUserName(userInfo.getName())
|
|
|
+ .avatarUrl(roomMember.getHeadUrl())
|
|
|
+ .build());
|
|
|
+
|
|
|
+
|
|
|
+ RTCRoomMessage roomMessage = RTCRoomMessage.builder()
|
|
|
+ .objectName(RTCRoomMessage.MEMBER_CHANGE_MESSAGE)
|
|
|
+ .fromUserId(userId)
|
|
|
+ .content(action.build())
|
|
|
+ .toChatRoomId(roomId)
|
|
|
+ .isPersisted(1)
|
|
|
+ .isIncludeSender(1)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ pluginService.sendChatRoomMessage(roomMessage);
|
|
|
+ } else {
|
|
|
+ imHelper.publishMessage(userId, roomId, msg);
|
|
|
+ }
|
|
|
log.info("join room success: roomId = {}, userId = {}, role = {}", roomId, userId, roleEnum);
|
|
|
signInSuccess(roomMember, deviceNum);
|
|
|
}
|
|
@@ -641,10 +686,43 @@ public class RoomServiceImpl implements RoomService {
|
|
|
log.info("leaveRoomSuccess dismiss the room: {},userId: {}", roomId, userId);
|
|
|
} else {
|
|
|
roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
- MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, roleEnum.getValue());
|
|
|
- msg.setUserName(username);
|
|
|
- imHelper.publishMessage(userId, roomId, msg);
|
|
|
+
|
|
|
+ // 获取RTC服务提供方
|
|
|
+ String rtcServiceProvider = Optional.ofNullable(sysConfigDao.findConfigValue("rtc_service_provider")).orElse("rongCloud");
|
|
|
+
|
|
|
+ RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(rtcServiceProvider);
|
|
|
+ if (rtcServiceProvider.equals(TencentCloudRTCPlugin.PLUGIN_NAME)) {
|
|
|
+ // 腾讯云RTC服务
|
|
|
+ RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
|
|
|
+ .action(EMemberAction.LEAVE.getValue());
|
|
|
+
|
|
|
+ if (roleEnum == RoleTeacher) {
|
|
|
+ action.role(EMemberRole.TEACHER.getValue());
|
|
|
+ } else {
|
|
|
+ action.role(EMemberRole.STUDENT.getValue());
|
|
|
+ }
|
|
|
+ action.handUpOn(false)
|
|
|
+ .microphone(false)
|
|
|
+ .camera(false).sendUserInfo(RTCRoomMessage.MessageUser.builder()
|
|
|
+ .sendUserId(userId)
|
|
|
+ .sendUserName(username)
|
|
|
+ .avatarUrl(sysUser.getAvatar())
|
|
|
+ .build());
|
|
|
+
|
|
|
+
|
|
|
+ RTCRoomMessage roomMessage = RTCRoomMessage.builder()
|
|
|
+ .objectName(RTCRoomMessage.MEMBER_CHANGE_MESSAGE)
|
|
|
+ .content(action.build())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ pluginService.sendChatRoomMessage(roomMessage);
|
|
|
+ } else {
|
|
|
+ MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, roleEnum.getValue());
|
|
|
+ msg.setUserName(username);
|
|
|
+ imHelper.publishMessage(userId, roomId, msg);
|
|
|
// imHelper.quit(new String[]{userId}, roomId);
|
|
|
+ }
|
|
|
+
|
|
|
log.info("leaveRoomSuccess quit group: roomId={},userId: {}", roomId, userId);
|
|
|
}
|
|
|
userDao.deleteByUid(userId);
|