فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 سال پیش
والد
کامیت
41fa70e65a

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomService.java

@@ -18,7 +18,7 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     ImNetworkRoomDao getDao();
 
     //加入网络教室
-    HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId, UserRoleEnum userRole) throws Exception;
+    HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId) throws Exception;
 
     //加入网络教室成功
     void joinRoomSuccess(String roomId,Long userId) throws Exception;
@@ -27,7 +27,7 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     void joinRoomFailure(String roomId);
 
     //退出房间
-    void leaveRoom(String roomId,UserRoleEnum userRole) throws Exception;
+    void leaveRoom(String roomId) throws Exception;
 
     //退出房间成功
     void leaveRoomSuccess(String roomId, Long userId) throws Exception;

+ 38 - 15
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() {
@@ -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);
     }
 
     //校验用户是否提前进入教室

+ 6 - 3
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomController.java

@@ -47,7 +47,7 @@ public class ImNetworkRoomController extends BaseController {
     public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long roomId) throws Exception {
         roomId = Optional.ofNullable(roomId)
                 .orElseThrow(()->new BizException("房间号不可为空"));
-        return imNetworkRoomService.joinRoom(roomId, UserRoleEnum.TEACHER);
+        return imNetworkRoomService.joinRoom(roomId);
     }
 
 //    @ApiOperation("加入网络教室状态回调")
@@ -60,11 +60,13 @@ public class ImNetworkRoomController extends BaseController {
     @ApiOperation("加入网络教室状态回调")
     @PostMapping(value = "joinRoomFailure", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public HttpResponseResult joinRoomFailure(Long roomId){
+        roomId = Optional.ofNullable(roomId).orElseThrow(()->new BizException("房间号不可为空"));
         imNetworkRoomService.joinRoomFailure(roomId.toString());
         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));
@@ -84,7 +86,8 @@ public class ImNetworkRoomController extends BaseController {
     @ApiImplicitParam(name = "roomId", dataType = "Long", value = "课程编号")
     @PostMapping(value = "/leave", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public HttpResponseResult leaveRoom(Long roomId) throws Exception {
-        imNetworkRoomService.leaveRoom(roomId.toString(),UserRoleEnum.TEACHER);
+        roomId = Optional.ofNullable(roomId).orElseThrow(()->new BizException("房间号不可为空"));
+        imNetworkRoomService.leaveRoom(roomId.toString());
         return succeed();
     }