Przeglądaj źródła

由习题id获取习题的接口

yyy2015 7 lat temu
rodzic
commit
085d7bbd76

+ 7 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ExamController.java

@@ -352,6 +352,13 @@ public class ExamController extends BaseSearchController {
         return examLogic.getPythonCommunityExercise(id,userId);
     }
 
+    @RequestMapping(value = UrlConstants.API + "pythonCommunity/exercise")
+    public ExercisePythonCommunityVO getPythonCommunityExerciseCase(@RequestParam("examId")long
+            examId, @RequestParam("caseId")long caseId){
+        Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
+        return examLogic.getPythonCommunityExerciseCase(examId,caseId,userId);
+    }
+
 
 
 }

+ 41 - 7
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ExerciseCollectionPythonCommunityVOWrapper.java

@@ -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.ResultMapObj;
 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.google.gson.Gson;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import javax.persistence.criteria.CriteriaBuilder.Case;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -55,14 +57,8 @@ public class ExerciseCollectionPythonCommunityVOWrapper {
         }
 
         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(userStarCaseService.isStar(userId,caseId)){
-                    exercise.setStar(true);
-                }
                 exercise.setScore(result == null?0:result.getResults().get(caseId+"").getMaxScore());
             }
             exerciseList.add(exercise);
@@ -71,4 +67,42 @@ public class ExerciseCollectionPythonCommunityVOWrapper {
 
         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;
+    }
 }

+ 1 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/ExamLogic.java

@@ -67,4 +67,5 @@ public interface ExamLogic {
 
     ExerciseCollectionPythonCommunityVO getPythonCommunityExercise(long id, Long userId);
 
+    ExercisePythonCommunityVO getPythonCommunityExerciseCase(long examId, long caseId, Long userId);
 }

+ 6 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ExamLogicImpl.java

@@ -398,6 +398,12 @@ public class ExamLogicImpl extends BaseLogic implements ExamLogic {
                 .findExamById(examId),userId);
     }
 
+    @Override
+    public ExercisePythonCommunityVO getPythonCommunityExerciseCase(long examId, long caseId, Long
+            userId) {
+        return exerciseCollectionPythonCommunityVOWrapper.wrapCase(examId,caseId,userId);
+    }
+
 
     @Override
     public void exportExcelByOwner(HttpServletResponse response, Long examId) throws Exception {