Browse Source

feat: 增加题目掌握程度表

weijin 4 years ago
parent
commit
760f703d47

+ 16 - 0
seecoder-bok-common/src/main/java/cn/seecoder/bok/common/GraspDegree.java

@@ -0,0 +1,16 @@
+package cn.seecoder.bok.common;
+
+/**
+ * @author Weijin
+ * @Date 2022/1/21
+ * @Package SEEC-BOK
+ */
+
+public enum GraspDegree {
+    CREATE,
+    EVALUATE,
+    ANALYZE,
+    APPLY,
+    UNDERSTAND,
+    REMEMBER
+}

+ 59 - 0
seecoder-bok-common/src/main/java/cn/seecoder/bok/common/vo/GraspVO.java

@@ -0,0 +1,59 @@
+package cn.seecoder.bok.common.vo;
+
+import cn.seecoder.bok.common.GraspDegree;
+
+/**
+ * @author Weijin
+ * @Date 2022/1/21
+ * @Package SEEC-BOK
+ */
+
+public class GraspVO {
+    private Integer id;
+
+    private Integer questionId;
+
+    private String knowledge;
+
+    private GraspDegree grasp;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getQuestionId() {
+        return questionId;
+    }
+
+    public void setQuestionId(Integer questionId) {
+        this.questionId = questionId;
+    }
+
+    public String getKnowledge() {
+        return knowledge;
+    }
+
+    public void setKnowledge(String knowledge) {
+        this.knowledge = knowledge;
+    }
+
+    public GraspDegree getGrasp() {
+        return grasp;
+    }
+
+    public void setGrasp(GraspDegree grasp) {
+        this.grasp = grasp;
+    }
+
+    public String toString() {
+        return "GraspVO{" +
+                "questionId=" + questionId +
+                ", knowledge='" + knowledge + '\'' +
+                ", grasp='" + grasp + '\'' +
+                '}';
+    }
+}

+ 75 - 0
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/domain/Grasp.java

