|
@@ -10,7 +10,10 @@ import com.keao.edu.im.common.ApiException;
|
|
|
import com.keao.edu.im.common.BaseResponse;
|
|
|
import com.keao.edu.im.common.ErrorEnum;
|
|
|
import com.keao.edu.im.config.IMProperties;
|
|
|
-import com.keao.edu.im.dao.*;
|
|
|
+import com.keao.edu.im.dao.RoomDao;
|
|
|
+import com.keao.edu.im.dao.RoomMemberDao;
|
|
|
+import com.keao.edu.im.dao.UserDao;
|
|
|
+import com.keao.edu.im.dao.WhiteboardDao;
|
|
|
import com.keao.edu.im.job.ScheduleManager;
|
|
|
import com.keao.edu.im.mec.im.IMHelper;
|
|
|
import com.keao.edu.im.mec.im.message.*;
|
|
@@ -29,7 +32,6 @@ import com.keao.edu.util.date.DateUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Isolation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -76,12 +78,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
@Autowired
|
|
|
private EduUserFeignService eduUserFeignService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private TeacherAttendanceDao teacherAttendanceDao;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private StudentAttendanceDao studentAttendanceDao;
|
|
|
-
|
|
|
@Override
|
|
|
public void roomQuery(String roomId) throws Exception {
|
|
|
imHelper.roomQuery(roomId);
|
|
@@ -157,7 +153,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
throw new BizException("考级入口已关闭");
|
|
|
}
|
|
|
if (memberList.isEmpty()) {
|
|
|
- saveRoomMember(userId,sysUser.getAvatar(), realName, recordedRoomId, Student.getValue(), true,true, date);
|
|
|
+ saveRoomMember(userId,sysUser.getAvatar(), realName, recordedRoomId, Student.getValue(), true,true, date,examRegistrationId);
|
|
|
/*IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{userId}, recordedRoomId, recordedRoomId);
|
|
|
if (!resultInfo.isSuccess()) {
|
|
|
throw new ApiException(ErrorEnum.ERR_CREATE_ROOM_ERROR, resultInfo.getErrorMessage());
|
|
@@ -284,7 +280,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
roleEnum = Student;
|
|
|
}
|
|
|
- saveRoomMember(userId,sysUser.getAvatar(), realName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
|
|
|
+ saveRoomMember(userId,sysUser.getAvatar(), realName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime,registrationId);
|
|
|
/*IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{userId}, roomId, roomId);
|
|
|
if (!resultInfo.isSuccess()) {
|
|
|
throw new ApiException(ErrorEnum.ERR_CREATE_ROOM_ERROR, resultInfo.getErrorMessage());
|
|
@@ -365,102 +361,13 @@ public class RoomServiceImpl implements RoomService {
|
|
|
eduUserFeignService.updateFinishedExam(registrationId,0);
|
|
|
}
|
|
|
this.publishMessage(eduUserFeignService.getPublishMessage(registrationId));
|
|
|
+ eduUserFeignService.upsetStudentAttendance(registrationId,0);
|
|
|
imHelper.startRecord(userId, roomId, registrationId);
|
|
|
// eduUserFeignService.updateSessionId(registrationId,imApiResultInfo.getSessionId());
|
|
|
- }
|
|
|
- return baseResponse;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
- public void signIn(Long roomId) {
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
- Integer userId = sysUser.getId();
|
|
|
- log.info("roomSignIn: roomId={}, userId={}", roomId, userId);
|
|
|
- ExamRoom examRoom = eduUserFeignService.getExamRoom(roomId.intValue());
|
|
|
- Date date = new Date();
|
|
|
- boolean isAssistant = false;
|
|
|
- if (StringUtils.isNotEmpty(examRoom.getAssistantTeacherUserIdList())){
|
|
|
- List<String> list = Arrays.asList(examRoom.getAssistantTeacherUserIdList().split(","));
|
|
|
- if(list.contains(userId)){
|
|
|
- isAssistant = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if(userId.equals(examRoom.getMainTeacherUserId()) || isAssistant){
|
|
|
- TeacherAttendance attendance = teacherAttendanceDao.findByTeacherIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId().intValue(), examRoom.getId());
|
|
|
- if(attendance != null){
|
|
|
- return;
|
|
|
- }
|
|
|
- TeacherAttendance teacherAttendance = new TeacherAttendance();
|
|
|
- teacherAttendance.setExamRoomId(examRoom.getId());
|
|
|
- teacherAttendance.setSignInTime(date);
|
|
|
- teacherAttendance.setTeacherId(userId);
|
|
|
- teacherAttendance.setTenantId(examRoom.getTenantId());
|
|
|
- teacherAttendance.setCreateTime(date);
|
|
|
- teacherAttendance.setExaminationBasicId(examRoom.getExaminationBasicId().intValue());
|
|
|
- teacherAttendanceDao.save(teacherAttendance);
|
|
|
- }else {
|
|
|
- StudentAttendance attendance = studentAttendanceDao.findByUserIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId().intValue(), examRoom.getId());
|
|
|
- if(attendance != null){
|
|
|
- return;
|
|
|
- }
|
|
|
- StudentAttendance studentAttendance = new StudentAttendance();
|
|
|
- studentAttendance.setExamRoomId(examRoom.getId());
|
|
|
- studentAttendance.setSignInTime(date);
|
|
|
- studentAttendance.setUserId(userId);
|
|
|
- studentAttendance.setCreateTime(date);
|
|
|
- studentAttendance.setExaminationBasicId(examRoom.getExaminationBasicId().intValue());
|
|
|
- studentAttendanceDao.save(studentAttendance);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
- public void signOut(Long roomId) {
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
- Integer userId = sysUser.getId();
|
|
|
- log.info("roomSignIn: roomId={}, userId={}", roomId, userId);
|
|
|
- ExamRoom examRoom = eduUserFeignService.getExamRoom(roomId.intValue());
|
|
|
- Date date = new Date();
|
|
|
- boolean isAssistant = false;
|
|
|
- if (StringUtils.isNotEmpty(examRoom.getAssistantTeacherUserIdList())){
|
|
|
- List<String> list = Arrays.asList(examRoom.getAssistantTeacherUserIdList().split(","));
|
|
|
- if(list.contains(userId)){
|
|
|
- isAssistant = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if(userId.equals(examRoom.getMainTeacherUserId()) || isAssistant){
|
|
|
- TeacherAttendance attendance = teacherAttendanceDao.findByTeacherIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId().intValue(), examRoom.getId());
|
|
|
- if(attendance == null){
|
|
|
- attendance = new TeacherAttendance();
|
|
|
- attendance.setExamRoomId(examRoom.getId());
|
|
|
- attendance.setSignInTime(date);
|
|
|
- attendance.setSignOutTime(date);
|
|
|
- attendance.setTeacherId(userId);
|
|
|
- attendance.setTenantId(examRoom.getTenantId());
|
|
|
- attendance.setCreateTime(date);
|
|
|
- attendance.setExaminationBasicId(examRoom.getExaminationBasicId().intValue());
|
|
|
- teacherAttendanceDao.save(attendance);
|
|
|
- }else {
|
|
|
- attendance.setSignOutTime(date);
|
|
|
- teacherAttendanceDao.saveAndFlush(attendance);
|
|
|
- }
|
|
|
}else {
|
|
|
- StudentAttendance attendance = studentAttendanceDao.findByUserIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId().intValue(), examRoom.getId());
|
|
|
- if(attendance == null){
|
|
|
- attendance = new StudentAttendance();
|
|
|
- attendance.setExamRoomId(examRoom.getId());
|
|
|
- attendance.setSignInTime(date);
|
|
|
- attendance.setSignOutTime(date);
|
|
|
- attendance.setUserId(userId);
|
|
|
- attendance.setCreateTime(date);
|
|
|
- attendance.setExaminationBasicId(examRoom.getExaminationBasicId().intValue());
|
|
|
- studentAttendanceDao.save(attendance);
|
|
|
- }else {
|
|
|
- attendance.setSignOutTime(date);
|
|
|
- studentAttendanceDao.saveAndFlush(attendance);
|
|
|
- }
|
|
|
+ eduUserFeignService.upsetTeacherAttendance(examRoom.getId(),sysUser.getId(),0);
|
|
|
}
|
|
|
+ return baseResponse;
|
|
|
}
|
|
|
|
|
|
private void saveRoom(String roomId, String roomName, Date createTime, String display) {
|
|
@@ -477,7 +384,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void saveRoomMember(String userId, String headUrl, String userName, String roomId, int role, boolean cameraOn,boolean musicModeOn, Date joinTime) {
|
|
|
+ private void saveRoomMember(String userId, String headUrl, String userName, String roomId, int role, boolean cameraOn,boolean musicModeOn, Date joinTime,Long examRegistrationId) {
|
|
|
RoomMember roomMember = new RoomMember();
|
|
|
roomMember.setUid(userId);
|
|
|
roomMember.setName(userName);
|
|
@@ -487,6 +394,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
roomMember.setJoinDt(joinTime);
|
|
|
roomMember.setMusicMode(musicModeOn);
|
|
|
roomMember.setHeadUrl(headUrl);
|
|
|
+ roomMember.setExamRegistrationId(examRegistrationId);
|
|
|
roomMemberDao.save(roomMember);
|
|
|
}
|
|
|
|
|
@@ -573,7 +481,10 @@ public class RoomServiceImpl implements RoomService {
|
|
|
// this.signOut(Long.parseLong(roomId));
|
|
|
// this.publishMessage(eduUserFeignService.getPublishMessage(registrationId));
|
|
|
if(registrationId != null){
|
|
|
+ eduUserFeignService.upsetStudentAttendance(registrationId,1);
|
|
|
imHelper.stopRecord(userId,roomId);
|
|
|
+ }else {
|
|
|
+ eduUserFeignService.upsetTeacherAttendance(Long.parseLong(roomId),Integer.parseInt(userId),1);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
@@ -773,10 +684,13 @@ public class RoomServiceImpl implements RoomService {
|
|
|
userDao.deleteByUid(e.getUid());
|
|
|
if("3".equals(e.getRid())){
|
|
|
try {
|
|
|
+ eduUserFeignService.upsetStudentAttendance(e.getExamRegistrationId(),1);
|
|
|
imHelper.stopRecord(e.getUid(),e.getRid());
|
|
|
} catch (Exception e1) {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
+ }else {
|
|
|
+ eduUserFeignService.upsetTeacherAttendance(Long.parseLong(e.getRid()),sysUser.getId(),1);
|
|
|
}
|
|
|
});
|
|
|
roomDao.deleteByRid(roomId.toString());
|
|
@@ -821,6 +735,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
} else {
|
|
|
log.info("don't update display: room={}, userRole={}", roomId, RoleEnum.getEnumByValue(kickedUsers.get(0).getRole()));
|
|
|
}*/
|
|
|
+ eduUserFeignService.upsetStudentAttendance(data.getRegistrationId(),1);
|
|
|
}
|
|
|
userDao.deleteByUid(data.getUserId());
|
|
|
/*IMApiResultInfo apiResultInfo = imHelper.quit(new String[]{data.getUserId()}, roomId);
|