|  | @@ -7,7 +7,6 @@ import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.UserRoleEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberService;
 | 
	
		
			
				|  |  | -import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
	
		
			
				|  | @@ -16,7 +15,6 @@ import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.Date;
 | 
	
		
			
				|  |  |  import java.util.Objects;
 | 
	
		
			
				|  |  | -import java.util.concurrent.TimeUnit;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 网络教室成员(ImNetworkRoomMember)表服务实现类
 | 
	
	
		
			
				|  | @@ -34,72 +32,6 @@ public class ImNetworkRoomMemberServiceImpl extends ServiceImpl<ImNetworkRoomMem
 | 
	
		
			
				|  |  |          return this.baseMapper;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public void leaveRoomSuccess(String roomId, String userId, String deviceNum) throws Exception {
 | 
	
		
			
				|  |  | -        log.info("leaveRoomSuccess: roomId={}, userId={},deviceNum={}", roomId, userId, deviceNum);
 | 
	
		
			
				|  |  | -        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;
 | 
	
		
			
				|  |  | -            courseScheduleStudentMusicScoreDao.closePlayStatus(courseSchedule.getId(), null, null);
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -            roleEnum = RoleStudent;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        String leaveSuccessKey = "leaveRoomSuccess" + roomId + userId;
 | 
	
		
			
				|  |  | -        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey, roomId, 1l, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  | -        log.info("leaveRoomSuccess: roomId={}, userId={},deviceNum={},aBoolean={}", roomId, userId, deviceNum, aBoolean);
 | 
	
		
			
				|  |  | -        if (!aBoolean) {
 | 
	
		
			
				|  |  | -            if (StringUtils.isNotEmpty(deviceNum)) {
 | 
	
		
			
				|  |  | -                //如果设备号不为空,更新设备号
 | 
	
		
			
				|  |  | -                if (roleEnum == RoleTeacher) {
 | 
	
		
			
				|  |  | -                    teacherAttendanceService.updateDeviceNum(firstCourseId, userId, null, deviceNum);
 | 
	
		
			
				|  |  | -//                    teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),parseInt,deviceNum);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            return;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        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(), parseInt, deviceNum);
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -            username = sysUser.getUsername();
 | 
	
		
			
				|  |  | -            studentAttendanceService.addStudentAttendanceSignOut(firstCourseId.longValue(), parseInt);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        Room room = roomDao.findByRid(roomId);
 | 
	
		
			
				|  |  | -        if (room == null) {
 | 
	
		
			
				|  |  | -            roomMemberDao.deleteUserByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  | -            userDao.deleteByUid(userId);
 | 
	
		
			
				|  |  | -            return;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (roleEnum != RoleStudent && isUserDisplay(room, userId)) {
 | 
	
		
			
				|  |  | -            updateDisplay(roomId, userId, "", 0);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (roomMemberDao.countByRid(roomId) <= 1) {
 | 
	
		
			
				|  |  | -            roomMemberDao.deleteUserByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  | -            roomDao.deleteByRid(roomId);
 | 
	
		
			
				|  |  | -            deleteWhiteboardByUser(roomId, userId);
 | 
	
		
			
				|  |  | -            imHelper.dismiss(userId, roomId);
 | 
	
		
			
				|  |  | -            courseScheduleStudentMusicScoreDao.closePlayStatus(courseSchedule.getId(), null, null);
 | 
	
		
			
				|  |  | -            log.info("leaveRoomSuccess dismiss the room: {},userId: {}", roomId, userId);
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -            roomMemberDao.deleteUserByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  | -            MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, roleEnum.getValue());
 | 
	
		
			
				|  |  | -            msg.setUserName(username);
 | 
	
		
			
				|  |  | -            imHelper.publishMessage(userId, roomId, msg);
 | 
	
		
			
				|  |  | -            imHelper.quit(new String[]{userId}, roomId);
 | 
	
		
			
				|  |  | -            log.info("leaveRoomSuccess quit group: roomId={},userId: {}", roomId, userId);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        userDao.deleteByUid(userId);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public ImNetworkRoomMember initRoomMember(String roomId, BasicUserInfo sysUser, UserRoleEnum userRole) {
 |