|
@@ -57,8 +57,6 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
private IMHelper imHelper;
|
|
|
@Resource
|
|
|
private MusicSheetAccompanimentService musicSheetAccompanimentService;
|
|
|
- @Resource
|
|
|
- private MusicSheetService musicSheetService;
|
|
|
|
|
|
@Override
|
|
|
public ImNetworkRoomDao getDao() {
|
|
@@ -67,13 +65,17 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId, UserRoleEnum userRole) throws Exception {
|
|
|
- log.info("joinRoom params:courseScheduleId:{},userRole:{}",courseScheduleId,userRole);
|
|
|
+ public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId) throws Exception {
|
|
|
Long userId = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
|
|
|
map(SysUser::getId).
|
|
|
orElseThrow(()-> new BizException("请登录"));
|
|
|
CourseSchedule courseSchedule = Optional.ofNullable(courseScheduleService.getById(courseScheduleId)).
|
|
|
orElseThrow(()->new BizException("房间信息不存在"));
|
|
|
+ UserRoleEnum userRole = UserRoleEnum.STUDENT;
|
|
|
+ if(courseSchedule.getTeacherId().equals(userId)){
|
|
|
+ userRole = UserRoleEnum.TEACHER;
|
|
|
+ }
|
|
|
+ log.info("joinRoom params:courseScheduleId:{},userRole:{},userId:{}",courseScheduleId,userRole,userId);
|
|
|
BasicUserInfo sysUser = Optional.ofNullable(teacherDao.getBasicUserInfo(userId)).
|
|
|
orElseThrow(()-> new BizException("用户信息不存在"));
|
|
|
Date now = new Date();
|
|
@@ -137,16 +139,21 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
this.initRoom(roomId, Long.parseLong(roomId), userRole, userId, now);
|
|
|
//获取房间用户信息
|
|
|
ImNetworkRoomMember roomMember = imNetworkRoomMemberService.initRoomMember(roomId,sysUser,userRole);
|
|
|
- //发送加入房间的消息
|
|
|
+ //发送人员变动消息
|
|
|
+ publishMemberChangedMessage(roomMember);
|
|
|
+ //记录考勤
|
|
|
+ }
|
|
|
+
|
|
|
+ //发送人员变动消息
|
|
|
+ private void publishMemberChangedMessage(ImNetworkRoomMember roomMember) throws Exception {
|
|
|
ImNetworkRoomMemberChangedMessage msg = new ImNetworkRoomMemberChangedMessage(roomMember,ImNetworkRoomMemberChangedEnum.JOIN);
|
|
|
//获取节拍器信息
|
|
|
- ImNetworkCustomMessage imNetworkCustomMessage = courseScheduleStudentPaymentService.getMemberMidi(Long.parseLong(roomId), userId);
|
|
|
+ ImNetworkCustomMessage imNetworkCustomMessage = courseScheduleStudentPaymentService.getMemberMidi(Long.parseLong(roomMember.getRoomId()), roomMember.getUserId());
|
|
|
msg.setMetronomeSwitch(imNetworkCustomMessage.getEnable());
|
|
|
//获取伴奏信息
|
|
|
- ImNetworkRoomMusicSheetDownloadData musicSheetDownloadData = courseScheduleStudentPaymentService.getMemberExamSong(Long.parseLong(roomId), userId);
|
|
|
+ ImNetworkRoomMusicSheetDownloadData musicSheetDownloadData = courseScheduleStudentPaymentService.getMemberExamSong(Long.parseLong(roomMember.getRoomId()), roomMember.getUserId());
|
|
|
msg.setExamSongSwitch(musicSheetDownloadData.getEnable());
|
|
|
- imHelper.publishMessage(userId.toString(), roomId, msg);
|
|
|
- //记录考勤
|
|
|
+ imHelper.publishMessage(roomMember.getUserId().toString(), roomMember.getRoomId(), msg);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -161,12 +168,19 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void leaveRoom(String roomId,UserRoleEnum userRole) throws Exception {
|
|
|
+ public void leaveRoom(String roomId) throws Exception {
|
|
|
Long userId = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
|
|
|
map(SysUser::getId).
|
|
|
orElseThrow(()-> new BizException("请登录"));
|
|
|
log.info("leaveRoom: roomId={}, userId={}", roomId, userId);
|
|
|
long courseScheduleId = Long.parseLong(roomId);
|
|
|
+ Long teacherId = Optional.ofNullable(courseScheduleService.getById(courseScheduleId)).
|
|
|
+ map(CourseSchedule::getTeacherId).
|
|
|
+ orElseThrow(()->new BizException("房间信息不存在"));
|
|
|
+ UserRoleEnum userRole = UserRoleEnum.STUDENT;
|
|
|
+ if(teacherId.equals(userId)){
|
|
|
+ userRole = UserRoleEnum.TEACHER;
|
|
|
+ }
|
|
|
if (userRole == UserRoleEnum.TEACHER){
|
|
|
//如果老师退出房间,关闭伴奏
|
|
|
courseScheduleStudentMusicSheetService.getDao().closePlayStatus(courseScheduleId,null);
|
|
@@ -462,7 +476,11 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
msg.setType(deviceControl.getDeviceType().ordinal());
|
|
|
msg.setOpUserId(sysUser.getId().toString());
|
|
|
msg.setOpUserName(sysUser.getUsername());
|
|
|
- imHelper.publishMessage(sysUser.getId().toString(),deviceControl.getUserId().toString(), deviceControl.getRoomId(), msg);
|
|
|
+ //获取老师编号
|
|
|
+ Long teacherId = Optional.ofNullable(courseScheduleService.getById(deviceControl.getRoomId())).
|
|
|
+ map(CourseSchedule::getTeacherId).
|
|
|
+ orElseThrow(()->new BizException("房间信息不存在"));
|
|
|
+ imHelper.publishMessage(sysUser.getId().toString(),teacherId.toString(), deviceControl.getRoomId(), msg);
|
|
|
|
|
|
ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),deviceControl.getEnable());
|
|
|
deviceResourceMessage.setUserId(sysUser.getId().toString());
|
|
@@ -523,17 +541,22 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
msg.setType(deviceControl.getDeviceType().ordinal());
|
|
|
msg.setOpUserId(sysUser.getId().toString());
|
|
|
msg.setOpUserName(sysUser.getUsername());
|
|
|
- imHelper.publishMessage(sysUser.getId().toString(),deviceControl.getUserId().toString(), deviceControl.getRoomId(), msg);
|
|
|
+ //获取老师编号
|
|
|
+ Long teacherId = Optional.ofNullable(courseScheduleService.getById(deviceControl.getRoomId())).
|
|
|
+ map(CourseSchedule::getTeacherId).
|
|
|
+ orElseThrow(()->new BizException("房间信息不存在"));
|
|
|
+ imHelper.publishMessage(sysUser.getId().toString(),teacherId.toString(), deviceControl.getRoomId(), msg);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void musicSheetDownNotify(String roomId, Long accompanimentId, Integer status) throws Exception {
|
|
|
log.info("musicSheetDownNotify: roomId={},accompanimentId={},status={}", roomId,accompanimentId,status);
|
|
|
- SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
|
|
|
+ Long userId = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
|
|
|
+ map(SysUser::getId).
|
|
|
orElseThrow(()-> new BizException("请登录"));
|
|
|
Long scheduleId = Long.parseLong(roomId);
|
|
|
- List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = courseScheduleStudentMusicSheetService.getDao().queryBySheetIdAndCourseId(accompanimentId, scheduleId, sysUser.getId(), null, null);
|
|
|
+ List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = courseScheduleStudentMusicSheetService.getDao().queryBySheetIdAndCourseId(accompanimentId, scheduleId,userId, null, null);
|
|
|
if(CollectionUtils.isEmpty(studentMusicSheetResults)){
|
|
|
return;
|
|
|
}
|
|
@@ -548,7 +571,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
//给老师发送学员曲目下载状态
|
|
|
CourseSchedule courseSchedule = courseScheduleService.getById(scheduleId);
|
|
|
ImNetworkMusicSheetDownloadStatusMessage statusMessage = new ImNetworkMusicSheetDownloadStatusMessage(status,studentMusicSheetResults);
|
|
|
- imHelper.publishMessage(sysUser.getId().toString(), courseSchedule.getTeacherId().toString(), roomId, statusMessage);
|
|
|
+ imHelper.publishMessage(userId.toString(), courseSchedule.getTeacherId().toString(), roomId, statusMessage);
|
|
|
}
|
|
|
|
|
|
//校验用户是否提前进入教室
|