From 4adad521e6464025402639d0c2f7602610d15a67 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期四, 07 十一月 2024 09:21:43 +0800
Subject: [PATCH] 错题展示

---
 src/main/java/com/ycl/jxkg/service/WrongService.java                   |   13 ++++
 src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java                 |    5 +
 src/main/resources/mapper/ExamPaperScoreMapper.xml                     |    6 ++
 src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongRequestVo.java |   17 +++++
 src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java            |    2 
 src/main/java/com/ycl/jxkg/controller/student/WrongController.java     |   27 +++++++++
 src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java          |   70 +++++++++++++++++++++++
 7 files changed, 140 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/controller/student/WrongController.java b/src/main/java/com/ycl/jxkg/controller/student/WrongController.java
new file mode 100644
index 0000000..ed731e6
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/controller/student/WrongController.java
@@ -0,0 +1,27 @@
+package com.ycl.jxkg.controller.student;
+
+import com.ycl.jxkg.base.BaseApiController;
+import com.ycl.jxkg.base.Result;
+import com.ycl.jxkg.domain.vo.DoQuestionVO;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongRequestVo;
+import com.ycl.jxkg.service.WrongService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/student/wrong")
+public class WrongController extends BaseApiController {
+    private final WrongService wrongService;
+
+    @PostMapping("/page")
+    public Result<List<DoQuestionVO>> page(@RequestBody WrongRequestVo model) {
+        model.setUserId(getCurrentUser().getId());
+        return Result.ok(wrongService.page(model));
+    }
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java b/src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java
index 134e69d..d119e5b 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java
@@ -48,4 +48,9 @@
     private Integer itemOrder;
     /** 棰樼洰閫夐」 */
     private List<QuestionItemObject> questionItemList;
+
+    /** 鑰冭瘯id */
+    private Integer examId;
+    /** 鑰冭瘯鍚嶇О */
+    private String examName;
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongRequestVo.java b/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongRequestVo.java
new file mode 100644
index 0000000..4b953ed
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongRequestVo.java
@@ -0,0 +1,17 @@
+package com.ycl.jxkg.domain.vo.student.wrong;
+
+import com.ycl.jxkg.base.BasePage;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WrongRequestVo extends BasePage {
+    private Integer userId;
+    private String title;
+    private List<Integer> questionType;
+}
diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java
index 800f5ad..7c84af3 100644
--- a/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java
@@ -32,4 +32,6 @@
     ExamPaperScore getByExamIdUserId(@Param("examId") Integer examId, @Param("userId") Integer userId);
 
     List<UserAnswerPageResponseVO> pageUser(UserAnswerPageRequestVO model);
+
+    List<ExamPaperScore> selectByUserId(Integer userId);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/WrongService.java b/src/main/java/com/ycl/jxkg/service/WrongService.java
new file mode 100644
index 0000000..74d4027
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/service/WrongService.java
@@ -0,0 +1,13 @@
+package com.ycl.jxkg.service;
+
+import com.ycl.jxkg.domain.vo.DoQuestionVO;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongRequestVo;
+
+import java.util.List;
+
+public interface WrongService  {
+    /**
+     * 鍒嗛〉鏉′欢鏌ヨ閿欓
+     * */
+    List<DoQuestionVO> page(WrongRequestVo wrongRequestVo);
+}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java
new file mode 100644
index 0000000..aaa7bb6
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java
@@ -0,0 +1,70 @@
+package com.ycl.jxkg.service.impl;
+
+import com.ycl.jxkg.domain.entity.ExamPaperScore;
+import com.ycl.jxkg.domain.entity.Question;
+import com.ycl.jxkg.domain.vo.DoQuestionVO;
+import com.ycl.jxkg.domain.vo.PaperFixQuestionVO;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongRequestVo;
+import com.ycl.jxkg.mapper.ExamPaperScoreMapper;
+import com.ycl.jxkg.mapper.QuestionMapper;
+import com.ycl.jxkg.service.WrongService;
+import com.ycl.jxkg.utils.JsonUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class WrongServiceImpl implements WrongService {
+    @Autowired
+    private ExamPaperScoreMapper examPaperScoreMapper;
+    @Autowired
+    private QuestionMapper questionMapper;
+
+
+
+    /**
+     * 鍒嗛〉鏉′欢鏌ヨ閿欓
+     * */
+    @Override
+    public List<DoQuestionVO> page(WrongRequestVo wrongRequestVo) {
+        // 鏌ヨ璇ョ敤鎴风殑鎵�鏈夐潪闅忔満璇曞嵎鍙婅瘯鍗烽敊棰�
+//        List<ExamPaperScore> examPaperScores = examPaperScoreMapper
+//                .selectList(new LambdaQueryChainWrapper<>(ExamPaperScore.class)
+//                        .eq(ExamPaperScore::getUserId,wrongRequestVo.getUserId()));
+        // 鏌ヨ璇ョ敤鎴风殑鎵�鏈夎�冭瘯
+        List<ExamPaperScore> examPaperScores = examPaperScoreMapper.selectByUserId(wrongRequestVo.getUserId());
+        List<PaperFixQuestionVO> paperList = new ArrayList<>();
+        List<DoQuestionVO> questions = new ArrayList<>();
+        // 閬嶅巻鎵�鏈夎�冭瘯鑾峰緱鑰冭瘯璇︽儏
+        examPaperScores.stream().forEach(examPaperScore -> {
+            try{
+                // 瑙f瀽json瀛楃涓�
+                List<PaperFixQuestionVO> paperFixQuestionVOS = JsonUtil.toJsonListObject(examPaperScore.getPaperContent(), PaperFixQuestionVO.class);
+                paperFixQuestionVOS.stream().forEach(paperFixQuestionVO -> {
+                    List<DoQuestionVO> doQuestionVOS = paperFixQuestionVO.getQuestionList().stream()
+                            .filter(doQuestionVO -> !doQuestionVO.getRight())
+                            .map(doQuestionVO -> {
+                                // 鏍规嵁id鏌ヨ棰樺共
+                                Question question = questionMapper.selectById(doQuestionVO.getId());
+                                doQuestionVO.setExamId(examPaperScore.getExamId());
+                                doQuestionVO.setExamName(examPaperScore.getExamName());
+                                doQuestionVO.setTitle(question.getTitle());
+                                return doQuestionVO;
+                            })
+                            .collect(Collectors.toList());
+                    questions.addAll(doQuestionVOS);
+                });
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        });
+        return questions;
+    }
+}
diff --git a/src/main/resources/mapper/ExamPaperScoreMapper.xml b/src/main/resources/mapper/ExamPaperScoreMapper.xml
index a29bf61..1221a14 100644
--- a/src/main/resources/mapper/ExamPaperScoreMapper.xml
+++ b/src/main/resources/mapper/ExamPaperScoreMapper.xml
@@ -167,4 +167,10 @@
         GROUP BY a.id
     </select>
 
+    <select id="selectByUserId" resultType="com.ycl.jxkg.domain.entity.ExamPaperScore">
+        SELECT
+        <include refid="Base_Column_List"/>
+        from t_exam_paper_score
+        where user_id = #{userId}
+    </select>
 </mapper>

--
Gitblit v1.8.0