Explorar o código

Merge remote-tracking branch 'origin/master'

Joburgess %!s(int64=5) %!d(string=hai) anos
pai
achega
2787918cb4

+ 2 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamCertificationController.java

@@ -42,7 +42,7 @@ public class ExamCertificationController extends BaseController {
 
     @ApiOperation("学生端待考详情")
     @GetMapping(value = "needCheckingDetail")
-    public HttpResponseResult<NeedCheckingDetailDto> needCheckingDetail(Long examRegistrationId) {
-        return succeed(examCertificationService.needCheckingDetail(examRegistrationId));
+    public HttpResponseResult<NeedCheckingDetailDto> needCheckingDetail(Long examRegistrationId,Integer recordFlag) {
+        return succeed(examCertificationService.needCheckingDetail(examRegistrationId,recordFlag));
     }
 }

+ 11 - 4
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomStudentRelationController.java

@@ -64,11 +64,11 @@ public class ExamRoomStudentRelationController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation("学生选择去录播")
+    /*@ApiOperation("学生选择去录播")
     @PostMapping(value = "/stuRecorded")
     public HttpResponseResult<NeedCheckingDetailDto> stuRecorded(Long examRegistrationId) {
         return succeed(examRoomStudentRelationService.stuRecorded(examRegistrationId));
-    }
+    }*/
 
     @ApiOperation("学生端录播详情页面")
     @GetMapping(value = "/stuRecordDetail")
@@ -76,11 +76,18 @@ public class ExamRoomStudentRelationController extends BaseController {
         return succeed(examRoomStudentRelationService.stuRecordDetail(examRegistrationId));
     }
 
-    @ApiOperation("学生选择重新排队")
+    @ApiOperation("学生端完成录播")
+    @PostMapping(value = "/stuEndRecord")
+    public HttpResponseResult stuEndRecord(Long examRegistrationId,String videoUrl) {
+        examRoomStudentRelationService.stuEndRecord(examRegistrationId,videoUrl);
+        return succeed();
+    }
+
+    /*@ApiOperation("学生选择重新排队")
     @PostMapping(value = "/againQueue")
     public HttpResponseResult<NeedCheckingDetailDto> againQueue(Long examRegistrationId) {
         return succeed(examRoomStudentRelationService.againQueue(examRegistrationId));
-    }
+    }*/
 
     @ApiOperation("获取后台考场待考队列")
     @PostMapping(value = "/queryNeedCheckingList")

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/NeedCheckingDetailDto.java

@@ -25,6 +25,9 @@ public class NeedCheckingDetailDto {
     @ApiModelProperty(value = "考试是否开始")
     private Integer openFlag;
 
+    @ApiModelProperty(value = "是否录制")
+    private Integer recordFlag;
+
     @ApiModelProperty(value = "学员是否考试")
     private Integer finishedExam;
 
@@ -40,6 +43,14 @@ public class NeedCheckingDetailDto {
     @ApiModelProperty(value = "注意事项")
     private String desc;
 
+    public Integer getRecordFlag() {
+        return recordFlag;
+    }
+
+    public void setRecordFlag(Integer recordFlag) {
+        this.recordFlag = recordFlag;
+    }
+
     public Long getExamRoomStudentRelationId() {
         return examRoomStudentRelationId;
     }

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/StuRecordDetailDto.java

@@ -6,6 +6,9 @@ import java.util.Date;
 
 public class StuRecordDetailDto {
 
+    @ApiModelProperty(value = "报名编号")
+    private Long examRegistrationId;
+
     @ApiModelProperty(value = "剩余时长(秒)")
     private Integer subTime;
 
@@ -24,6 +27,14 @@ public class StuRecordDetailDto {
     @ApiModelProperty(value = "开始录制时间")
     private Date recordStartTime;
 
+    public Long getExamRegistrationId() {
+        return examRegistrationId;
+    }
+
+    public void setExamRegistrationId(Long examRegistrationId) {
+        this.examRegistrationId = examRegistrationId;
+    }
+
     public Integer getRecordTime() {
         return recordTime;
     }

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamCertificationService.java

@@ -32,7 +32,7 @@ public interface ExamCertificationService extends BaseService<Long, ExamCertific
      * @param examRegistrationId
      * @return
      */
-    NeedCheckingDetailDto needCheckingDetail(Long examRegistrationId);
+    NeedCheckingDetailDto needCheckingDetail(Long examRegistrationId,Integer recordFlag);
 
     /**
      * 获取后台准考证详情

+ 7 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRoomStudentRelationService.java

@@ -140,4 +140,11 @@ public interface ExamRoomStudentRelationService extends BaseService<Long, ExamRo
      * @return
      */
     StuRecordDetailDto stuRecordDetail(Long examRegistrationId);
+
+    /**
+     * 学生端完成录播
+     * @param examRegistrationId
+     * @param videoUrl
+     */
+    void stuEndRecord(Long examRegistrationId, String videoUrl);
 }

+ 13 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamCertificationServiceImpl.java

@@ -8,15 +8,18 @@ import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.user.api.entity.Student;
 import com.keao.edu.user.dao.ExamCertificationDao;
 import com.keao.edu.user.dao.ExamRoomStudentRelationDao;
+import com.keao.edu.user.dao.StudentExamResultDao;
 import com.keao.edu.user.dao.SubjectDao;
 import com.keao.edu.user.dto.ExamCertificationDto;
 import com.keao.edu.user.dto.NeedCheckingDetailDto;
 import com.keao.edu.user.entity.ExamCertification;
+import com.keao.edu.user.entity.StudentExamResult;
 import com.keao.edu.user.entity.Subject;
 import com.keao.edu.user.service.ExamCertificationService;
 import com.keao.edu.user.service.StudentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -35,6 +38,8 @@ public class ExamCertificationServiceImpl extends BaseServiceImpl<Long, ExamCert
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private StudentService studentService;
+	@Autowired
+	private StudentExamResultDao studentExamResultDao;
 
 	@Override
 	public BaseDAO<Long, ExamCertification> getDAO() {
@@ -66,7 +71,14 @@ public class ExamCertificationServiceImpl extends BaseServiceImpl<Long, ExamCert
 	}
 
 	@Override
-	public NeedCheckingDetailDto needCheckingDetail(Long examRegistrationId) {
+	@Transactional(rollbackFor = Exception.class)
+	public NeedCheckingDetailDto needCheckingDetail(Long examRegistrationId,Integer recordFlag) {
+		if(recordFlag != null && recordFlag == 1){
+			StudentExamResult studentExamResult = studentExamResultDao.findByRegistrationId(examRegistrationId);
+			studentExamResult.setRecordFlag(recordFlag);
+			studentExamResultDao.update(studentExamResult);
+		}
+
 		NeedCheckingDetailDto needCheckingDetailDto = examCertificationDao.needCheckingDetail(examRegistrationId);
 		//等待学员数
 		String signInTime = needCheckingDetailDto.getSignInTime();

+ 36 - 9
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -287,12 +287,12 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 	@Transactional(rollbackFor = Exception.class)
 	public NeedCheckingDetailDto stuRecorded(Long examRegistrationId) {
 		//修改考试状态为录播
-		StudentExamResult studentExamResult = studentExamResultDao.findByRegistrationId(examRegistrationId);
+		/*StudentExamResult studentExamResult = studentExamResultDao.findByRegistrationId(examRegistrationId);
 		studentExamResult.setRecordFlag(1);
 		studentExamResult.setRecordStartTime(new Date());
-		studentExamResultDao.update(studentExamResult);
+		studentExamResultDao.update(studentExamResult);*/
 		//返回详情数据
-		return examCertificationService.needCheckingDetail(examRegistrationId);
+		return examCertificationService.needCheckingDetail(examRegistrationId,1);
 	}
 
 	@Override
@@ -301,7 +301,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		//清除排队状态
 		examRoomStudentRelationDao.cleanSignInTime(examRegistrationId);
 		//返回详情数据
-		return examCertificationService.needCheckingDetail(examRegistrationId);
+		return examCertificationService.needCheckingDetail(examRegistrationId,null);
 	}
 
 	@Override
@@ -325,6 +325,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public StuRecordDetailDto stuRecordDetail(Long examRegistrationId) {
 		StudentExamResult studentExamResult = studentExamResultDao.findByRegistrationId(examRegistrationId);
 		//当前学员是否完成考试
@@ -332,9 +333,17 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 			throw new BizException("操作失败:您已完成考试");
 		}
 		//是否允许录播
-		if(studentExamResult.getRecordFlag() == 0){
-			throw new BizException("操作失败:请走直播通道");
+		if(studentExamResult.getRecordStartTime() == null){
+			if(studentExamResult.getRecordFlag() == 0){
+				studentExamResult.setRecordFlag(1);
+				studentExamResult.setRecordStartTime(new Date());
+				studentExamResultDao.update(studentExamResult);
+			}else {
+				studentExamResult.setRecordStartTime(new Date());
+				studentExamResultDao.update(studentExamResult);
+			}
 		}
+
 		StuRecordDetailDto stuRecordDetailDto = examRegistrationDao.getStuRecordDetail(examRegistrationId);
 		int recordMinutes = Integer.parseInt(sysConfigService.findByParamName("record_minutes").getParanValue());
 		Date date = new Date();
@@ -345,11 +354,29 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		}
 		stuRecordDetailDto.setSubTime(secondsBetween);
 		stuRecordDetailDto.setRecordTime(recordMinutes);
+		stuRecordDetailDto.setExamRegistrationId(examRegistrationId);
 		stuRecordDetailDto.setSingleSongRecordMinutes(Integer.parseInt(sysConfigService.findByParamName("single_song_record_minutes").getParanValue()));
 		return stuRecordDetailDto;
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void stuEndRecord(Long examRegistrationId, String videoUrl) {
+		StudentExamResult studentExamResult = studentExamResultDao.findByRegistrationId(examRegistrationId);
+		//当前学员是否完成考试
+		if(studentExamResult.getIsFinishedExam() == 1){
+			throw new BizException("提交失败:您的考试已完成");
+		}
+		//是否允许录播
+		if(studentExamResult.getRecordFlag() == 0){
+			throw new BizException("提交失败:当前考试不允许录播");
+		}
+		studentExamResult.setVideoUrl(videoUrl);
+		studentExamResult.setIsFinishedExam(1);
+		studentExamResultDao.update(studentExamResult);
+	}
+
+	@Override
 	public void nextBit(Long nextExamRoomStudentRelationId, Long currentExamRoomStudentRelationId, Integer examStatus,Long examRoomId) {
 		Boolean isPush = true;
 		if(currentExamRoomStudentRelationId != null){
@@ -400,7 +427,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		publishMessageDto.setRoomId(examRoomStudentRelation.getExamRoomId().toString());
 		MemberChangedMessage msg = new MemberChangedMessage(action, userId,3);
 //		String jsonString = JSONObject.toJSONString(examCertificationService.needCheckingDetail(examRoomStudentRelation.getExamRegistrationId()));
-		NeedCheckingDetailDto needCheckingDetailDto = examCertificationService.needCheckingDetail(examRoomStudentRelation.getExamRegistrationId());
+		NeedCheckingDetailDto needCheckingDetailDto = examCertificationService.needCheckingDetail(examRoomStudentRelation.getExamRegistrationId(),null);
 		msg.setWaitNum(needCheckingDetailDto.getWaitNum());
 		msg.setClassroomSwitch(needCheckingDetailDto.getClassroomSwitch());
 //		msg.setAppParamJson(jsonString);
@@ -422,7 +449,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Student_Queue, userId,3);
 //		String jsonString = JSONObject.toJSONString(examCertificationService.needCheckingDetail(examRoomStudentRelation.getExamRegistrationId()));
 //		msg.setAppParamJson(jsonString);
-		NeedCheckingDetailDto needCheckingDetailDto = examCertificationService.needCheckingDetail(examRoomStudentRelation.getExamRegistrationId());
+		NeedCheckingDetailDto needCheckingDetailDto = examCertificationService.needCheckingDetail(examRoomStudentRelation.getExamRegistrationId(),null);
 		msg.setWaitNum(needCheckingDetailDto.getWaitNum());
 		msg.setClassroomSwitch(needCheckingDetailDto.getClassroomSwitch());
 		Map<String,Object> paramMap = new HashMap<>(2);
@@ -466,7 +493,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		publishMessageDto.setRoomId(studentExamRoom.getExamRoomId().toString());
 		MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Student_Queue, userId,3);
 //		String jsonString = JSONObject.toJSONString(examCertificationService.needCheckingDetail(examRegistrationId));
-		NeedCheckingDetailDto needCheckingDetailDto = examCertificationService.needCheckingDetail(examRegistrationId);
+		NeedCheckingDetailDto needCheckingDetailDto = examCertificationService.needCheckingDetail(examRegistrationId,null);
 //		msg.setAppParamJson(needCheckingDetailDto.getWaitNum());
 		msg.setWaitNum(needCheckingDetailDto.getWaitNum());
 		publishMessageDto.setMemberChangedMessage(msg);

+ 2 - 1
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamCertificationMapper.xml

@@ -155,10 +155,11 @@
 		<result property="classroomSwitch" column="classroom_switch_"/>
 		<result property="openFlag" column="open_flag_"/>
 		<result property="finishedExam" column="is_finished_exam_"/>
+		<result property="recordFlag" column="record_flag_"/>
 	</resultMap>
 	<select id="needCheckingDetail" resultMap="NeedCheckingDetailDtoMap">
 		SELECT ersr.id_ exam_room_student_relation_id_,eb.name_ exam_base_name_,er.exam_start_time_,er.exam_end_time_,er.open_flag_,
-		ser.is_finished_exam_,ersr.exam_room_id_,ersr.sign_in_time_,ersr.classroom_switch_,ersr.exam_registration_id_
+		ser.is_finished_exam_,ersr.exam_room_id_,ersr.sign_in_time_,ersr.classroom_switch_,ersr.exam_registration_id_,ser.record_flag_
 		FROM exam_room_student_relation ersr
 		LEFT JOIN examination_basic eb ON eb.id_ = ersr.examination_basic_id_
 		LEFT JOIN exam_room er ON er.id_ = ersr.exam_room_id_