zouxuan 4 years ago
parent
commit
293ba1f807

+ 1 - 0
mec-im/src/main/java/com/ym/mec/im/message/MemberChangedMessage.java

@@ -21,6 +21,7 @@ public class MemberChangedMessage extends BaseMessage {
     @Getter @Setter private boolean camera;
     @Getter @Setter private boolean microphone;
     @Getter @Setter private boolean metronomeSwitch;
+    @Getter @Setter private boolean examSongSwitch;
     @Getter @Setter private boolean handUpOn;
 
     private @Getter @Setter int role;

+ 17 - 2
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -320,6 +320,7 @@ public class RoomServiceImpl implements RoomService {
         msg.setUserName(roomMember.getName());
         msg.setCamera(true);
         Boolean playMidi = false;
+        Boolean examSong = false;
         if(roleEnum == RoleStudent){
             String midiByCourseIdAndUserId = courseScheduleStudentPaymentDao.getMidiByCourseIdAndUserId(schedule.getId().toString(), userId);
             //获取节拍器信息
@@ -329,9 +330,15 @@ public class RoomServiceImpl implements RoomService {
                     playMidi = Boolean.parseBoolean(jsonObject.get("enable").toString());
                 }
             }
+            String examJson = courseScheduleStudentPaymentDao.getExamJsonByCourseIdAndUserId(schedule.getId(), Integer.parseInt(userId));
+            if(StringUtils.isNotEmpty(examJson)){
+                ExamSongDownloadData examSongDownloadData = JSON.parseObject(examJson, ExamSongDownloadData.class);
+                playMidi = examSongDownloadData.getEnable();
+            }
         }
         msg.setHandUpOn(roomMember.isHand());
         msg.setMetronomeSwitch(playMidi);
+        msg.setExamSongSwitch(examSong);
         imHelper.publishMessage(userId, roomId, msg);
         log.info("join room success: roomId = {}, userId = {}, role = {}", roomId, userId, roleEnum);
         signInSuccess(roomMember);
@@ -340,11 +347,19 @@ public class RoomServiceImpl implements RoomService {
     public void signInSuccess(RoomMember roomMember) {
         String roomId = roomMember.getRid();
         String userId = roomMember.getUid();
-        Long currentRoomId = Long.parseLong(redisTemplate.opsForValue().get(roomId + userId));
+        String currentRoomIdKey = roomId + userId;
+
+        Long firstCourseId = Long.parseLong(roomId.substring(1));
+        Long currentRoomId;
+        if(redisTemplate.hasKey(currentRoomIdKey)){
+            currentRoomId = Long.parseLong(redisTemplate.opsForValue().get(currentRoomIdKey));
+        }else {
+            log.error("signInFailure: roomId={}, userId={}", roomId, userId);
+            currentRoomId = firstCourseId;
+        }
         log.info("signInSuccess: currentRoomId={}", currentRoomId);
         log.info("signInSuccess: roomId={}, userId={}", roomId, userId);
         Integer userIdInt = Integer.parseInt(userId);
-        Long firstCourseId = Long.parseLong(roomId.substring(1));
 
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
         if(roleEnum == RoleTeacher){