|
@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.text.MessageFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -116,8 +117,16 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
}
|
|
|
//课程结束后关闭教室的时间
|
|
|
joinRoomResult.setAutoCloseNetworkRoomTime(sysConfigDao.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
|
|
|
+
|
|
|
+ // IM用户ID
|
|
|
+ String imUserId = sysUser.getUserId().toString();
|
|
|
+ if (UserRoleEnum.STUDENT == userRole) {
|
|
|
+ imUserId = MessageFormat.format("{0}:{1}", imUserId, ClientEnum.STUDENT.name());
|
|
|
+ }
|
|
|
+ roomMember.setImUserId(imUserId);
|
|
|
+
|
|
|
//创建、加入群聊
|
|
|
- IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{sysUser.getUserId().toString()}, roomId, roomId);
|
|
|
+ IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{imUserId}, roomId, roomId);
|
|
|
if(resultInfo.getCode() != 200){
|
|
|
log.error("加入群聊失败 resultInfo:{}",resultInfo);
|
|
|
}
|
|
@@ -245,7 +254,10 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
Long roomId = customMessage.getRoomId();
|
|
|
log.info("sendImPlayMidiMessage: roomId={}, userId={}", roomId, userId);
|
|
|
ImNetworkMetronomeMessage displayMessage = new ImNetworkMetronomeMessage(customMessage);
|
|
|
- imHelper.publishMessage(userId.toString(), roomId.toString(), displayMessage, 1);
|
|
|
+
|
|
|
+ // IM用户ID
|
|
|
+ String imUserId = MessageFormat.format("{0}:{1}", String.valueOf(userId), ClientEnum.STUDENT.name());
|
|
|
+ imHelper.publishMessage(imUserId, roomId.toString(), displayMessage, 1);
|
|
|
//记录节拍器信息
|
|
|
courseScheduleStudentPaymentService.getDao().adjustPlayMidi(roomId,customMessage.getUserId(),customMessage.toString());
|
|
|
}
|
|
@@ -352,21 +364,27 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void controlDevice(ImNetworkDeviceControlDto deviceControl) throws Exception {
|
|
|
+ // 老师信息
|
|
|
SysUser sysUser = sysUserService.getUser();
|
|
|
String roomId = deviceControl.getRoomId();
|
|
|
+ // 学生信息
|
|
|
Long userId = deviceControl.getUserId();
|
|
|
Boolean enable = deviceControl.getEnable();
|
|
|
log.info("controlDevice: roomId:{} ,deviceType:{} ,enable:{} ,userId:{}", roomId,deviceControl.getDeviceType(),enable,userId);
|
|
|
+
|
|
|
+ // IM用户ID
|
|
|
+ String imUserId = MessageFormat.format("{0}:{1}", String.valueOf(userId), ClientEnum.STUDENT.name());
|
|
|
+
|
|
|
if(enable){
|
|
|
long scheduleId = Long.parseLong(roomId);
|
|
|
ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),enable);
|
|
|
- deviceResourceMessage.setUserId(userId.toString());
|
|
|
+ deviceResourceMessage.setUserId(imUserId);
|
|
|
switch (deviceControl.getDeviceType()) {
|
|
|
case EXAM_SONG:
|
|
|
ImNetworkRoomMusicSheetDownloadData msg = courseScheduleStudentPaymentService.getMemberExamSong(scheduleId, userId);
|
|
|
msg.setEnable(enable);
|
|
|
courseScheduleStudentPaymentService.getDao().adjustExamSong(scheduleId,userId, JSON.toJSONString(msg));
|
|
|
- imHelper.publishMessage(userId.toString(), roomId, deviceResourceMessage, 1);
|
|
|
+ imHelper.publishMessage(imUserId, roomId, deviceResourceMessage, 1);
|
|
|
break;
|
|
|
case MUSIC_SHEET:
|
|
|
Integer musicSheetId = Optional.ofNullable(deviceControl.getMusicSheetAccompanimentId()).
|
|
@@ -376,7 +394,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
//打开原音
|
|
|
courseScheduleStudentMusicSheetService.getDao().openPlayStatus(scheduleId,musicSheetId,userId);
|
|
|
deviceResourceMessage.setMusicSheetAccompanimentId(musicSheetId);
|
|
|
- deviceResourceMessage.setUserId(userId.toString());
|
|
|
+ deviceResourceMessage.setUserId(imUserId);
|
|
|
deviceResourceMessage.setSoundVolume(deviceControl.getSoundVolume());
|
|
|
imHelper.publishMessage(sysUser.getId().toString(), roomId, deviceResourceMessage, 1);
|
|
|
break;
|
|
@@ -388,7 +406,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
//打开伴奏
|
|
|
courseScheduleStudentMusicSheetService.getDao().openAccompanimentPlayStatus(scheduleId,musicSheetAccompanimentId,userId);
|
|
|
deviceResourceMessage.setMusicSheetAccompanimentId(musicSheetAccompanimentId);
|
|
|
- deviceResourceMessage.setUserId(userId.toString());
|
|
|
+ deviceResourceMessage.setUserId(imUserId);
|
|
|
deviceResourceMessage.setSoundVolume(deviceControl.getSoundVolume());
|
|
|
imHelper.publishMessage(sysUser.getId().toString(), roomId, deviceResourceMessage, 1);
|
|
|
break;
|
|
@@ -398,7 +416,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
message.setType(deviceControl.getDeviceType().ordinal());
|
|
|
message.setOpUserId(sysUser.getId().toString());
|
|
|
message.setOpUserName(sysUser.getUsername());
|
|
|
- imHelper.publishMessage(sysUser.getId().toString(), userId.toString(), roomId, message);
|
|
|
+ imHelper.publishMessage(sysUser.getId().toString(), imUserId, roomId, message);
|
|
|
break;
|
|
|
}
|
|
|
}else {
|
|
@@ -435,7 +453,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
imNetworkRoomMemberService.getDao().updateById(roomMember);
|
|
|
}
|
|
|
ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),deviceControl.getEnable());
|
|
|
- deviceResourceMessage.setUserId(userId.toString());
|
|
|
+ deviceResourceMessage.setUserId(imUserId);
|
|
|
BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
|
|
|
if (Objects.nonNull(basicUserInfo)) {
|
|
|
deviceResourceMessage.setUserName(basicUserInfo.getUsername());
|
|
@@ -524,7 +542,16 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
|
|
|
@Override
|
|
|
public List<BasicUserInfo> queryNoJoinStu(Long roomId) {
|
|
|
- return courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
|
|
|
+
|
|
|
+ List<BasicUserInfo> userInfos = courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
|
|
|
+
|
|
|
+ for (BasicUserInfo item : userInfos) {
|
|
|
+
|
|
|
+ item.setImUserId(MessageFormat.format("{0}:{1}", String.valueOf(item.getUserId()),
|
|
|
+ ClientEnum.STUDENT.name()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return userInfos;
|
|
|
}
|
|
|
|
|
|
//发送设备状态同步消息
|