Explorar o código

Merge branch 'master' of http://git.dayaedu.com/yonge/edu-saas

yonge %!s(int64=5) %!d(string=hai) anos
pai
achega
8d4ed42302
Modificáronse 16 ficheiros con 130 adicións e 19 borrados
  1. 1 0
      edu-im/edu-im-server/src/main/java/com/keao/edu/im/pojo/RoomResult.java
  2. 1 1
      edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/Impl/RoomServiceImpl.java
  3. 12 0
      edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/ExamRoom.java
  4. 14 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomStudentRelationController.java
  5. 22 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationDto.java
  6. 5 5
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/StuRecordDetailDto.java
  7. 2 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/enums/ExamStatusEnum.java
  8. 6 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRoomStudentRelationService.java
  9. 9 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/StudentExamResultService.java
  10. 4 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java
  11. 11 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java
  12. 21 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java
  13. 8 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentExamResultServiceImpl.java
  14. 4 1
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamManualLedgerMapper.xml
  15. 9 7
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml
  16. 1 1
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomMapper.xml

+ 1 - 0
edu-im/edu-im-server/src/main/java/com/keao/edu/im/pojo/RoomResult.java

@@ -15,6 +15,7 @@ public class RoomResult {
     private @Getter @Setter String roomId;
     private @Getter @Setter Date startTime;
     private @Getter @Setter int surplusTime;
+    private @Getter @Setter int examFlag;
     private @Getter @Setter Long registrationId;
     private @Getter @Setter String imToken;
     private @Getter @Setter String authorization;

+ 1 - 1
edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/Impl/RoomServiceImpl.java

@@ -333,7 +333,7 @@ public class RoomServiceImpl implements RoomService {
         if (registrationId != null){
             roomResult.setRegistrationId(registrationId);
         }
-
+        roomResult.setExamFlag(examRoom.getExamFlag());
         roomResult.setMembers(roomMemberDao.findByRid(roomId));
 //        List<Whiteboard> whiteboardList = whiteboardDao.findByRid(roomId);
 //        roomResult.setWhiteboards(whiteboardList);

+ 12 - 0
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/ExamRoom.java

@@ -52,8 +52,12 @@ public class ExamRoom {
 
 	private Integer organId;
 
+	@ApiModelProperty(value = "考场状态0关闭1开启")
 	private Integer openFlag;
 
+	@ApiModelProperty(value = "考试状态1开始0关闭")
+	private Integer examFlag;
+
 	private Integer examPlanPushFlag;
 
 	private Integer examRoomStudentNum;
@@ -69,6 +73,14 @@ public class ExamRoom {
 	/**  */
 	private String tenantId;
 
+	public Integer getExamFlag() {
+		return examFlag;
+	}
+
+	public void setExamFlag(Integer examFlag) {
+		this.examFlag = examFlag;
+	}
+
 	public ExamRoom() {
 	}
 

+ 14 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomStudentRelationController.java

@@ -57,6 +57,20 @@ public class ExamRoomStudentRelationController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation("开始考试")
+    @PostMapping(value = "/actionExam")
+    public HttpResponseResult actionExam(Long examRoomStudentRelationId) {
+        examRoomStudentRelationService.actionExam(examRoomStudentRelationId);
+        return succeed();
+    }
+
+    @ApiOperation("关闭考试")
+    @PostMapping(value = "/closeExam")
+    public HttpResponseResult closeExam(Long examRoomStudentRelationId) {
+        examRoomStudentRelationService.actionExam(examRoomStudentRelationId);
+        return succeed();
+    }
+
     @ApiOperation("监考端指定学员去录播")
     @PostMapping(value = "/webRecorded")
     public HttpResponseResult webRecorded(Long nextExamRoomStudentRelationId,Long examRoomStudentRelationId,Long roomId) {

+ 22 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationDto.java

@@ -64,6 +64,12 @@ public class ExamRegistrationDto{
     @ApiModelProperty(value = "报名开始时间")
     private String enrollStartTime;
 
+    @ApiModelProperty(value = "演奏曲列表(用逗号分隔)")
+    private String performSongIdList;
+
+    @ApiModelProperty(value = "练习曲列表(用逗号分隔)")
+    private String practiceSongIdList;
+
     @ApiModelProperty(value = "报名结束时间")
     private String enrollEndTime;
 
@@ -75,6 +81,22 @@ public class ExamRegistrationDto{
 
     private String studentName;
 
+    public String getPerformSongIdList() {
+        return performSongIdList;
+    }
+
+    public void setPerformSongIdList(String performSongIdList) {
+        this.performSongIdList = performSongIdList;
+    }
+
+    public String getPracticeSongIdList() {
+        return practiceSongIdList;
+    }
+
+    public void setPracticeSongIdList(String practiceSongIdList) {
+        this.practiceSongIdList = practiceSongIdList;
+    }
+
     public Long getId() {
         return id;
     }

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

@@ -19,7 +19,7 @@ public class StuRecordDetailDto {
     private Integer singleSongRecordMinutes;
 
     @ApiModelProperty(value = "实际考试结束时间")
-    private String actualExamEndTime;
+    private Date examEndTime;
 
     @ApiModelProperty(value = "考试内容")
     private String songJson;
@@ -67,12 +67,12 @@ public class StuRecordDetailDto {
         this.subTime = subTime;
     }
 
-    public String getActualExamEndTime() {
-        return actualExamEndTime;
+    public Date getExamEndTime() {
+        return examEndTime;
     }
 
-    public void setActualExamEndTime(String actualExamEndTime) {
-        this.actualExamEndTime = actualExamEndTime;
+    public void setExamEndTime(Date examEndTime) {
+        this.examEndTime = examEndTime;
     }
 
     public String getSongJson() {

+ 2 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/enums/ExamStatusEnum.java

@@ -14,8 +14,8 @@ public enum ExamStatusEnum implements BaseEnum<String, ExamStatusEnum> {
     EXAM_ING("EXAM_ING", "考试中", 5),
     EXAM_END("EXAM_END", "考试结束", 6),
     RESULT_CONFIRM("RESULT_CONFIRM", "确认考试结果", 7),
-    CLOSE("CLOSE", "关闭", 7),
-    DELETE("DELETE", "删除", 7);
+    CLOSE("CLOSE", "关闭", 8),
+    DELETE("DELETE", "删除", 9);
 
     private String code;
 

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

@@ -147,4 +147,10 @@ public interface ExamRoomStudentRelationService extends BaseService<Long, ExamRo
      * @param videoUrl
      */
     void stuEndRecord(Long examRegistrationId, String videoUrl);
+
+    /**
+     * 开始考试
+     * @param examRoomStudentRelationId
+     */
+    void actionExam(Long examRoomStudentRelationId);
 }

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/StudentExamResultService.java

@@ -27,6 +27,15 @@ public interface StudentExamResultService extends BaseService<Long, StudentExamR
      */
     void updateStudentExamResult(StudentExamResult studentExamResult);
 
+    /**
+     * @describe 考试结果确认推送
+     * @author Joburgess
+     * @date 2020.07.23
+     * @param examId:
+     * @return void
+     */
+    void examResultConfirmPush(Long examId);
+
     StudentExamResultStatisticsDto getStudentExamResultStatisticsInfo(Integer organId, Integer examId);
 
     /**

+ 4 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java

@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -130,7 +131,9 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
             BigDecimal totalAmount = examOrgan.getTotalPaymentAmount().add(examRegistration.getLevelFee()).add(examRegistration.getTheoryLevelFee());
             examOrgan.setTotalPaymentAmount(totalAmount);
         }
-        examOrganizationRelationDao.batchUpdate(examOrgans);
+        if(!CollectionUtils.isEmpty(examOrgans)){
+            examOrganizationRelationDao.batchUpdate(examOrgans);
+        }
 
         return order;
     }

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java

@@ -226,6 +226,9 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 			if(er.getExamStartTime().compareTo(er.getExamEndTime())>=0){
 				throw new BizException("考试时间异常");
 			}
+			if(!DateUtils.isSameDay(er.getExamStartTime(), er.getExamEndTime())){
+				throw new BizException("暂不支持跨天");
+			}
 			examRooms.add(er);
 		}
 		checkRoomTeachers(examRooms);
@@ -296,6 +299,14 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 			examRoom.setExamEndTime(existExamRoom.getExamEndTime());
 		}
 
+		if(examRoom.getExamStartTime().compareTo(examRoom.getExamEndTime())>=0){
+			throw new BizException("考试时间异常");
+		}
+
+		if(!DateUtils.isSameDay(examRoom.getExamStartTime(), examRoom.getExamEndTime())){
+			throw new BizException("暂不支持跨天");
+		}
+
 		List<ExamRoom> examRooms=new ArrayList<>(Arrays.asList(examRoom));
 		checkRoomTeachers(examRooms);
 

+ 21 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -26,6 +26,7 @@ import com.keao.edu.user.page.ExamRoomStudentRelationQueryInfo;
 import com.keao.edu.user.service.*;
 import com.keao.edu.util.collection.MapUtil;
 import com.keao.edu.util.date.DateUtil;
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -348,8 +349,9 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 
 		StuRecordDetailDto stuRecordDetailDto = examRegistrationDao.getStuRecordDetail(examRegistrationId);
 		int recordMinutes = Integer.parseInt(sysConfigService.findByParamName("record_minutes").getParanValue());
-		Date date = new Date();
+		Date date = studentExamResult.getRecordStartTime();
 		date = DateUtil.addMinutes(date,recordMinutes);
+		stuRecordDetailDto.setExamEndTime(date);
 		int secondsBetween = DateUtil.secondsBetween(stuRecordDetailDto.getRecordStartTime(), date);
 		if(secondsBetween <= 0){
 			throw new BizException("操作失败:录制超时");
@@ -357,6 +359,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		stuRecordDetailDto.setSubTime(secondsBetween);
 		stuRecordDetailDto.setRecordTime(recordMinutes);
 		stuRecordDetailDto.setExamRegistrationId(examRegistrationId);
+		stuRecordDetailDto.setSongJson(StringEscapeUtils.unescapeJavaScript(stuRecordDetailDto.getSongJson()));
 		stuRecordDetailDto.setSingleSongRecordMinutes(Integer.parseInt(sysConfigService.findByParamName("single_song_record_minutes").getParanValue()));
 		return stuRecordDetailDto;
 	}
@@ -379,6 +382,23 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void actionExam(Long examRoomStudentRelationId) {
+		ExamRoomStudentRelation examRoomStudentRelation = examRoomStudentRelationDao.get(examRoomStudentRelationId);
+		examRoomStudentRelation.setClassroomSwitch(1);
+
+		ExamRoom examRoom = examRoomDao.get(examRoomStudentRelation.getExamRoomId());
+		if(examRoom.getExamFlag() == 1){
+			throw new BizException("考试已开启,请勿重复操作");
+		}
+		examRoomStudentRelationDao.update(examRoomStudentRelation);
+		examRoom.setExamFlag(1);
+		examRoomDao.update(examRoom);
+		publishMessage(examRoomStudentRelation,MemberChangedMessage.Student_Queue,true);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void nextBit(Long nextExamRoomStudentRelationId, Long currentExamRoomStudentRelationId, Integer examStatus,Long examRoomId) {
 		Boolean isPush = true;
 		if(currentExamRoomStudentRelationId != null){

+ 8 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentExamResultServiceImpl.java

@@ -102,6 +102,14 @@ public class StudentExamResultServiceImpl extends BaseServiceImpl<Long, StudentE
 	}
 
 	@Override
+	public void examResultConfirmPush(Long examId) {
+		if(Objects.isNull(examId)){
+			return;
+		}
+
+	}
+
+	@Override
 	public StudentExamResultStatisticsDto getStudentExamResultStatisticsInfo(Integer organId, Integer examId) {
 		if(Objects.isNull(examId)){
 			throw new BizException("请指定考级项目");

+ 4 - 1
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamManualLedgerMapper.xml

@@ -99,9 +99,12 @@
 			<if test="organId!=null and organId!=0">
 				AND organ_id_=#{organId}
 			</if>
-			<if test="targetOrganId!=null">
+			<if test="targetOrganId!=null and targetOrganId!=-99">
 				AND target_organ_id_=#{targetOrganId}
 			</if>
+			<if test="targetOrganId!=null and targetOrganId==-99">
+				AND target_organ_id_ IS NULL
+			</if>
 		</where>
 	</sql>
 

+ 9 - 7
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -205,7 +205,7 @@
 
 	<sql id="queryCondition">
 		<where>
-			er.status_ NOT IN ('CANCEL')
+			er.status_ NOT IN ('CANCEL', 'PAY_WAIT')
 			<if test="organIds!=null">
 				AND er.organ_id_ IN
 				<foreach collection="organIds" item="organId" separator="," open="(" close=")">
@@ -462,6 +462,8 @@
 		<result property="examEndTime" column="expect_exam_end_time_"/>
 		<result property="enrollEndTime" column="enroll_end_time_"/>
 		<result property="enrollStartTime" column="enroll_start_time_"/>
+		<result property="performSongIdList" column="perform_song_id_list_"/>
+		<result property="practiceSongIdList" column="practice_song_id_list_"/>
 	</resultMap>
     <select id="countStudentList" resultType="java.lang.Integer">
 		SELECT COUNT(er.id_) FROM exam_registration er
@@ -477,18 +479,20 @@
 			</if>
 			<if test="paymentStatus != null and paymentStatus == 1">
 				<if test="paymentStatus == 1">
-					AND er.status_ = 'AUDIT_PASS'
+					AND er.status_ IN ('AUDIT_PASS','AUDIT_WAIT','AUDIT_REJECT')
 				</if>
 				<if test="paymentStatus == 0">
-					AND er.status_ != 'AUDIT_PASS'
+					AND er.status_ IN ('CANCEL','PAY_WAIT')
 				</if>
 			</if>
 		</where>
 	</sql>
 	<select id="queryStudentList" resultMap="ExamRegistrationDtoMap">
-		SELECT er.*,eb.enroll_end_time_,eb.enroll_start_time_,eb.expect_exam_end_time_,eb.expect_exam_start_time_,eb.name_ examBaseName
+		SELECT er.*,eb.enroll_end_time_,eb.enroll_start_time_,eb.expect_exam_end_time_,
+		eb.expect_exam_start_time_,eb.name_ examBaseName,ess.practice_song_id_list_,ess.perform_song_id_list_
 		FROM exam_registration er
 		LEFT JOIN examination_basic eb ON er.examination_basic_id_ = eb.id_
+		LEFT JOIN exam_subject_song ess ON er.examination_basic_id_ = ess.examination_basic_id_
 		<include refid="queryStudentListSql"/>
 		ORDER BY er.update_time_ DESC
 		<include refid="global.limit"/>
@@ -592,14 +596,12 @@
 		<include refid="global.limit"/>
 	</select>
 	<resultMap id="StuRecordDetailDtoMap" type="com.keao.edu.user.dto.StuRecordDetailDto">
-		<result property="actualExamEndTime" column="expect_exam_end_time_"/>
 		<result property="songJson" column="song_json_"/>
 		<result property="recordStartTime" column="record_start_time_"/>
 	</resultMap>
     <select id="getStuRecordDetail" resultMap="StuRecordDetailDtoMap">
-		SELECT eb.expect_exam_end_time_,er.song_json_,ser.record_start_time_
+		SELECT er.song_json_,ser.record_start_time_
 		FROM exam_registration er
-		LEFT JOIN examination_basic eb ON er.examination_basic_id_ = eb.id_
 		LEFT JOIN student_exam_result ser ON ser.exam_registration_id_ = er.id_
 		WHERE er.id_ = #{examRegistrationId} LIMIT 1
 	</select>

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

@@ -331,7 +331,7 @@
 		FROM exam_room er
 		LEFT JOIN examination_basic eb ON er.examination_basic_id_ = eb.id_
 		<include refid="queryExamRoomPageListSql"/>
-		ORDER BY eb.exam_start_time_ DESC
+		ORDER BY er.exam_start_time_ DESC
 		<include refid="global.limit"/>
 	</select>