瀏覽代碼

。。。

WANG 6 年之前
父節點
當前提交
84faccc6e8

+ 4 - 2
examcloud-core-examwork-dao/src/main/java/cn/com/qmth/examcloud/core/examwork/dao/ExamSpecialSettingsRepo.java

@@ -20,11 +20,13 @@ public interface ExamSpecialSettingsRepo
 
 	ExamSpecialSettingsEntity findByExamIdAndOrgIdAndCourseIdIsNull(Long examId, Long orgId);
 
+	ExamSpecialSettingsEntity findByExamIdAndOrgIdIsNullAndCourseIdIsNull(Long examId);
+
 	List<ExamSpecialSettingsEntity> findAllByExamIdAndCourseIdIsNullAndOrgIdIsNotNull(Long examId);
 
-	
 	@Transactional
 	@Modifying
 	@Query("update ExamSpecialSettingsEntity set examEnable = :examEnable where examId = :examId")
-	void updateExamEnableByExamId(@Param("examId") long examId, @Param("examEnable") Boolean examEnable); 
+	void updateExamEnableByExamId(@Param("examId") long examId,
+			@Param("examEnable") Boolean examEnable);
 }

+ 14 - 0
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/impl/ExamServiceImpl.java

@@ -45,6 +45,7 @@ import cn.com.qmth.examcloud.core.examwork.service.bean.ExamSpecialSettingsInfo;
 import cn.com.qmth.examcloud.task.api.DataSyncCloudService;
 import cn.com.qmth.examcloud.task.api.request.SyncExamReq;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
+import cn.com.qmth.examcloud.web.helpers.SequenceLockHelper;
 
 /**
  * 类注释
@@ -316,6 +317,7 @@ public class ExamServiceImpl implements ExamService {
 	@Override
 	public ExamSpecialSettingsEntity saveExamSpecialSettings(
 			ExamSpecialSettingsInfo examSpecialInfo) {
+
 		ExamSpecialSettingsEntity examSpecialSettingsEntity = null;
 
 		Long examId = examSpecialInfo.getExamId();
@@ -323,6 +325,10 @@ public class ExamServiceImpl implements ExamService {
 		Date endTime = examSpecialInfo.getEndTime();
 		Long orgId = examSpecialInfo.getOrgId();
 
+		// 上锁
+		Object[] locker = new Object[]{"E_EXAM_SPECIAL_SETTINGS", examId};
+		SequenceLockHelper.getLock(locker);
+
 		if (!new Boolean(null == beginTime).equals(new Boolean(null == endTime))) {
 			throw new StatusException("001101", "beginTime & endTime  wrong");
 		}
@@ -330,11 +336,17 @@ public class ExamServiceImpl implements ExamService {
 		ExamEntity examEntity = GlobalHelper.getPresentEntity(examRepo, examId, ExamEntity.class);
 
 		if (null == examSpecialInfo.getId()) {
+			// 机构特殊设置
 			if (null != orgId) {
 				examSpecialSettingsEntity = examSpecialSettingsRepo
 						.findByExamIdAndOrgIdAndCourseIdIsNull(examSpecialInfo.getExamId(),
 								examSpecialInfo.getOrgId());
 			}
+			// 考试设置
+			else {
+				examSpecialSettingsEntity = examSpecialSettingsRepo
+						.findByExamIdAndOrgIdIsNullAndCourseIdIsNull(examSpecialInfo.getExamId());
+			}
 			if (null == examSpecialSettingsEntity) {
 				examSpecialSettingsEntity = new ExamSpecialSettingsEntity();
 			}
@@ -386,6 +398,8 @@ public class ExamServiceImpl implements ExamService {
 			}
 		}
 
+		// 释放锁
+		SequenceLockHelper.releaseLock(locker);
 		return saved;
 	}