Browse Source

feat: 进一步添加了eval考试相关的接口

yhd12345 3 years ago
parent
commit
40a869a968

+ 5 - 0
seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/QuestionScoreMapVO.java

@@ -3,5 +3,10 @@ package cn.seecoder.seecoderportalcommon.vo;
 import java.util.Map;
 
 public class QuestionScoreMapVO {
+    public Map<String, Double> getQuestionScoreMap() {
+        return questionScoreMap;
+    }
+
     Map<String, Double> questionScoreMap;
+
 }

+ 10 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ExamService.java

@@ -93,4 +93,14 @@ public interface ExamService {
     JSONObject getQuestionList(String stem, List<String> tags, String knowledgeName, int pageSize, int pageNum);
 
     void updateQuestionsOfExam(Integer examId, QuestionScoreMapVO questionScoreMapVO);
+
+    JSONObject getExamById(Integer examId);
+
+    JSONObject getUsersByExamId(Integer examId);
+
+    JSONObject getReportByExamId(Integer examId);
+
+    void takeExamWithoutInviteCode(Integer examId);
+
+    void takeExamWithInviteCode(Integer examId, String inviteCode);
 }

+ 26 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ExamServiceImpl.java

@@ -176,6 +176,32 @@ public class ExamServiceImpl implements ExamService {
         evalService.updateQuestionsOfExam(examId,questionScoreMapVO);
     }
 
