|
@@ -144,6 +144,7 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
return markUserGroupProgressDtoIPage;
|
|
return markUserGroupProgressDtoIPage;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
@Override
|
|
@Override
|
|
public void addMarkUserQuestion(MarkerAddParam markerAddParam) {
|
|
public void addMarkUserQuestion(MarkerAddParam markerAddParam) {
|
|
if (CollectionUtils.isNotEmpty(markerAddParam.getUserIds())) {
|
|
if (CollectionUtils.isNotEmpty(markerAddParam.getUserIds())) {
|
|
@@ -172,7 +173,15 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- markPaperService.updateGroupStatus(markerAddParam.getExamId(), markerAddParam.getPaperNumber());
|
|
|
|
|
|
+ List<MarkUserQuestion> markUserQuestionList = this.listByExamIdAndPaperNumberAndQuestionId(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), markerAddParam.getQuestionId());
|
|
|
|
+ for (MarkUserQuestion markUserQuestion : markUserQuestionList) {
|
|
|
|
+ if (markUserQuestion.getEnable()) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ this.deleteMarker(markUserQuestion);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+// markPaperService.updateGroupStatus(markerAddParam.getExamId(), markerAddParam.getPaperNumber());
|
|
}
|
|
}
|
|
|
|
|
|
private List<Long> listMergeQuestionId(Long examId, String paperNumber, Long questionId) {
|
|
private List<Long> listMergeQuestionId(Long examId, String paperNumber, Long questionId) {
|
|
@@ -218,13 +227,20 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
public void deleteMarker(MarkUserQuestion markUserQuestion) {
|
|
public void deleteMarker(MarkUserQuestion markUserQuestion) {
|
|
// 先回收,再删除
|
|
// 先回收,再删除
|
|
releaseMarker(Arrays.asList(markUserQuestion.getId()));
|
|
releaseMarker(Arrays.asList(markUserQuestion.getId()));
|
|
- // 逻辑解绑
|
|
|
|
|
|
+
|
|
List<Long> ids = listMergeQuestionId(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId());
|
|
List<Long> ids = listMergeQuestionId(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId());
|
|
- UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
|
|
|
|
- updateWrapper.lambda().set(MarkUserQuestion::getEnable, false)
|
|
|
|
- .eq(MarkUserQuestion::getUserId, markUserQuestion.getUserId())
|
|
|
|
- .in(MarkUserQuestion::getQuestionId, ids);
|
|
|
|
- this.update(updateWrapper);
|
|
|
|
|
|
+
|
|
|
|
+ List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId(), markUserQuestion.getUserId(), null);
|
|
|
|
+ if (markTaskService.markedCount(markTaskList) > 0) {
|
|
|
|
+ // 逻辑解绑
|
|
|
|
+ UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
|
|
|
|
+ updateWrapper.lambda().set(MarkUserQuestion::getEnable, false)
|
|
|
|
+ .eq(MarkUserQuestion::getUserId, markUserQuestion.getUserId())
|
|
|
|
+ .in(MarkUserQuestion::getQuestionId, ids);
|
|
|
|
+ this.update(updateWrapper);
|
|
|
|
+ } else {
|
|
|
|
+ this.removeByExamIdAndPaperNumberAndQuestionIdsAndUserId(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), ids, markUserQuestion.getUserId());
|
|
|
|
+ }
|
|
|
|
|
|
markPaperService.updateGroupStatus(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber());
|
|
markPaperService.updateGroupStatus(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber());
|
|
}
|
|
}
|
|
@@ -575,4 +591,14 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
.in(MarkUserQuestion::getQuestionId, questionIds);
|
|
.in(MarkUserQuestion::getQuestionId, questionIds);
|
|
this.update(updateWrapper);
|
|
this.update(updateWrapper);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void removeByExamIdAndPaperNumberAndQuestionIdsAndUserId(Long examId, String paperNumber, List<Long> questionIds, Long userId) {
|
|
|
|
+ UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
|
|
|
|
+ updateWrapper.lambda().eq(MarkUserQuestion::getExamId, examId)
|
|
|
|
+ .eq(MarkUserQuestion::getPaperNumber, paperNumber)
|
|
|
|
+ .in(MarkUserQuestion::getQuestionId, questionIds)
|
|
|
|
+ .eq(MarkUserQuestion::getUserId, userId);
|
|
|
|
+ this.remove(updateWrapper);
|
|
|
|
+ }
|
|
}
|
|
}
|