Browse Source

网络教室

zouxuan 3 years ago
parent
commit
b349116bd9

+ 24 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -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() {
@@ -137,16 +135,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
@@ -462,7 +465,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 +530,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 +560,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);
     }
 
     //校验用户是否提前进入教室

+ 2 - 1
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomController.java

@@ -64,7 +64,8 @@ public class ImNetworkRoomController extends BaseController {
         return succeed();
     }
 
-    @RequestMapping(value = "/statusSync")
+    @PostMapping(value = "/statusSync")
+    @ApiOperation("加入网络教室状态回调")
     public void statusSync(@RequestBody String body) throws Exception {
         ImChannelStateNotify notify = JSONObject.parseObject(body, ImChannelStateNotify.class);
         log.info("statusSyncParam: {}",JSONObject.toJSON(notify));