|
@@ -255,6 +255,29 @@ public class RoomServiceImpl implements RoomService {
|
|
|
return roomResult;
|
|
|
}
|
|
|
|
|
|
+ public RoomMember saveRoomMember(String roomId,String userId){
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userId));
|
|
|
+
|
|
|
+ Teacher teacher = teacherDao.get(Integer.parseInt(userId));
|
|
|
+ CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
|
|
|
+
|
|
|
+ Date curTime = DateTimeUtils.currentUTC();
|
|
|
+
|
|
|
+ RoleEnum roleEnum;
|
|
|
+ RoomMember member = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
+ String userName;
|
|
|
+ if (member == null) {
|
|
|
+ if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
|
|
|
+ roleEnum = RoleTeacher;
|
|
|
+ userName = sysUser.getRealName();
|
|
|
+ }else {
|
|
|
+ roleEnum = RoleStudent;
|
|
|
+ userName = sysUser.getUsername();
|
|
|
+ }
|
|
|
+ member = saveRoomMember(userId, sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime);
|
|
|
+ }
|
|
|
+ return member;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
|
|
@@ -274,7 +297,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
public void joinRoomSuccess(String roomId,String userId,String deviceNum) throws Exception {
|
|
|
RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
if(roomMember == null){
|
|
|
- return ;
|
|
|
+ roomMember = saveRoomMember(roomId,userId);
|
|
|
}
|
|
|
String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
|
|
|
if(redisTemplate.hasKey(joinSuccessKey)){
|
|
@@ -411,20 +434,33 @@ public class RoomServiceImpl implements RoomService {
|
|
|
@Override
|
|
|
public void leaveRoomSuccess(String roomId,String userId,String deviceNum) throws Exception {
|
|
|
RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
- if(roomMember == null){
|
|
|
- return ;
|
|
|
- }
|
|
|
String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
|
|
|
Integer firstCourseId = Integer.parseInt(roomId.substring(1));
|
|
|
if(redisTemplate.hasKey(leaveSuccessKey)){
|
|
|
redisTemplate.delete(leaveSuccessKey);
|
|
|
- //如果设备号不为空,更新设备号
|
|
|
- RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
|
|
|
- if(roleEnum == RoleTeacher && StringUtils.isNotEmpty(deviceNum)){
|
|
|
- teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),Integer.parseInt(userId),deviceNum);
|
|
|
+ if (StringUtils.isNotEmpty(deviceNum)){
|
|
|
+ //如果设备号不为空,更新设备号
|
|
|
+ RoleEnum roleEnum;
|
|
|
+ if(roomMember == null){
|
|
|
+ Teacher teacher = teacherDao.get(Integer.parseInt(userId));
|
|
|
+ CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
+ if(roomMember == null){
|
|
|
+ return ;
|
|
|
+ }
|
|
|
String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
|
|
|
if(redisTemplate.hasKey(joinSuccessKey)){
|
|
|
redisTemplate.delete(joinSuccessKey);
|