|
@@ -822,13 +822,18 @@ public class RoomServiceImpl implements RoomService {
|
|
|
if (roomMember == null) {
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+ Room room = roomDao.findByRid(roomId);
|
|
|
+ Integer firstCourseId = Integer.parseInt(roomId.substring(1));
|
|
|
+ CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId.longValue());
|
|
|
MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Kick, userId, roomMember.getRole());
|
|
|
msg.setUserName(roomMember.getName());
|
|
|
|
|
|
- imHelper.publishMessage(userId, roomId, msg, 1);
|
|
|
+ if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(courseSchedule.getServiceProvider())) {
|
|
|
|
|
|
- Room room = roomDao.findByRid(roomId);
|
|
|
+ sendJoinLeaveMessage(roomMember, MemberChangedMessage.Action_Kick);
|
|
|
+ } else {
|
|
|
+ imHelper.publishMessage(userId, roomId, msg, 1);
|
|
|
+ }
|
|
|
if (roomMember.getRole() == RoleTeacher.getValue() && isUserDisplay(room, userId)) {
|
|
|
updateDisplay(roomId, userId, "", 1);
|
|
|
}
|
|
@@ -843,6 +848,34 @@ public class RoomServiceImpl implements RoomService {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ private void sendJoinLeaveMessage(RoomMember roomMember, int status) throws Exception {
|
|
|
+ // 获取RTC服务提供方
|
|
|
+ RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(TencentCloudRTCPlugin.PLUGIN_NAME);
|
|
|
+ // 腾讯云RTC服务
|
|
|
+ RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
|
|
|
+ .action(status)
|
|
|
+ .role(roomMember.getRole());
|
|
|
+ action.handUpOn(false)
|
|
|
+ .microphone(false)
|
|
|
+ .camera(false).sendUserInfo(RTCRoomMessage.MessageUser.builder()
|
|
|
+ .sendUserId(roomMember.getUid())
|
|
|
+ .sendUserName(roomMember.getName())
|
|
|
+ .avatarUrl(roomMember.getHeadUrl())
|
|
|
+ .build());
|
|
|
+
|
|
|
+
|
|
|
+ RTCRoomMessage roomMessage = RTCRoomMessage.builder()
|
|
|
+ .objectName(RTCRoomMessage.MEMBER_CHANGE_MESSAGE)
|
|
|
+ .content(action.build())
|
|
|
+ .toChatRoomId(roomMember.getRid())
|
|
|
+ .fromUserId(roomMember.getUid())
|
|
|
+ .isIncludeSender(1)
|
|
|
+ .isPersisted(1)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ pluginService.sendChatRoomMessage(roomMessage);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean display(String roomId, int type, String uri, String targetUserId) throws Exception {
|
|
@@ -1838,7 +1871,14 @@ public class RoomServiceImpl implements RoomService {
|
|
|
roomMemberDao.deleteUserByRidAndUid(member.getRid(), member.getUid());
|
|
|
MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, member.getUid(), userRole);
|
|
|
msg.setUserName(member.getName());
|
|
|
- imHelper.publishMessage(member.getUid(), member.getRid(), msg);
|
|
|
+ Integer firstCourseId = Integer.parseInt(member.getRid().substring(1));
|
|
|
+ CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId.longValue());
|
|
|
+
|
|
|
+ if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(courseSchedule.getServiceProvider())) {
|
|
|
+ sendJoinLeaveMessage(member, MemberChangedMessage.Action_Leave);
|
|
|
+ } else {
|
|
|
+ imHelper.publishMessage(member.getUid(), member.getRid(), msg);
|
|
|
+ }
|
|
|
}
|
|
|
userDao.deleteByUid(member.getUid());
|
|
|
} catch (Exception e) {
|