Преглед изворни кода

开发章节试卷(作业)接口api以及实现

zhaosongshan пре 7 месеци
родитељ
комит
c0d2245bed

+ 12 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-api/src/main/java/vip/xiaonuo/exam/api/CourseChapterPaperApi.java

@@ -0,0 +1,12 @@
+package vip.xiaonuo.exam.api;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 章节试卷(作业)接口
+ */
+public interface CourseChapterPaperApi {
+    // 查询章节试卷(作业) 按章节ID chapterId 查询,按用户ID userId 查询个人记录
+    List<Map<String,Object>> queryListByChapterId(String chapterId, String userId);
+}

+ 6 - 1
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/pom.xml

@@ -17,6 +17,11 @@
     <description>考试系统插件func实现</description>
 
     <dependencies>
+        <!-- 每个插件都要引入自己的对外接口 -->
+        <dependency>
+            <groupId>vip.xiaonuo</groupId>
+            <artifactId>snowy-plugin-exam-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>vip.xiaonuo</groupId>
             <artifactId>snowy-common</artifactId>
@@ -110,4 +115,4 @@
             <optional>true</optional>
         </dependency>
     </dependencies>
-</project>
+</project>

+ 1 - 1
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/domain/ExamPaper.java

@@ -20,7 +20,7 @@ public class ExamPaper implements Serializable {
     private Integer subjectId;
 
     /**
-     * 试卷类型( 1.固定试卷 2.调查问卷 4.时段试卷 6.任务试卷 )
+     * 试卷类型( 1.固定试卷 2.章节作业 3.章节测验 4.时段试卷 5.调查问卷 6.任务试卷 )
      */
     private Integer paperType;
 

+ 1 - 1
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/domain/ExamPaperAnswer.java

@@ -17,7 +17,7 @@ public class ExamPaperAnswer implements Serializable {
     private String paperName;
 
     /**
-     * 试卷类型( 1固定试卷 4.时段试卷 6.任务试卷)
+     * 试卷类型( 1.固定试卷 2.章节作业 3.章节测验 4.时段试卷 5.调查问卷 6.任务试卷 )
      */
     private Integer paperType;
 

+ 3 - 1
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/domain/enums/ExamPaperTypeEnum.java

@@ -6,8 +6,10 @@ import java.util.Map;
 public enum ExamPaperTypeEnum {
 
     Fixed(1, "固定试卷"),
-    Survey(2, "调查问卷"),
+    ChapterWork(2, "章节作业"),
+    ChapterTrain(3, "章节测验"),
     TimeLimit(4, "时段试卷"),
+    Survey(5, "调查问卷"),
     Task(6, "任务试卷");
 
     int code;

+ 2 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/mapper/ExamPaperMapper.java

@@ -32,4 +32,6 @@ public interface ExamPaperMapper extends BaseMapper<ExamPaper> {
     int updateTaskPaper(@Param("taskId") Integer taskId,@Param("paperIds") List<Integer> paperIds);
 
     int clearTaskPaper(@Param("paperIds") List<Integer> paperIds);
+
+    List<ExamPaper> selectByIds(@Param("ids") List<String> ids);
 }

+ 10 - 1
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/mapper/mapping/ExamPaperMapper.xml

@@ -312,7 +312,6 @@
 		GROUP BY create_time
 	</select>
 
-
   <update id="updateTaskPaper">
     update t_exam_paper set task_exam_id = #{taskId} where id in
     <foreach item="id" collection="paperIds" open="(" separator=","
@@ -330,4 +329,14 @@
     </foreach>
   </update>
 
+  <select id="selectByIds" resultType="vip.xiaonuo.exam.domain.ExamPaper">
+    SELECT
+    <include refid="Base_Column_List"/>
+    FROM t_exam_paper
+    WHERE id in
+    <foreach item="id" collection="paperIds" open="(" separator=","
+             close=")">
+      #{id}
+    </foreach>
+  </select>
 </mapper>

+ 47 - 9
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/service/impl/ExamPaperServiceImpl.java

@@ -1,13 +1,19 @@
 package vip.xiaonuo.exam.service.impl;
 
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.map.MapUtil;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
 import org.modelmapper.ModelMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
+import vip.xiaonuo.exam.api.CourseChapterPaperApi;
+import vip.xiaonuo.exam.domain.CourseChapterPaper;
 import vip.xiaonuo.exam.domain.ExamPaper;
 import vip.xiaonuo.exam.domain.Question;
 import vip.xiaonuo.exam.domain.TextContent;
@@ -17,10 +23,7 @@ import vip.xiaonuo.exam.domain.exam.ExamPaperTitleItemObject;
 import vip.xiaonuo.exam.domain.other.KeyValue;
 import vip.xiaonuo.exam.mapper.ExamPaperMapper;
 import vip.xiaonuo.exam.mapper.QuestionMapper;
-import vip.xiaonuo.exam.service.ExamPaperService;
-import vip.xiaonuo.exam.service.QuestionService;
-import vip.xiaonuo.exam.service.SubjectService;
-import vip.xiaonuo.exam.service.TextContentService;
+import vip.xiaonuo.exam.service.*;
 import vip.xiaonuo.exam.service.enums.ActionEnum;
 import vip.xiaonuo.exam.utility.DateTimeUtil;
 import vip.xiaonuo.exam.utility.ExamUtil;
@@ -35,14 +38,14 @@ import vip.xiaonuo.exam.viewmodel.student.dashboard.PaperFilter;
 import vip.xiaonuo.exam.viewmodel.student.dashboard.PaperInfo;
 import vip.xiaonuo.exam.viewmodel.student.exam.ExamPaperPageVM;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+
+import javax.annotation.Resource;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
-
+@Slf4j
 @Service
-public class ExamPaperServiceImpl extends BaseServiceImpl<ExamPaper> implements ExamPaperService {
+public class ExamPaperServiceImpl extends BaseServiceImpl<ExamPaper> implements ExamPaperService, CourseChapterPaperApi {
 
     protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
     private final ExamPaperMapper examPaperMapper;
@@ -51,6 +54,9 @@ public class ExamPaperServiceImpl extends BaseServiceImpl<ExamPaper> implements
     private final QuestionService questionService;
     private final SubjectService subjectService;
 
+    @Resource
+    private CourseChapterPaperService courseChapterPaperService;
+
     @Autowired
     public ExamPaperServiceImpl(ExamPaperMapper examPaperMapper, QuestionMapper questionMapper, TextContentService textContentService, QuestionService questionService, SubjectService subjectService) {
         super(examPaperMapper);
@@ -203,4 +209,36 @@ public class ExamPaperServiceImpl extends BaseServiceImpl<ExamPaper> implements
             return titleItem;
         }).collect(Collectors.toList());
     }
+
+    /**
+     * 查询章节试卷(作业) 按章节ID chapterId 查询,按用户ID userId 查询个人记录
+     * @param chapterId 章节ID
+     * @param userId 用户ID
+     * @return List<Map<String, Object>>
+     */
+    @Override
+    public List<Map<String, Object>> queryListByChapterId(String chapterId, String userId) {
+        List<Map<String, Object>> resultList = new ArrayList<>();
+        try {
+            if(chapterId == null || StringUtils.isEmpty(userId)){
+                return resultList;
+            }
+            CourseChapterPaper param = new CourseChapterPaper();
+            param.setChapterId(chapterId);
+            // 全部的试卷(作业)关联关系
+            List<CourseChapterPaper> courseChapterList = courseChapterPaperService.queryList(param);
+            if(courseChapterList.isEmpty()){
+                return resultList;
+            }
+            List<String> paperIds = courseChapterList.stream().map(CourseChapterPaper::getPaperId).collect(Collectors.toList());
+            List<ExamPaper> paperList = examPaperMapper.selectByIds(paperIds);
+            resultList = paperList.stream()
+                    .map(BeanUtil::beanToMap)
+                    .collect(Collectors.toList());
+        } catch (Exception e) {
+            log.error("查询查询章节试卷(作业)异常:{}", e);
+            e.printStackTrace();
+        }
+        return resultList;
+    }
 }