|
@@ -12,11 +12,13 @@ import cn.iselab.mooctest.site.web.data.ExerciseCollectionPythonCommunityVO;
|
|
import cn.iselab.mooctest.site.web.data.ExercisePythonCommunityVO;
|
|
import cn.iselab.mooctest.site.web.data.ExercisePythonCommunityVO;
|
|
import cn.iselab.mooctest.site.web.data.ResultMapObj;
|
|
import cn.iselab.mooctest.site.web.data.ResultMapObj;
|
|
import cn.iselab.mooctest.site.web.data.SubmitRecordResult;
|
|
import cn.iselab.mooctest.site.web.data.SubmitRecordResult;
|
|
|
|
+import cn.iselab.mooctest.site.web.exception.HttpBadRequestException;
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import javax.persistence.criteria.CriteriaBuilder.Case;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
@@ -55,14 +57,8 @@ public class ExerciseCollectionPythonCommunityVOWrapper {
|
|
}
|
|
}
|
|
|
|
|
|
for(long caseId: caseIds){
|
|
for(long caseId: caseIds){
|
|
- CaseExtends caseExtends = caseService.getCaseById(caseId);
|
|
|
|
- ExercisePythonCommunityVO exercise = new ExercisePythonCommunityVO(caseId,caseExtends
|
|
|
|
- .getName(),
|
|
|
|
- caseExtends.getDescription(),"");
|
|
|
|
|
|
+ ExercisePythonCommunityVO exercise = wrapCaseWithoutScore(caseId,userId);
|
|
if(userId != null){
|
|
if(userId != null){
|
|
- if(userStarCaseService.isStar(userId,caseId)){
|
|
|
|
- exercise.setStar(true);
|
|
|
|
- }
|
|
|
|
exercise.setScore(result == null?0:result.getResults().get(caseId+"").getMaxScore());
|
|
exercise.setScore(result == null?0:result.getResults().get(caseId+"").getMaxScore());
|
|
}
|
|
}
|
|
exerciseList.add(exercise);
|
|
exerciseList.add(exercise);
|
|
@@ -71,4 +67,42 @@ public class ExerciseCollectionPythonCommunityVOWrapper {
|
|
|
|
|
|
return exerciseCollection;
|
|
return exerciseCollection;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public ExercisePythonCommunityVO wrapCase(long examId,long caseId, Long userId){
|
|
|
|
+ List<Long> caseIds = exam2CaseService.getCaseIdsByExamId(examId);
|
|
|
|
+ if(!caseIds.contains(caseId)){
|
|
|
|
+ throw new HttpBadRequestException("the exam has no case "+caseId);
|
|
|
|
+ }
|
|
|
|
+ ExercisePythonCommunityVO exercise = wrapCaseWithoutScore(caseId,userId);
|
|
|
|
+ if(userId != null){
|
|
|
|
+ SubmitRecord submitRecord = null;
|
|
|
|
+ SubmitRecordResult result = null;
|
|
|
|
+ submitRecord = submitRecordService.getAssignedTask(examId,userId);
|
|
|
|
+ if(submitRecord != null){
|
|
|
|
+ result = new Gson().fromJson(submitRecord.getResult(),SubmitRecordResult.class);
|
|
|
|
+ }
|
|
|
|
+ exercise.setScore(result == null?0:result.getResults().get(caseId+"")
|
|
|
|
+ .getMaxScore());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return exercise;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private ExercisePythonCommunityVO wrapCaseWithoutScore(long caseId, Long userId){
|
|
|
|
+ CaseExtends caseExtends = caseService.getCaseExtendsById(caseId);
|
|
|
|
+ if(caseExtends == null){
|
|
|
|
+ return new ExercisePythonCommunityVO();
|
|
|
|
+ }
|
|
|
|
+ ExercisePythonCommunityVO exercise = new ExercisePythonCommunityVO(caseId,caseExtends
|
|
|
|
+ .getName(),
|
|
|
|
+ caseExtends.getDescription(),"");
|
|
|
|
+
|
|
|
|
+ if(userId != null){
|
|
|
|
+ if(userStarCaseService.isStar(userId,caseId)){
|
|
|
|
+ exercise.setStar(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return exercise;
|
|
|
|
+ }
|
|
}
|
|
}
|