Browse Source

网络教室

zouxuan 3 years ago
parent
commit
d5c8ccc9ab

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/RoomMember.java

@@ -25,7 +25,7 @@ public class RoomMember {
 
     private boolean hand = false;
 
-    private Boolean onlineFlag = true;
+    private Boolean onlineFlag = false;
 
     public Boolean getOnlineFlag() {
         return onlineFlag;

+ 25 - 16
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -169,37 +169,44 @@ public class RoomServiceImpl implements RoomService {
         Date curTime = DateTimeUtils.currentUTC();
 
         RoleEnum roleEnum;
+        String userName;
+        if(sysUser.getId().equals(courseSchedule.getActualTeacherId())){
+            roleEnum = RoleTeacher;
+            userName = sysUser.getRealName();
+        }else {
+            roleEnum = RoleStudent;
+            userName = sysUser.getUsername();
+        }
 
         RoomResult.MemberResult userResult = new RoomResult.MemberResult();
-        RoomMember member = roomMemberDao.findOne(roomId, userId);
-        String userName;
-        if (member == null) {
+        RoomMember roomMember = roomMemberDao.findOne(roomId, userId);
+        if (roomMember == null) {
             int count = roomMemberDao.countRoomMember(roomId);
             if (count == roomProperties.getMaxCount()) {
                 log.info("join error Over max count: roomId = {}, userId = {}", roomId,userId);
                 throw new ApiException(ErrorEnum.ERR_OVER_MAX_COUNT);
             }
-            if(sysUser.getId().equals(courseSchedule.getActualTeacherId())){
-                roleEnum = RoleTeacher;
-                userName = sysUser.getRealName();
-            }else {
-                roleEnum = RoleStudent;
-                userName = sysUser.getUsername();
-            }
             userResult.setMicrophone(true);
             userResult.setCamera(true);
             userResult.setHandUpOn(false);
             userResult.setJoinTime(curTime);
             saveRoomMember(userId,sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime);
         } else {
-            roleEnum = RoleEnum.getEnumByValue(member.getRole());
+            //离线
+            if(!roomMember.getOnlineFlag()){
+                roomMember.setRole(roleEnum.getValue());
+                roomMember.setName(userName);
+                roomMember.setCamera(true);
+                roomMember.setJoinDt(curTime);
+                roomMember.setMusicMode(false);
+                roomMember.setOnlineFlag(true);
+            }
             if(roleEnum == RoleTeacher){
                 courseScheduleStudentPaymentDao.adjustPlayMidi(courseId,null,null);
             }
-            userName = member.getName();
-            userResult.setCamera(member.isCamera());
-            userResult.setHandUpOn(member.isHand());
-            userResult.setJoinTime(member.getJoinDt());
+            userResult.setCamera(roomMember.isCamera());
+            userResult.setHandUpOn(roomMember.isHand());
+            userResult.setJoinTime(roomMember.getJoinDt());
         }
         imHelper.joinGroup(new String[]{userId}, roomId, roomId);
 
@@ -298,7 +305,8 @@ public class RoomServiceImpl implements RoomService {
         }
         log.info("joinRoomFailure : roomId={}, userId={}", roomId, userId);
         //如果加入失败,删除该用户数据
-        roomMemberDao.deleteRoomMember(roomId,userId);
+        roomMember.setOnlineFlag(false);
+        roomMemberDao.update(roomMember);
     }
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@@ -429,6 +437,7 @@ public class RoomServiceImpl implements RoomService {
         roomMember.setJoinDt(joinTime);
         roomMember.setMusicMode(false);
         roomMember.setHeadUrl(headUrl);
+        roomMember.setOnlineFlag(true);
         roomMemberDao.insert(roomMember);
         return roomMember;
     }