@@ -0,0 +1,75 @@
+package cn.seecoder.seecoderbokserver.domain;
+
+import cn.seecoder.bok.common.GraspDegree;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * @author Weijin
+ * @Date 2022/1/21
+ * @Package SEEC-BOK
+ */
+
+@Entity
+@Table(name = "grasp")
+public class Grasp {
+    @Id
+    @Column(name = "id")
+    private Integer id;
+
+    @Column(name = "questionId")
+    private Integer questionId;
+
+    @Column(name = "knowledge")
+    private String knowledge;
+
+    @Column(name = "grasp")
+    private GraspDegree grasp;
+
+    public Grasp() {
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getQuestionId() {
+        return questionId;
+    }
+
+    public void setQuestionId(Integer questionId) {
+        this.questionId = questionId;
+    }
+
+    public String getKnowledge() {
+        return knowledge;
+    }
+
+    public void setKnowledge(String knowledge) {
+        this.knowledge = knowledge;
+    }
+
+    public GraspDegree getGrasp() {
+        return grasp;
+    }
+
+    public void setGrasp(GraspDegree grasp) {
+        this.grasp = grasp;
+    }
+
+    @Override
+    public String toString() {
+        return "Grasp{" +
+                "questionId=" + questionId +
+                ", knowledge=" + knowledge +
+                ", grasp='" + grasp + '\'' +
+                '}';
+    }
+}

+ 25 - 0
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/mapper/GraspConvertor.java

@@ -0,0 +1,25 @@
+package cn.seecoder.seecoderbokserver.mapper;
+
+import cn.seecoder.bok.common.vo.GraspVO;
+import cn.seecoder.seecoderbokserver.domain.Grasp;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * @author Weijin
+ * @Date 2022/1/21
+ * @Package SEEC-BOK
+ */
+
+public class GraspConvertor {
+    public static Grasp convertToEntity(GraspVO graspVO) {
+        Grasp grasp = new Grasp();
+        BeanUtils.copyProperties(graspVO, grasp);
+        return grasp;
+    }
+
+    public static GraspVO convertToVO(Grasp grasp) {
+        GraspVO graspVO = new GraspVO();
+        BeanUtils.copyProperties(grasp, graspVO);
+        return graspVO;
+    }
+}

+ 34 - 0
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/repository/GraspRepository.java

@@ -0,0 +1,34 @@
+package cn.seecoder.seecoderbokserver.repository;
+
+import cn.seecoder.seecoderbokserver.domain.Grasp;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import java.util.List;
+
+/**
+ * @author Weijin
+ * @Date 2022/1/21
+ * @Package SEEC-BOK
+ */
+
+public interface GraspRepository extends JpaRepository<Grasp, Integer>, JpaSpecificationExecutor<Grasp> {
+
+    /**
+     * 获得某个问题所有的知识点所需的掌握程度
+     *
+     * @param questionId   问题id
+     * @return 掌握程度数组
+     */
+    List<Grasp> findAllByQuestionId(Integer questionId);
+
+    /**
+     * 获得某个问题所有的知识点所需的掌握程度
+     *
+     * @param questionId   问题id
+     * @return 掌握程度数组
+     */
+    Grasp findByQuestionIdAndKnowledge(Integer questionId, String knowledge);
+}

+ 37 - 0
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/service/GraspService.java

@@ -0,0 +1,37 @@
+package cn.seecoder.seecoderbokserver.service;
+
+import cn.seecoder.bok.common.vo.GraspVO;
+import cn.seecoder.seecoderbokserver.domain.Grasp;
+import cn.seecoder.seecoderbokserver.mapper.GraspConvertor;
+import cn.seecoder.seecoderbokserver.repository.GraspRepository;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author Weijin
+ * @Date 2022/1/21
+ * @Package SEEC-BOK
+ */
+@Service
+public class GraspService {
+    private final GraspRepository graspRepository;
+
+    public GraspService(GraspRepository graspRepository) {
+        this.graspRepository = graspRepository;
+    }
+
+    public List<GraspVO> getAll() {
+        return graspRepository.findAll().stream().map(GraspConvertor::convertToVO).collect(Collectors.toList());
+    }
+
+    public List<GraspVO> getAllByQuestion(Integer questionId) {
+        return graspRepository.findAllByQuestionId(questionId).stream().map(GraspConvertor::convertToVO).collect(Collectors.toList());
+    }
+
+    public GraspVO save(GraspVO graspVO) {
+        Grasp grasp = GraspConvertor.convertToEntity(graspVO);
+        return GraspConvertor.convertToVO(graspRepository.save(grasp));
+    }
+}

+ 21 - 4
seecoder-bok-server/src/main/java/cn/seecoder/seecoderbokserver/web/rest/QuestionController.java

@@ -1,16 +1,17 @@
 package cn.seecoder.seecoderbokserver.web.rest;
 
-import apple.laf.JRSUIConstants;
 import cn.seecoder.bok.common.QuestionState;
 import cn.seecoder.bok.common.QuestionType;
 import cn.seecoder.bok.common.UserRole;
 import cn.seecoder.bok.common.api.SeecoderBokQuestionApi;
 import cn.seecoder.bok.common.api.SeecoderBokQuestionQueryApi;
+import cn.seecoder.bok.common.vo.GraspVO;
 import cn.seecoder.bok.common.vo.QuestionVO;
 import cn.seecoder.seecoderbokserver.aspect.auth.Authorized;
 import cn.seecoder.seecoderbokserver.domain.Question;
 import cn.seecoder.seecoderbokserver.mapper.QuestionConvertor;
 import cn.seecoder.seecoderbokserver.mapper.QuestionMapper;
+import cn.seecoder.seecoderbokserver.service.GraspService;
 import cn.seecoder.seecoderbokserver.service.QuestionService;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -23,6 +24,7 @@ import javax.validation.constraints.NotNull;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+import java.util.stream.Collector;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
@@ -35,10 +37,12 @@ public class QuestionController implements SeecoderBokQuestionApi, SeecoderBokQu
 
     private final QuestionService questionService;
     private final QuestionMapper questionMapper;
+    private final GraspService graspService;
 
-    public QuestionController(QuestionService questionService, QuestionMapper questionMapper) {
+    public QuestionController(QuestionService questionService, QuestionMapper questionMapper, GraspService graspService) {
         this.questionService = questionService;
         this.questionMapper = questionMapper;
+        this.graspService = graspService;
     }
 
     @Override
@@ -138,10 +142,23 @@ public class QuestionController implements SeecoderBokQuestionApi, SeecoderBokQu
     public Response findUncheckedQuestion(
             @RequestParam(name = "state") QuestionState questionState,
             @RequestParam(name = "offset", required = false) int offset,
-            @RequestParam(name = "pageSize", required = false) int pageSize
-            ){
+            @RequestParam(name = "pageSize", required = false) int pageSize) {
         Pageable pageable = PageRequest.of(offset, pageSize);
         return Response.buildSuccess(questionService.findUncheckedQuestion(questionState, pageable));
     }
 
+    @GetMapping("/grasp")
+    public Response getAllGrasp() {
+        return Response.buildSuccess(graspService.getAll());
+    }
+
+    @GetMapping("/grasp/{question}")
+    public Response getAllGraspByQuestion(@PathVariable Integer question) {
+        return Response.buildSuccess(graspService.getAllByQuestion(question));
+    }
+
+    @PostMapping("/grasp")
+    public Response updateGrasp(@RequestBody GraspVO graspVO) {
+        return Response.buildSuccess(graspService.save(graspVO));
+    }
 }