|
@@ -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;
|
|
|
}
|
|
|
|