Browse Source

feat: 增加与题库bok系统对接的服务

181250114 4 years ago
parent
commit
22d5fbac42

+ 34 - 0
src/main/java/com/seecoder/dataanalysis/logic/question/Impl/QuestionServiceImpl.java

@@ -0,0 +1,34 @@
+package com.seecoder.dataanalysis.logic.question.Impl;
+
+import cn.seecoder.bok.client.SeecoderBokClient;
+import cn.seecoder.bok.common.vo.QuestionVO;
+import com.seecoder.dataanalysis.data.entity.eval.Question;
+import com.seecoder.dataanalysis.logic.question.QuestionService;
+import com.seecoder.dataanalysis.vo.question.CompleteQuestionVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class QuestionServiceImpl implements QuestionService {
+
+    @Override
+    public Question getQuestionById(String questionId){
+        SeecoderBokClient seecoderBokClient = new SeecoderBokClient("http://bok.seec.seecoder.cn");
+        Optional<QuestionVO> response = seecoderBokClient.getQuestionById(questionId);
+        if(!response.isPresent()){
+            System.out.println("不存在该题目");
+        }
+        System.out.println(response.get());
+        System.out.println();
+        CompleteQuestionVO res = new CompleteQuestionVO();
+        response.ifPresent(questionVO -> BeanUtils.copyProperties(questionVO, res));
+        System.out.println(res);
+
+        Question question = new Question();
+        question.setQuestionId("123");
+        return question;
+    }
+}

+ 92 - 0
src/main/java/com/seecoder/dataanalysis/vo/question/CompleteQuestionVO.java

@@ -0,0 +1,92 @@
+package com.seecoder.dataanalysis.vo.question;
+
+import cn.seecoder.bok.common.QuestionType;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.Instant;
+import java.util.List;
+import java.util.Map;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CompleteQuestionVO implements Serializable {
+    private String id;
+
+    /**
+     * 题干
+     */
+    private String stem;
+
+    /**
+     * 题目类型
+     */
+    private QuestionType type;
+
+    /**
+     * 选项
+     */
+    private Map<String, String> options;
+
+    /**
+     * 填空题 __1__ __2__
+     */
+//    private Map<String, String> blanks;
+
+    /**
+     * 答案
+     */
+    private String answer;
+
+    /**
+     * 难度 暂时用于代替Skill的作用
+     */
+    private Integer weight;
+
+    /**
+     * 关键点
+     */
+    private String keyPoints;
+
+    /**
+     * 分析
+     */
+    private String analysis;
+
+    /**
+     * 标签
+     */
+    private List<String> tags;
+
+    /**
+     * 知识点 id
+     */
+    private List<String> knowledgeId;
+
+    /**
+     * 输入输出的测试用例
+     */
+    private Map<String, String> inputOutputMapping;
+
+
+    /**
+     * 代码题目时间限制
+     */
+    private Integer millisecondLimit;
+
+    /**
+     * 代码空间限制
+     */
+    private Integer memoryLimit;
+
+
+    private Instant createdTime;
+
+    private Instant lastModifiedTime;
+
+}

+ 23 - 0
src/test/java/com/seecoder/dataanalysis/question/impl/QuestionServiceImplTest.java

@@ -0,0 +1,23 @@
+package com.seecoder.dataanalysis.question.impl;
+
+import cn.seecoder.bok.client.SeecoderBokClient;
+import cn.seecoder.bok.common.vo.QuestionVO;
+//import com.seecoder.dataanalysis.logic.question.QuestionService;
+import com.seecoder.dataanalysis.logic.question.QuestionService;
+import com.seecoder.dataanalysis.vo.question.CompleteQuestionVO;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.Optional;
+
+@SpringBootTest
+public class QuestionServiceImplTest {
+    @Autowired
+    private QuestionService questionService;
+
+    @Test
+    void testGetQuestionId(){
+        questionService.getQuestionById("43604f6f-f829-4aaf-ab97-47b99c20ede0");
+    }
+}