From 10dfef66b7e8dc213123233ce35056a4ed5e4cba Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期一, 11 十一月 2024 15:33:32 +0800
Subject: [PATCH] 错题本分页

---
 src/main/java/com/ycl/jxkg/service/WrongService.java                    |    7 ++-
 src/main/resources/mapper/ExamPaperScoreMapper.xml                      |    3 +
 src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongResponseVO.java |   18 +++++++++
 src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongPageVo.java     |   18 +++++++++
 src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongRequestVo.java  |    5 ++
 src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java             |    4 ++
 src/main/java/com/ycl/jxkg/controller/student/WrongController.java      |    3 +
 src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java           |   47 +++++++++++++++++++----
 8 files changed, 92 insertions(+), 13 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
index ed731e6..be66077 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/WrongController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/WrongController.java
@@ -4,6 +4,7 @@
 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.domain.vo.student.wrong.WrongResponseVO;
 import com.ycl.jxkg.service.WrongService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -20,7 +21,7 @@
     private final WrongService wrongService;
 
     @PostMapping("/page")
-    public Result<List<DoQuestionVO>> page(@RequestBody WrongRequestVo model) {
+    public Result<WrongResponseVO> 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/student/wrong/WrongPageVo.java b/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongPageVo.java
new file mode 100644
index 0000000..597ebf2
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongPageVo.java
@@ -0,0 +1,18 @@
+package com.ycl.jxkg.domain.vo.student.wrong;
+
+import com.ycl.jxkg.domain.vo.DoQuestionVO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WrongPageVo {
+    private List<DoQuestionVO> list;
+    private int pageIndex;
+    private int pageSize;
+    private long total;
+}
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
index 4b953ed..c3c5755 100644
--- 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
@@ -13,5 +13,8 @@
 public class WrongRequestVo extends BasePage {
     private Integer userId;
     private String title;
-    private List<Integer> questionType;
+    private Integer questionType;
+    private String examName;
+    private Integer pageIndex;
+    private Integer pageSize;
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongResponseVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongResponseVO.java
new file mode 100644
index 0000000..dfb1017
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/student/wrong/WrongResponseVO.java
@@ -0,0 +1,18 @@
+package com.ycl.jxkg.domain.vo.student.wrong;
+
+import com.ycl.jxkg.domain.vo.DoQuestionVO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WrongResponseVO {
+    private List<DoQuestionVO> list;
+    private Integer pageIndex;
+    private Integer pageSize;
+    private Integer total;
+}
diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java
index 7c84af3..a07832c 100644
--- a/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/ExamPaperScoreMapper.java
@@ -8,6 +8,8 @@
 import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO;
 import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO;
 import com.ycl.jxkg.domain.vo.student.exampaper.UserAnswerPageResponseVO;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongRequestVo;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongResponseVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -34,4 +36,6 @@
     List<UserAnswerPageResponseVO> pageUser(UserAnswerPageRequestVO model);
 
     List<ExamPaperScore> selectByUserId(Integer userId);
+
+    List<WrongResponseVO> selectWrong(WrongRequestVo wrongRequestVo);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/WrongService.java b/src/main/java/com/ycl/jxkg/service/WrongService.java
index 74d4027..d9c79f8 100644
--- a/src/main/java/com/ycl/jxkg/service/WrongService.java
+++ b/src/main/java/com/ycl/jxkg/service/WrongService.java
@@ -1,13 +1,16 @@
 package com.ycl.jxkg.service;
 
 import com.ycl.jxkg.domain.vo.DoQuestionVO;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongPageVo;
 import com.ycl.jxkg.domain.vo.student.wrong.WrongRequestVo;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongResponseVO;
 
 import java.util.List;
 
 public interface WrongService  {
     /**
-     * 鍒嗛〉鏉′欢鏌ヨ閿欓
+     * 鏉′欢鏌ヨ閿欓
      * */
-    List<DoQuestionVO> page(WrongRequestVo wrongRequestVo);
+    WrongResponseVO 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
index aaa7bb6..cedbbb1 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java
@@ -1,10 +1,13 @@
 package com.ycl.jxkg.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.WrongPageVo;
 import com.ycl.jxkg.domain.vo.student.wrong.WrongRequestVo;
+import com.ycl.jxkg.domain.vo.student.wrong.WrongResponseVO;
 import com.ycl.jxkg.mapper.ExamPaperScoreMapper;
 import com.ycl.jxkg.mapper.QuestionMapper;
 import com.ycl.jxkg.service.WrongService;
@@ -30,17 +33,13 @@
 
 
     /**
-     * 鍒嗛〉鏉′欢鏌ヨ閿欓
+     * 鏉′欢鏌ヨ閿欓
      * */
     @Override
-    public List<DoQuestionVO> page(WrongRequestVo wrongRequestVo) {
-        // 鏌ヨ璇ョ敤鎴风殑鎵�鏈夐潪闅忔満璇曞嵎鍙婅瘯鍗烽敊棰�
-//        List<ExamPaperScore> examPaperScores = examPaperScoreMapper
-//                .selectList(new LambdaQueryChainWrapper<>(ExamPaperScore.class)
-//                        .eq(ExamPaperScore::getUserId,wrongRequestVo.getUserId()));
+    public WrongResponseVO page(WrongRequestVo wrongRequestVo) {
+        WrongResponseVO wrongResponseVO = new WrongResponseVO();
         // 鏌ヨ璇ョ敤鎴风殑鎵�鏈夎�冭瘯
         List<ExamPaperScore> examPaperScores = examPaperScoreMapper.selectByUserId(wrongRequestVo.getUserId());
-        List<PaperFixQuestionVO> paperList = new ArrayList<>();
         List<DoQuestionVO> questions = new ArrayList<>();
         // 閬嶅巻鎵�鏈夎�冭瘯鑾峰緱鑰冭瘯璇︽儏
         examPaperScores.stream().forEach(examPaperScore -> {
@@ -52,7 +51,8 @@
                             .filter(doQuestionVO -> !doQuestionVO.getRight())
                             .map(doQuestionVO -> {
                                 // 鏍规嵁id鏌ヨ棰樺共
-                                Question question = questionMapper.selectById(doQuestionVO.getId());
+                                Question question = questionMapper.selectOne(new LambdaQueryWrapper<>(Question.class).eq(Question::getId, doQuestionVO.getId()));
+//                                Question question = questionMapper.selectById(doQuestionVO.getId());
                                 doQuestionVO.setExamId(examPaperScore.getExamId());
                                 doQuestionVO.setExamName(examPaperScore.getExamName());
                                 doQuestionVO.setTitle(question.getTitle());
@@ -65,6 +65,35 @@
                 e.printStackTrace();
             }
         });
-        return questions;
+        // 鏉′欢鏌ヨ
+        // 瀵归泦鍚堜腑鐨勯鐩繘琛屾ā绯婃煡璇㈣繃婊�
+        List<DoQuestionVO> doQuestionVOS = questions.stream()
+                // 鏍囬涓嶄负绌烘垨绌哄瓧绗︿覆锛屾ā绯婃煡璇�
+                .filter(question -> {
+                    if (wrongRequestVo.getTitle() == null || wrongRequestVo.getTitle().trim().equals("")) {
+                        return true;
+                    }
+                    return question.getTitle().toLowerCase().contains(wrongRequestVo.getTitle().toLowerCase());
+                })
+                .filter(question -> {
+                    if (wrongRequestVo.getQuestionType() == null) {
+                        return true;
+                    }
+                    return question.getQuestionType().equals(wrongRequestVo.getQuestionType());
+                })
+                .filter(question -> {
+                    if (wrongRequestVo.getExamName() == null || wrongRequestVo.getExamName().trim().equals("")) {
+                        return true;
+                    }
+                    return question.getExamName().toLowerCase().contains(wrongRequestVo.getExamName().toLowerCase());
+                })
+                .collect(Collectors.toList());
+        // 鍒嗛〉
+        List<DoQuestionVO> list = doQuestionVOS.stream().skip((wrongRequestVo.getPageIndex() - 1) * wrongRequestVo.getPageSize()).collect(Collectors.toList());
+        wrongResponseVO.setList(list);
+        wrongResponseVO.setTotal(doQuestionVOS.size());
+        wrongResponseVO.setPageSize(wrongRequestVo.getPageSize());
+        wrongResponseVO.setPageIndex(wrongRequestVo.getPageIndex());
+        return wrongResponseVO;
     }
 }
diff --git a/src/main/resources/mapper/ExamPaperScoreMapper.xml b/src/main/resources/mapper/ExamPaperScoreMapper.xml
index aa5f665..0c5d29f 100644
--- a/src/main/resources/mapper/ExamPaperScoreMapper.xml
+++ b/src/main/resources/mapper/ExamPaperScoreMapper.xml
@@ -176,4 +176,7 @@
         from t_exam_paper_score
         where user_id = #{userId}
     </select>
+    <select id="selectWrong" resultType="com.ycl.jxkg.domain.vo.student.wrong.WrongResponseVO">
+        
+    </select>
 </mapper>

--
Gitblit v1.8.0