+    @Override
+    public JSONObject getExamById(Integer examId) {
+        return evalService.getExamById(examId);
+    }
+
+    @Override
+    public JSONObject getUsersByExamId(Integer examId) {
+        return evalService.getUsersByExamId(examId);
+    }
+
+    @Override
+    public JSONObject getReportByExamId(Integer examId) {
+        return evalService.getReportByExamId(examId);
+    }
+
+    @Override
+    public void takeExamWithoutInviteCode(Integer examId) {
+        evalService.takeExamWithoutInviteCode(examId);
+    }
+
+    @Override
+    public void takeExamWithInviteCode(Integer examId, String inviteCode) {
+        evalService.takeExamWithInviteCode(examId,inviteCode);
+    }
+
+
     @Override
     public JSONObject getResultByExamId(int examId) {
         return coderService.getResultByExamId(examId);

+ 65 - 2
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/subsystem/EvalService.java

@@ -103,8 +103,9 @@ public class EvalService implements SubsystemService {
 
     public JSONObject createEvalExam(CreateEvalExamVO createEvalExamVO) {
         String uri = "https://eval-server.seec.seecoder.cn/api/exam";
-//        String uri = "http://localhost:8081/api/exam";
+//        String uri = "https://localhost:8081/api/exam";
         String token = httpService.getToken();
+        System.out.println(token);
         JSONObject requestBody = new JSONObject();
         requestBody.put("examName",createEvalExamVO.getExamName());
         requestBody.put("skills",createEvalExamVO.getSkills());
@@ -116,6 +117,7 @@ public class EvalService implements SubsystemService {
         requestBody.put("isPublic",createEvalExamVO.getIsPublic());
         requestBody.put("position",createEvalExamVO.getPosition());
         requestBody.put("courseId",createEvalExamVO.getCourseId());
+//        requestBody.put("courseId",1);//测试用
         System.out.println(requestBody);
         String result = null;
         try {
@@ -220,7 +222,68 @@ public class EvalService implements SubsystemService {
         String uri = "https://eval-server.seec.seecoder.cn/api/exam/" + examId + "/questions/";
         String token = httpService.getToken();
         JSONObject requestBody = new JSONObject();
-        requestBody.put("questionScoreMap",questionScoreMapVO);
+        requestBody.put("questionScoreMap",questionScoreMapVO.getQuestionScoreMap());
+        try {
+            httpService.sendPut(uri, requestBody,token);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public JSONObject getExamById(Integer examId) {
+        String uri = "https://eval-server.seec.seecoder.cn/api/exam/" +examId;
+        String token = httpService.getToken();
+        String result = null;
+        try {
+            result = httpService.sendGet(uri, new ArrayList<>(), token);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JSONObject.parseObject(result);
+    }
+
+    public JSONObject getUsersByExamId(Integer examId) {
+        String uri = "https://eval-server.seec.seecoder.cn/api/user/" +  examId;
+        String token = httpService.getToken();
+        String result = null;
+        try {
+            result = httpService.sendGet(uri, new ArrayList<>(), token);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JSONObject.parseObject(result);
+    }
+
+    public JSONObject getReportByExamId(Integer examId) {
+        String uri = "https://eval-server.seec.seecoder.cn/api/report/all?examId=" +  examId;
+        String token = httpService.getToken();
+        String result = null;
+        try {
+            result = httpService.sendGet(uri, new ArrayList<>(), token);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JSONObject.parseObject(result);
+    }
+
+    public void takeExamWithInviteCode(Integer examId, String inviteCode) {
+        String uri = "https://eval-server.seec.seecoder.cn/api/exam/invite/code" + "?inviteCode=" + inviteCode + "&examId=" + examId;
+        String token = httpService.getToken();
+        JSONObject requestBody = new JSONObject();
+        requestBody.put("inviteCode",inviteCode);
+        requestBody.put("examId",examId);
+        try {
+            httpService.sendPut(uri, requestBody,token);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void takeExamWithoutInviteCode(Integer examId) {
+        String uri = "https://eval-server.seec.seecoder.cn/api/exam/invite/code" + "?examId=" + examId;
+        String token = httpService.getToken();
+        JSONObject requestBody = new JSONObject();
+        requestBody.put("examId",examId);
         try {
             httpService.sendPut(uri, requestBody,token);
         } catch (Exception e) {

+ 37 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ExamController.java

@@ -317,11 +317,47 @@ public class ExamController {
 
 
     @ApiOperation("为考试更新题目及对应分值")
-    @PutMapping("/eval/exam/{examId}/questions/")
+    @PutMapping("/eval/exam/{examId}/setQuestions")
     public OkResponse<JSONObject> updateQuestionsOfExam(@PathVariable Integer examId,
                                           @RequestBody QuestionScoreMapVO questionScoreMapVO) {
+        System.out.println(questionScoreMapVO.getQuestionScoreMap());
         examService.updateQuestionsOfExam(examId, questionScoreMapVO);
         return OkResponse.of(null);
     }
 
+    @ApiOperation("根据考试id获得对应考试相关信息")
+    @GetMapping("/eval/exam/{examId}")
+    public OkResponse<JSONObject> getExamById(@PathVariable Integer examId) {
+        return OkResponse.of(examService.getExamById(examId));
+    }
+
+    @ApiOperation("获得报名某次考试的所有学生")
+    @GetMapping("/eval/exam/user/{examId}")
+    public OkResponse<JSONObject> getUsersByExamId(@PathVariable Integer examId) {
+        return OkResponse.of(examService.getUsersByExamId(examId));
+    }
+
+    @ApiOperation("获得某次考试的成绩报告(教师视角)")
+    @GetMapping("/eval/exam/report/all")
+    public OkResponse<JSONObject> getReportByExamId(@RequestParam(value = "examId") Integer examId) {
+        return OkResponse.of(examService.getReportByExamId(examId));
+    }
+
+    @ApiOperation("通过邀请码加入考试")
+    @PutMapping("/eval/exam/invite/withCode")
+    public OkResponse<JSONObject> takeExamWithCode(
+                             @RequestParam(value = "inviteCode") String inviteCode,
+                             @RequestParam(value = "examId") Integer examId
+    ) {
+        examService.takeExamWithInviteCode(examId, inviteCode);
+        return OkResponse.of(null);
+    }
+
+    @ApiOperation("直接加入考试")
+    @PutMapping("/eval/exam/invite/withoutCode")
+    public OkResponse<JSONObject> takeExamWithoutCode(@RequestParam(value = "examId") Integer examId) {
+        examService.takeExamWithoutInviteCode(examId);
+        return OkResponse.of(null);
+    }
+
 }