浏览代码

优化网络教室签退逻辑,不依赖rongyunRoomMember对象

zouxuan 4 年之前
父节点
当前提交
f1171d22e4
共有 1 个文件被更改,包括 21 次插入22 次删除
  1. 21 22
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

+ 21 - 22
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -434,47 +434,46 @@ public class RoomServiceImpl implements RoomService {
     @Override
     public void leaveRoomSuccess(String roomId,String userId,String deviceNum) throws Exception {
         log.info("leaveRoomSuccess: roomId={}, userId={},deviceNum={}", roomId,userId,deviceNum);
-        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
-        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
+//        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+
         Integer firstCourseId = Integer.parseInt(roomId.substring(1));
+        RoleEnum roleEnum;
+        int parseInt = Integer.parseInt(userId);
+        Teacher teacher = teacherDao.get(parseInt);
+        CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId.longValue());
+        if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
+            roleEnum = RoleTeacher;
+        }else {
+            roleEnum = RoleStudent;
+        }
+
+        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
         if(redisTemplate.hasKey(leaveSuccessKey)){
             redisTemplate.delete(leaveSuccessKey);
             if (StringUtils.isNotEmpty(deviceNum)){
                 //如果设备号不为空,更新设备号
-                RoleEnum roleEnum;
-                if(roomMember == null){
-                    Teacher teacher = teacherDao.get(Integer.parseInt(userId));
-                    CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId.longValue());
-                    if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
-                        roleEnum = RoleTeacher;
-                    }else {
-                        roleEnum = RoleStudent;
-                    }
-                }else {
-                    roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
-                }
                 if(roleEnum == RoleTeacher){
-                    teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId),deviceNum);
+                    teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),parseInt,deviceNum);
                 }
             }
             return;
         }
-        if(roomMember == null){
-            return ;
-        }
         String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
         if(redisTemplate.hasKey(joinSuccessKey)){
             redisTemplate.delete(joinSuccessKey);
         }
         redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
-        RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
 
+        String username;
+        SysUser sysUser = sysUserFeignService.queryUserById(parseInt);
         if(roleEnum == RoleTeacher){
+            username = sysUser.getRealName();
             courseScheduleStudentPaymentDao.adjustPlayMidi(firstCourseId,null,null);
             courseScheduleStudentPaymentDao.adjustExamSong(firstCourseId.longValue(),null,null);
-            teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId),deviceNum);
+            teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),parseInt,deviceNum);
         }else {
-            studentAttendanceService.addStudentAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId));
+            username = sysUser.getUsername();
+            studentAttendanceService.addStudentAttendanceSignOut(firstCourseId.longValue(),parseInt);
         }
         Room room = roomDao.findByRid(roomId);
         if (room == null) {
@@ -494,7 +493,7 @@ public class RoomServiceImpl implements RoomService {
         } else {
             roomMemberDao.deleteUserByRidAndUid(roomId, userId);
             MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, roleEnum.getValue());
-            msg.setUserName(roomMember.getName());
+            msg.setUserName(username);
             imHelper.publishMessage(userId, roomId, msg);
             imHelper.quit(new String[]{userId}, roomId);
             log.info("leaveRoomSuccess quit group: roomId={},userId: {}", roomId,userId);