|
@@ -12,6 +12,7 @@ import com.microsvc.toolkit.middleware.rtc.impl.RongCloudRTCPlugin;
|
|
|
import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin;
|
|
|
import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper;
|
|
|
import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage;
|
|
|
+import com.microsvc.toolkit.middleware.rtc.message.TencentRequest;
|
|
|
import com.ym.common.ApiException;
|
|
|
import com.ym.common.BaseResponse;
|
|
|
import com.ym.common.DisplayEnum;
|
|
@@ -695,6 +696,9 @@ public class RoomServiceImpl implements RoomService {
|
|
|
// 生成群组
|
|
|
pluginService.chatRoomCreate(roomId, courseSchedule.getName(), courseSchedule.getTeacherId().toString());
|
|
|
|
|
|
+ // 更新群自定义字段
|
|
|
+ updateChatRoomGroupData(roomId, courseSchedule, pluginService);
|
|
|
+
|
|
|
// 群组老师信息
|
|
|
List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList(ImGroupMemberWrapper.ImGroupMember
|
|
|
.builder()
|
|
@@ -737,6 +741,39 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新群自定义字段
|
|
|
+ * @param roomId 群ID
|
|
|
+ * @param courseSchedule CourseSchedule
|
|
|
+ * @param pluginService RTCRoomPluginService
|
|
|
+ */
|
|
|
+ private void updateChatRoomGroupData(String roomId, CourseSchedule courseSchedule, RTCRoomPluginService pluginService) {
|
|
|
+ // 生成群组自定义字段
|
|
|
+ List<TencentRequest.ChatRoomGroupDefinedData> definedDataList = Lists.newArrayList();
|
|
|
+
|
|
|
+ // 全员静音
|
|
|
+ definedDataList.add(TencentRequest.ChatRoomGroupDefinedData.builder()
|
|
|
+ .key("isMuteAll").value(courseSchedule.getMuteAll().toString())
|
|
|
+ .build());
|
|
|
+ // 取消静音
|
|
|
+ definedDataList.add(TencentRequest.ChatRoomGroupDefinedData.builder()
|
|
|
+ .key("cancelMuteFlag").value(courseSchedule.getCancelMuteFlag().toString())
|
|
|
+ .build());
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(definedDataList)) {
|
|
|
+
|
|
|
+ try {
|
|
|
+ pluginService.chatRoomGroupDefinedData(TencentRequest.ChatRoomGroup.builder()
|
|
|
+ .groupId(roomId)
|
|
|
+ .appDefinedData(definedDataList)
|
|
|
+ .build());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("直播网管课自定义字段设置失败: roomId={}", roomId, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void dismissImGroup(String userId,String roomId, String serviceProvider) throws Exception {
|
|
|
log.info("dismissImGroup: roomId = {}, userId = {}", roomId, userId);
|
|
|
String joinImGroupKey = "joinImGroup:" + roomId;
|
|
@@ -1819,9 +1856,27 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
data.setServiceProvider(courseSchedule.getServiceProvider());
|
|
|
|
|
|
- // 同步全员静音状态
|
|
|
- if (Objects.nonNull(data.getMicrophoneOn())) {
|
|
|
- courseScheduleDao.updateGroupMuteAllStatus(courseScheduleId, !data.getMicrophoneOn());
|
|
|
+ // 同步全员静音状态, 取消静音
|
|
|
+ if (Objects.nonNull(data.getMicrophoneOn()) || Objects.nonNull(data.getCancelMuteFlag())) {
|
|
|
+
|
|
|
+ Boolean muteAll = null;
|
|
|
+ if (Objects.nonNull(data.getMicrophoneOn())) {
|
|
|
+ muteAll = !data.getMicrophoneOn();
|
|
|
+ }
|
|
|
+ courseScheduleDao.updateGroupMuteAllStatus(courseScheduleId, muteAll, data.getCancelMuteFlag());
|
|
|
+
|
|
|
+ CourseSchedule newCourseSchedule = courseScheduleDao.get(courseScheduleId);
|
|
|
+ // 修改网管课群自定义属性
|
|
|
+ RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(courseSchedule.getServiceProvider());
|
|
|
+ if (Objects.nonNull(pluginService) && Objects.nonNull(newCourseSchedule)) {
|
|
|
+ // 更新群自定义字段
|
|
|
+ updateChatRoomGroupData(data.getRoomId(), newCourseSchedule, pluginService);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 取消网络课群静音
|
|
|
+ if (Objects.isNull(data.getMicrophoneOn())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 课程老师信息
|
|
@@ -1858,21 +1913,29 @@ public class RoomServiceImpl implements RoomService {
|
|
|
data.setUserId(e.getUid());
|
|
|
controlDevice(data);
|
|
|
}
|
|
|
- boolean enable;
|
|
|
- if (data.getCameraOn() != null) {
|
|
|
- enable = data.getCameraOn();
|
|
|
- roomMemberDao.updateCameraByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
|
|
|
- } else if (data.getMicrophoneOn() != null) {
|
|
|
- enable = data.getMicrophoneOn();
|
|
|
- roomMemberDao.updateMicByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
|
|
|
- } else if (data.getMusicModeOn() != null) {
|
|
|
- enable = data.getMusicModeOn();
|
|
|
- roomMemberDao.updateMusicByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
|
|
|
- } else if (data.getHandUpOn() != null) {
|
|
|
- enable = data.getHandUpOn();
|
|
|
- roomMemberDao.updateHandByRidAndRole(data.getRoomId(), RoleStudent.getValue(), enable);
|
|
|
- } else
|
|
|
- return true;
|
|
|
+
|
|
|
+ // 批量修复学生端设备状态
|
|
|
+ List<Long> collect = roomMemberDao.findByRidAndRole(data.getRoomId(), RoleStudent.getValue()).stream()
|
|
|
+ .map(RoomMember::getId).distinct().collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(collect)) {
|
|
|
+
|
|
|
+ boolean enable;
|
|
|
+ if (data.getCameraOn() != null) {
|
|
|
+ enable = data.getCameraOn();
|
|
|
+ roomMemberDao.updateCameraByRidAndRole(collect, enable);
|
|
|
+ } else if (data.getMicrophoneOn() != null) {
|
|
|
+ enable = data.getMicrophoneOn();
|
|
|
+ roomMemberDao.updateMicByRidAndRole(collect, enable);
|
|
|
+ } else if (data.getMusicModeOn() != null) {
|
|
|
+ enable = data.getMusicModeOn();
|
|
|
+ roomMemberDao.updateMusicByRidAndRole(collect, enable);
|
|
|
+ } else if (data.getHandUpOn() != null) {
|
|
|
+ enable = data.getHandUpOn();
|
|
|
+ roomMemberDao.updateHandByRidAndRole(collect, enable);
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return true;
|
|
|
}
|