Browse Source

做题统计 历史目录

he2802 4 years ago
parent
commit
8c223ca0bd
33 changed files with 522 additions and 72 deletions
  1. 2 4
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonGoodsController.java
  2. 98 3
      zhongzheng-api/src/main/java/com/zhongzheng/controller/goods/GoodsController.java
  3. 12 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserExamRecordController.java
  4. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionChapterExamQueryBo.java
  5. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionModuleChapterQueryBo.java
  6. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionChapterExamMapper.java
  7. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionModuleChapterMapper.java
  8. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterExamService.java
  9. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleChapterService.java
  10. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterExamServiceImpl.java
  11. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleChapterServiceImpl.java
  12. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/ExamVo.java
  13. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/collect/service/ICollectQuestionService.java
  14. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/collect/service/impl/CollectQuestionServiceImpl.java
  15. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAttachedQueryBo.java
  16. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsAttachedMapper.java
  17. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsAttachedService.java
  18. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsAttachedServiceImpl.java
  19. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsAttachedVo.java
  20. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordAddBo.java
  21. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordEditBo.java
  22. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserExamRecord.java
  23. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserExamRecordMapper.java
  24. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserExamRecordService.java
  25. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserExamWrongRecordService.java
  26. 20 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamRecordServiceImpl.java
  27. 11 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamWrongRecordServiceImpl.java
  28. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserExamRecordVo.java
  29. 43 0
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionChapterExamMapper.xml
  30. 14 0
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionModuleChapterMapper.xml
  31. 184 62
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml
  32. 22 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserExamRecordMapper.xml
  33. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/user/UserExamWrongRecordMapper.xml

+ 2 - 4
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonGoodsController.java

@@ -65,10 +65,8 @@ public class CommonGoodsController extends BaseController {
     }
 
 
-    /**
-     * 查询题目业务层次关系列表
-     */
-    @ApiOperation("查询商品题库列表")
+
+    @ApiOperation("查询商品题库目录列表")
     @GetMapping("/bank/list")
     public AjaxResult<List<GoodsAttachedVo>> bankList(GoodsAttachedQueryBo bo) {
         List<GoodsAttachedVo> list = iGoodsAttachedService.selectList(bo);

+ 98 - 3
zhongzheng-api/src/main/java/com/zhongzheng/controller/goods/GoodsController.java

@@ -7,6 +7,14 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo;
+import com.zhongzheng.modules.bank.bo.QuestionModuleChapterQueryBo;
+import com.zhongzheng.modules.bank.service.IQuestionChapterExamService;
+import com.zhongzheng.modules.bank.service.IQuestionModuleChapterService;
+import com.zhongzheng.modules.bank.vo.ExamVo;
+import com.zhongzheng.modules.bank.vo.QuestionChapterVo;
+import com.zhongzheng.modules.collect.bo.CollectQuestionQueryBo;
+import com.zhongzheng.modules.collect.service.ICollectQuestionService;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
@@ -14,7 +22,11 @@ import com.zhongzheng.modules.goods.service.IGoodsAuditionConfigService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsAttachedVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.user.bo.UserExamRecordQueryBo;
+import com.zhongzheng.modules.user.bo.UserExamWrongRecordQueryBo;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import com.zhongzheng.modules.user.service.IUserExamRecordService;
+import com.zhongzheng.modules.user.service.IUserExamWrongRecordService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.models.auth.In;
@@ -23,9 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 /**
  * 商品Controller
@@ -45,6 +55,16 @@ public class GoodsController extends BaseController {
 
     private final WxTokenService wxTokenService;
 
+    private final IUserExamRecordService iUserExamRecordService;
+
+
+    private final IUserExamWrongRecordService iUserExamWrongRecordService;
+
+    private final ICollectQuestionService iCollectQuestionService;
+
+    private final IQuestionModuleChapterService iQuestionModuleChapterService;
+
+    private final IQuestionChapterExamService iQuestionChapterExamService;
 
     /**
      * 获取商品详细信息
@@ -60,4 +80,79 @@ public class GoodsController extends BaseController {
     }
 
 
+    /**
+     * 获取商品详细信息
+     */
+    @ApiOperation("获取题库商品题目数统计信息")
+    @GetMapping("/bank/questionNum/{goodsId}")
+    public AjaxResult<Map<String,Object>> questionNum(@PathVariable("goodsId" ) Long goodsId) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+
+        Map<String,Object> numMap = new HashMap<>();
+
+        UserExamWrongRecordQueryBo wBo = new UserExamWrongRecordQueryBo();
+        wBo.setGoodsId(goodsId);
+        wBo.setUserId(loginUser.getUser().getUserId());
+        Integer wrongNum = iUserExamWrongRecordService.recordNum(wBo);
+        numMap.put("wrongNum",wrongNum);
+
+        CollectQuestionQueryBo collectQuestionQueryBo = new CollectQuestionQueryBo();
+        collectQuestionQueryBo.setGoodsId(goodsId);
+        collectQuestionQueryBo.setUserId(loginUser.getUser().getUserId());
+        Integer collectNum = iCollectQuestionService.collectNum(collectQuestionQueryBo);
+        numMap.put("collectNum",collectNum);
+
+        UserExamRecordQueryBo userExamRecordQueryBo = new UserExamRecordQueryBo();
+        userExamRecordQueryBo.setGoodsId(goodsId);
+        userExamRecordQueryBo.setUserId(loginUser.getUser().getUserId());
+        Long doNum = iUserExamRecordService.selectDoNum(userExamRecordQueryBo);
+        numMap.put("doNum",doNum);
+
+        userExamRecordQueryBo.setGoodsId(goodsId);
+        userExamRecordQueryBo.setUserId(loginUser.getUser().getUserId());
+        Long rightNum = iUserExamRecordService.selectRightNum(userExamRecordQueryBo);
+        numMap.put("rightNum",rightNum);
+
+        numMap.put("totalNum",467);
+
+        return AjaxResult.success(numMap);
+    }
+
+    @ApiOperation("查询商品题库目录列表")
+    @GetMapping("/bank/list")
+    public AjaxResult<List<GoodsAttachedVo>> bankList(GoodsAttachedQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        List<GoodsAttachedVo> list = iGoodsAttachedService.selectList(bo);
+        return AjaxResult.success(list);
+    }
+
+    @ApiOperation("查询商品题库做过目录列表")
+    @GetMapping("/bank/dolist")
+    public AjaxResult<List<GoodsAttachedVo>> bankDoList(GoodsAttachedQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        List<GoodsAttachedVo> list = iGoodsAttachedService.selectDoList(bo);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 查询关联章卷列表
+     */
+    @ApiOperation("查询模块卷关联章卷做过列表")
+    @GetMapping("/chapter/dolist")
+    public AjaxResult<List<QuestionChapterVo>> chapterDoList(QuestionModuleChapterQueryBo bo) {
+        List<QuestionChapterVo> list = iQuestionModuleChapterService.getDoList(bo);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 查询关联试卷列表
+     */
+    @ApiOperation("查询章卷关联试卷做过列表")
+    @GetMapping("/exam/dolist")
+    public AjaxResult<List<ExamVo>> examDoList(QuestionChapterExamQueryBo bo) {
+        List<ExamVo> list = iQuestionChapterExamService.getDoList(bo);
+        return AjaxResult.success(list);
+    }
 }

+ 12 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserExamRecordController.java

@@ -60,6 +60,18 @@ public class UserExamRecordController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询用户的题库试卷做题历史列表
+     */
+    @ApiOperation("查询用户的题库试卷做题历史次数")
+    @GetMapping("/count")
+    public AjaxResult<Integer> recordNum(UserExamRecordQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        Integer num = iUserExamRecordService.recordNum(bo);
+        return AjaxResult.success(num);
+    }
+
     /**
      * 导出用户的题库试卷做题历史列表
      */

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionChapterExamQueryBo.java

@@ -45,4 +45,11 @@ public class QuestionChapterExamQueryBo extends BaseEntity {
 	/** 排序 */
 	@ApiModelProperty("排序")
 	private Long sort;
+
+
+	@ApiModelProperty("用户ID")
+	private Long userId;
+
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionModuleChapterQueryBo.java

@@ -45,4 +45,10 @@ public class QuestionModuleChapterQueryBo extends BaseEntity {
 	/** 排序 */
 	@ApiModelProperty("排序")
 	private Long sort;
+
+	@ApiModelProperty("用户ID")
+	private Long userId;
+
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionChapterExamMapper.java

@@ -17,4 +17,6 @@ import java.util.List;
  */
 public interface QuestionChapterExamMapper extends BaseMapper<QuestionChapterExam> {
     List<ExamVo> getList(QuestionChapterExamQueryBo bo);
+
+    List<ExamVo> getDoList(QuestionChapterExamQueryBo bo);
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionModuleChapterMapper.java

@@ -13,8 +13,9 @@ import java.util.List;
  * 模块卷章卷关系Mapper接口
  *
  * @author hjl
- * @date 2021-10-26
+ * @date 2021-10-26o
  */
 public interface QuestionModuleChapterMapper extends BaseMapper<QuestionModuleChapter> {
     List<QuestionChapterVo> getList(QuestionModuleChapterQueryBo bo);
+    List<QuestionChapterVo> getDoList(QuestionModuleChapterQueryBo bo);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterExamService.java

@@ -26,6 +26,8 @@ public interface IQuestionChapterExamService extends IService<QuestionChapterExa
 
 	List<ExamVo> getList(QuestionChapterExamQueryBo bo);
 
+	List<ExamVo> getDoList(QuestionChapterExamQueryBo bo);
+
 	/**
 	 * 查询列表
 	 */

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleChapterService.java

@@ -31,6 +31,8 @@ public interface IQuestionModuleChapterService extends IService<QuestionModuleCh
 	 */
 	List<QuestionModuleChapterVo> queryList(QuestionModuleChapterQueryBo bo);
 
+	List<QuestionChapterVo> getDoList(QuestionModuleChapterQueryBo bo);
+
 	/**
 	 * 根据新增业务对象插入模块卷章卷关系
 	 * @param bo 模块卷章卷关系新增业务对象

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterExamServiceImpl.java

@@ -48,6 +48,11 @@ public class QuestionChapterExamServiceImpl extends ServiceImpl<QuestionChapterE
         return questionChapterExamMapper.getList(bo);
     }
 
+    @Override
+    public List<ExamVo> getDoList(QuestionChapterExamQueryBo bo) {
+        return questionChapterExamMapper.getDoList(bo);
+    }
+
     @Override
     public List<QuestionChapterExamVo> queryList(QuestionChapterExamQueryBo bo) {
         LambdaQueryWrapper<QuestionChapterExam> lqw = Wrappers.lambdaQuery();

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleChapterServiceImpl.java

@@ -56,6 +56,11 @@ public class QuestionModuleChapterServiceImpl extends ServiceImpl<QuestionModule
         return entity2Vo(this.list(lqw));
     }
 
+    @Override
+    public List<QuestionChapterVo> getDoList(QuestionModuleChapterQueryBo bo) {
+        return questionModuleChapterMapper.getDoList(bo);
+    }
+
     /**
     * 实体类转化成视图对象
     *

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/ExamVo.java

@@ -124,4 +124,11 @@ public class ExamVo {
 	@Excel(name = "做卷类型  1测试 2考试")
 	@ApiModelProperty("做题类型  1测试 2考试")
 	private Integer doType;
+
+
+	@ApiModelProperty("历史记录ID")
+	private Integer recordId;
+
+	@ApiModelProperty("历史记录状态")
+	private Integer recordStatus;
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/collect/service/ICollectQuestionService.java

@@ -7,6 +7,7 @@ import com.zhongzheng.modules.collect.domain.CollectQuestion;
 import com.zhongzheng.modules.collect.vo.CollectCourseVo;
 import com.zhongzheng.modules.collect.vo.CollectNoteVo;
 import com.zhongzheng.modules.collect.vo.CollectQuestionVo;
+import com.zhongzheng.modules.user.bo.UserExamRecordQueryBo;
 
 import java.util.Collection;
 import java.util.List;
@@ -24,7 +25,7 @@ public interface ICollectQuestionService extends IService<CollectQuestion> {
 	 */
 	CollectQuestionVo queryById(Long collectQuestionId);
 
-
+	Integer collectNum(CollectQuestionQueryBo bo);
 
 	CollectQuestion queryQuestionById(Long userID, Long questionId, Long examId,Long goodsId);
 

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/collect/service/impl/CollectQuestionServiceImpl.java

@@ -45,6 +45,14 @@ public class CollectQuestionServiceImpl extends ServiceImpl<CollectQuestionMappe
         return BeanUtil.toBean(db, CollectQuestionVo.class);
     }
 
+    @Override
+    public Integer collectNum(CollectQuestionQueryBo bo) {
+        LambdaQueryWrapper<CollectQuestion> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getQuestionId() != null, CollectQuestion::getQuestionId, bo.getQuestionId());
+        lqw.eq(bo.getUserId() != null, CollectQuestion::getUserId, bo.getUserId());
+        lqw.eq(bo.getGoodsId() != null, CollectQuestion::getGoodsId, bo.getGoodsId());
+        return this.count(lqw);
+    }
 
 
     @Override

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAttachedQueryBo.java

@@ -48,4 +48,6 @@ public class GoodsAttachedQueryBo extends BaseEntity {
 	/** 1模块卷 2章卷 3试卷 */
 	@ApiModelProperty("1模块卷 2章卷 3试卷")
 	private Integer type;
+	@ApiModelProperty("用户ID")
+	private Long userId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsAttachedMapper.java

@@ -17,4 +17,5 @@ import java.util.List;
  */
 public interface GoodsAttachedMapper extends BaseMapper<GoodsAttached> {
     List<GoodsAttachedVo> selectList(GoodsAttachedQueryBo bo);
+    List<GoodsAttachedVo> selectDoList(GoodsAttachedQueryBo bo);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsAttachedService.java

@@ -23,6 +23,8 @@ public interface IGoodsAttachedService extends IService<GoodsAttached> {
 	 */
 	GoodsAttachedVo queryById(Long id);
 
+	List<GoodsAttachedVo> selectDoList(GoodsAttachedQueryBo bo);
+
 	/**
 	 * 查询列表
 	 */

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsAttachedServiceImpl.java

@@ -42,6 +42,11 @@ public class GoodsAttachedServiceImpl extends ServiceImpl<GoodsAttachedMapper, G
         return BeanUtil.toBean(db, GoodsAttachedVo.class);
     }
 
+    @Override
+    public List<GoodsAttachedVo> selectDoList(GoodsAttachedQueryBo bo) {
+        return goodsAttachedMapper.selectDoList(bo);
+    }
+
     @Override
     public List<GoodsAttachedVo> queryList(GoodsAttachedQueryBo bo) {
         LambdaQueryWrapper<GoodsAttached> lqw = Wrappers.lambdaQuery();

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsAttachedVo.java

@@ -49,4 +49,10 @@ public class GoodsAttachedVo {
 
 	@ApiModelProperty("题目数")
 	private Integer questionNum;
+
+	@ApiModelProperty("历史记录ID")
+	private Integer recordId;
+
+	@ApiModelProperty("历史记录状态")
+	private Integer recordStatus;
 }

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordAddBo.java

@@ -49,4 +49,13 @@ public class UserExamRecordAddBo {
     /** 试卷总题数 */
     @ApiModelProperty("试卷总题数")
     private Long totalQuestionNum;
+    /** 做的题目数 */
+    @ApiModelProperty("做的题目数")
+    private Long doQuestionNum;
+    /** 模块卷ID */
+    @ApiModelProperty("模块卷ID")
+    private Long moduleExamId;
+    /** 章卷ID */
+    @ApiModelProperty("章卷ID")
+    private Long chapterExamId;
 }

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordEditBo.java

@@ -60,4 +60,17 @@ public class UserExamRecordEditBo {
     /** 做对总题数 */
     @ApiModelProperty("做对总题数")
     private Long rightQuestionNum;
+
+    /** 做的题目数 */
+    @ApiModelProperty("做的题目数")
+    private Long doQuestionNum;
+
+    /** 模块卷ID */
+    @ApiModelProperty("模块卷ID")
+    private Long moduleExamId;
+
+    /** 章卷ID */
+    @ApiModelProperty("章卷ID")
+    private Long chapterExamId;
+
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserExamRecord.java

@@ -50,4 +50,10 @@ private static final long serialVersionUID=1L;
     private Long totalQuestionNum;
     /** 做对总题数 */
     private Long rightQuestionNum;
+    /** 做的题目数 */
+    private Long doQuestionNum;
+    /** 模块卷ID */
+    private Long moduleExamId;
+    /** 章卷ID */
+    private Long chapterExamId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserExamRecordMapper.java

@@ -17,4 +17,6 @@ import java.util.List;
  */
 public interface UserExamRecordMapper extends BaseMapper<UserExamRecord> {
     List<UserExamRecordVo> selectList(UserExamRecordQueryBo bo);
+    Long selectDoNum(UserExamRecordQueryBo bo);
+    Long selectRightNum(UserExamRecordQueryBo bo);
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserExamRecordService.java

@@ -28,6 +28,12 @@ public interface IUserExamRecordService extends IService<UserExamRecord> {
 	 */
 	List<UserExamRecordVo> queryList(UserExamRecordQueryBo bo);
 
+	Integer recordNum(UserExamRecordQueryBo bo);
+
+	Long selectDoNum(UserExamRecordQueryBo bo);
+
+	Long selectRightNum(UserExamRecordQueryBo bo);
+
 	List<UserExamRecordVo> selectList(UserExamRecordQueryBo bo);
 
 	/**

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserExamWrongRecordService.java

@@ -26,6 +26,8 @@ public interface IUserExamWrongRecordService extends IService<UserExamWrongRecor
 	 */
 	UserExamWrongRecordVo queryById(Long wrongId);
 
+	Integer recordNum(UserExamWrongRecordQueryBo bo);
+
 	/**
 	 * 查询列表
 	 */

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamRecordServiceImpl.java

@@ -53,6 +53,26 @@ public class UserExamRecordServiceImpl extends ServiceImpl<UserExamRecordMapper,
         return entity2Vo(this.list(lqw));
     }
 
+    @Override
+    public Integer recordNum(UserExamRecordQueryBo bo) {
+        LambdaQueryWrapper<UserExamRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getExamId() != null, UserExamRecord::getExamId, bo.getExamId());
+        lqw.eq(bo.getUserId() != null, UserExamRecord::getUserId, bo.getUserId());
+        lqw.eq(bo.getStatus() != null, UserExamRecord::getStatus, bo.getStatus());
+        lqw.eq(bo.getGoodsId() != null, UserExamRecord::getGoodsId, bo.getGoodsId());
+        return this.count(lqw);
+    }
+
+    @Override
+    public Long selectDoNum(UserExamRecordQueryBo bo) {
+        return userExamRecordMapper.selectDoNum(bo);
+    }
+
+    @Override
+    public Long selectRightNum(UserExamRecordQueryBo bo) {
+        return userExamRecordMapper.selectRightNum(bo);
+    }
+
     @Override
     public List<UserExamRecordVo> selectList(UserExamRecordQueryBo bo) {
         return userExamRecordMapper.selectList(bo);

+ 11 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamWrongRecordServiceImpl.java

@@ -43,6 +43,17 @@ public class UserExamWrongRecordServiceImpl extends ServiceImpl<UserExamWrongRec
         return BeanUtil.toBean(db, UserExamWrongRecordVo.class);
     }
 
+    @Override
+    public Integer recordNum(UserExamWrongRecordQueryBo bo) {
+        LambdaQueryWrapper<UserExamWrongRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getRecordId() != null, UserExamWrongRecord::getRecordId, bo.getRecordId());
+        lqw.eq(bo.getQuestionId() != null, UserExamWrongRecord::getQuestionId, bo.getQuestionId());
+        lqw.eq(bo.getUserId() != null, UserExamWrongRecord::getUserId, bo.getUserId());
+        lqw.eq(bo.getGoodsId() != null, UserExamWrongRecord::getGoodsId, bo.getGoodsId());
+        lqw.eq(bo.getExamId() != null, UserExamWrongRecord::getExamId, bo.getExamId());
+        return this.count(lqw);
+    }
+
     @Override
     public List<UserExamWrongRecordVo> queryList(UserExamWrongRecordQueryBo bo) {
         LambdaQueryWrapper<UserExamWrongRecord> lqw = Wrappers.lambdaQuery();

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserExamRecordVo.java

@@ -72,4 +72,17 @@ public class UserExamRecordVo {
 	@Excel(name = "做对总题数")
 	@ApiModelProperty("做对总题数")
 	private Long rightQuestionNum;
+
+	/** 做的题目数 */
+	@Excel(name = "做的题目数")
+	@ApiModelProperty("做的题目数")
+	private Long doQuestionNum;
+	/** 模块卷ID */
+	@Excel(name = "模块卷ID")
+	@ApiModelProperty("模块卷ID")
+	private Long moduleExamId;
+	/** 章卷ID */
+	@Excel(name = "章卷ID")
+	@ApiModelProperty("章卷ID")
+	private Long chapterExamId;
 }

+ 43 - 0
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionChapterExamMapper.xml

@@ -30,6 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="sort" column="exam_sort"/>
         <result property="type" column="type"/>
         <result property="questionNum" column="question_num"/>
+        <result property="recordId" column="record_id"/>
+        <result property="recordStatus" column="record_status"/>
     </resultMap>
 
     <select id="getList" parameterType="com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo" resultMap="QuestionChapterExamResultVo">
@@ -53,4 +55,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             qce.chapter_exam_id =#{chapterExamId}
           AND e.status = 1
     </select>
+
+    <select id="getDoList" parameterType="com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo" resultMap="QuestionChapterExamResultVo">
+        SELECT
+            e.*,
+            qce.sort AS exam_sort,
+            3 as type,
+            uer.record_id,
+            uer.record_status
+        FROM
+            question_chapter_exam qce
+                LEFT JOIN (
+                SELECT
+                    e.*,
+                    count( eq.question_id ) question_num
+                FROM
+                    exam e
+                        LEFT JOIN exam_question eq ON e.exam_id = eq.exam_id
+                GROUP BY
+                    e.exam_id
+            ) e ON qce.exam_id = e.exam_id
+                LEFT JOIN (SELECT
+                               record_id,
+                               `status`,
+                               exam_id
+                           FROM
+                               user_exam_record
+                           WHERE
+                                   record_id IN (
+                                   SELECT
+                                       MAX( record_id ) record_id
+                                   FROM
+                                       user_exam_record
+                                   WHERE
+                                       user_id = #{userId}
+                                     AND goods_id = #{goodsId}
+                                   GROUP BY
+                                       exam_id)) uer on uer.exam_id = e.exam_id
+        WHERE
+            qce.chapter_exam_id =#{chapterExamId}
+          AND e.status = 1 AND  e.exam_id IN ( SELECT exam_id FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} AND module_exam_id = 0 AND chapter_exam_id = 0 GROUP BY exam_id )
+    </select>
 </mapper>

+ 14 - 0
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionModuleChapterMapper.xml

@@ -34,4 +34,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             qm.module_exam_id  =#{moduleExamId}
 
     </select>
+
+    <select id="getDoList" parameterType="com.zhongzheng.modules.bank.bo.QuestionModuleChapterQueryBo" resultMap="QuestionModuleChapterResultVo">
+        SELECT
+            qc.*,
+            mc.sort as chapter_sort
+        FROM
+            question_module qm
+                LEFT JOIN question_module_chapter mc ON mc.module_exam_id = qm.module_exam_id
+                LEFT JOIN question_chapter qc ON mc.chapter_exam_id = qc.chapter_exam_id
+        WHERE
+            qm.module_exam_id  =#{moduleExamId}
+          AND mc.chapter_exam_id IN ( SELECT chapter_exam_id FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} AND module_exam_id = 0 AND chapter_exam_id > 0 GROUP BY chapter_exam_id)
+
+    </select>
 </mapper>

+ 184 - 62
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml

@@ -23,72 +23,194 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="name" column="name"/>
         <result property="subjectName" column="subject_name"/>
         <result property="questionNum" column="question_num"/>
+		<result property="recordId" column="record_id"/>
+		<result property="recordStatus" column="record_status"/>
     </resultMap>
 
     <select id="selectList" parameterType="com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo" resultMap="GoodsAttachedResultVo">
-        SELECT
-            ga.*,
-            CASE
+		SELECT
+			ga.*,
+			CASE
 
-                WHEN ga.type = 1 THEN
-                    qm.module_name
-                WHEN ga.type = 2 THEN
-                    qc.`name`
-                WHEN ga.type = 3 THEN
-                    e.exam_name
-                END name,
-            CASE
-                WHEN ga.type = 1 THEN
-                    cs.subject_name
-                WHEN ga.type = 2 THEN
-                    cs1.subject_name
-                WHEN ga.type = 3 THEN
-                    cs2.subject_name
-                END subject_name,
-            CASE
-                WHEN ga.type = 1 THEN
-                    0
-                WHEN ga.type = 2 THEN
-                    0
-                WHEN ga.type = 3 THEN
-                    e.question_num
-                END question_num,
-            CASE
+				WHEN ga.type = 1 THEN
+					qm.module_name
+				WHEN ga.type = 2 THEN
+					qc.`name`
+				WHEN ga.type = 3 THEN
+					e.exam_name
+				END NAME,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					cs.subject_name
+				WHEN ga.type = 2 THEN
+					cs1.subject_name
+				WHEN ga.type = 3 THEN
+					cs2.subject_name
+				END subject_name,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					0
+				WHEN ga.type = 2 THEN
+					0
+				WHEN ga.type = 3 THEN
+					e.question_num
+				END question_num,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					qm.publish_status
+				WHEN ga.type = 2 THEN
+					qc.publish_status
+				WHEN ga.type = 3 THEN
+					e.publish_status
+				END publish_status
+		FROM
+			goods_attached ga
+				LEFT JOIN question_module qm ON ga.major_id = qm.module_exam_id
+				AND ga.type = 1
+				LEFT JOIN question_business qb ON qb.major_id = qm.module_exam_id
+				AND qb.type = 4
+				LEFT JOIN course_subject cs ON qb.subject_id = cs.id
+				LEFT JOIN question_chapter qc ON ga.major_id = qc.chapter_exam_id
+				AND ga.type = 2
+				LEFT JOIN question_business qb1 ON qb1.major_id = qc.chapter_exam_id
+				AND qb1.type = 3
+				LEFT JOIN course_subject cs1 ON qb1.subject_id = cs1.id
+				LEFT JOIN (
+				SELECT
+					e.*,
+					count( eq.question_id ) question_num
+				FROM
+					exam e
+						LEFT JOIN exam_question eq ON e.exam_id = eq.exam_id
+				GROUP BY
+					e.exam_id
+			) e ON ga.major_id = e.exam_id
+				AND ga.type = 3
+				AND e.STATUS = 1
+				LEFT JOIN question_business qb2 ON qb2.major_id = e.exam_id
+				AND qb2.type = 2
+				LEFT JOIN course_subject cs2 ON qb2.subject_id = cs2.id
+		WHERE
+			ga.goods_id = #{goodsId}
 
-                WHEN ga.type = 1 THEN
-                    qm.publish_status
-                WHEN ga.type = 2 THEN
-                    qc.publish_status
-                WHEN ga.type = 3 THEN
-                    e.publish_status
-                END publish_status
-        FROM
-            goods_attached ga
-                LEFT JOIN question_module qm ON ga.major_id = qm.module_exam_id
-                AND ga.type = 1
-                LEFT JOIN question_business qb ON qb.major_id = qm.module_exam_id
-                AND qb.type = 4
-                LEFT JOIN course_subject cs ON qb.subject_id = cs.id
-                LEFT JOIN question_chapter qc ON ga.major_id = qc.chapter_exam_id
-                AND ga.type = 2
-                LEFT JOIN question_business qb1 ON qb1.major_id = qc.chapter_exam_id
-                AND qb1.type = 3
-                LEFT JOIN course_subject cs1 ON qb1.subject_id = cs1.id
-                LEFT JOIN (
-                SELECT
-                    e.*,
-                    count( eq.question_id ) question_num
-                FROM
-                    exam e
-                        LEFT JOIN exam_question eq ON e.exam_id = eq.exam_id
-                GROUP BY
-                    e.exam_id
-            ) e ON ga.major_id = e.exam_id
-                AND ga.type = 3 AND e.status = 1
-                LEFT JOIN question_business qb2 ON qb2.major_id = e.exam_id
-                AND qb2.type = 2
-                LEFT JOIN course_subject cs2 ON qb2.subject_id = cs2.id
-        WHERE
-            ga.goods_id = #{goodsId}
     </select>
+
+	<select id="selectDoList" parameterType="com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo" resultMap="GoodsAttachedResultVo">
+		SELECT
+			ga.*,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					qm.module_name
+				WHEN ga.type = 2 THEN
+					qc.`name`
+				WHEN ga.type = 3 THEN
+					e.exam_name
+				END NAME,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					cs.subject_name
+				WHEN ga.type = 2 THEN
+					cs1.subject_name
+				WHEN ga.type = 3 THEN
+					cs2.subject_name
+				END subject_name,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					0
+				WHEN ga.type = 2 THEN
+					0
+				WHEN ga.type = 3 THEN
+					e.question_num
+				END question_num,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					qm.publish_status
+				WHEN ga.type = 2 THEN
+					qc.publish_status
+				WHEN ga.type = 3 THEN
+					e.publish_status
+				END publish_status,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					0
+				WHEN ga.type = 2 THEN
+					0
+				WHEN ga.type = 3 THEN
+					uer.record_id
+				END record_id,
+			CASE
+
+				WHEN ga.type = 1 THEN
+					0
+				WHEN ga.type = 2 THEN
+					0
+				WHEN ga.type = 3 THEN
+					uer.status
+				END record_status
+		FROM
+			goods_attached ga
+				LEFT JOIN question_module qm ON ga.major_id = qm.module_exam_id
+				AND ga.type = 1
+				LEFT JOIN question_business qb ON qb.major_id = qm.module_exam_id
+				AND qb.type = 4
+				LEFT JOIN course_subject cs ON qb.subject_id = cs.id
+				LEFT JOIN question_chapter qc ON ga.major_id = qc.chapter_exam_id
+				AND ga.type = 2
+				LEFT JOIN question_business qb1 ON qb1.major_id = qc.chapter_exam_id
+				AND qb1.type = 3
+				LEFT JOIN course_subject cs1 ON qb1.subject_id = cs1.id
+				LEFT JOIN (
+				SELECT
+					e.*,
+					count( eq.question_id ) question_num
+				FROM
+					exam e
+						LEFT JOIN exam_question eq ON e.exam_id = eq.exam_id
+				GROUP BY
+					e.exam_id
+			) e ON ga.major_id = e.exam_id
+				AND ga.type = 3
+				AND e.STATUS = 1
+				LEFT JOIN question_business qb2 ON qb2.major_id = e.exam_id
+				AND qb2.type = 2
+				LEFT JOIN course_subject cs2 ON qb2.subject_id = cs2.id
+				LEFT JOIN (SELECT
+							   record_id,
+							   `status`,
+							   exam_id
+						   FROM
+							   user_exam_record
+						   WHERE
+								   record_id IN (
+								   SELECT
+									   MAX( record_id ) record_id
+								   FROM
+									   user_exam_record
+								   WHERE
+									   user_id = #{userId}
+									 AND goods_id = #{goodsId}
+								   GROUP BY
+									   exam_id)) uer on uer.exam_id = e.exam_id
+		WHERE
+			ga.goods_id = #{goodsId}
+		  AND ((
+					   ga.type = 3
+					   AND ga.major_id IN ( SELECT exam_id FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} AND module_exam_id = 0 AND chapter_exam_id = 0 GROUP BY exam_id )
+					   AND e.STATUS = 1
+				   )
+			OR (
+					   ga.type = 2
+					   AND ga.major_id IN ( SELECT chapter_exam_id FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} AND module_exam_id = 0 AND chapter_exam_id > 0 GROUP BY chapter_exam_id ))
+			OR (
+					   ga.type = 1
+					   AND ga.major_id IN ( SELECT module_exam_id FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} AND module_exam_id > 0 GROUP BY module_exam_id )))
+	</select>
 </mapper>

+ 22 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserExamRecordMapper.xml

@@ -17,6 +17,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="historyExamJson" column="history_exam_json"/>
         <result property="totalQuestionNum" column="total_question_num"/>
         <result property="rightQuestionNum" column="right_question_num"/>
+        <result property="doQuestionNum" column="do_question_num"/>
+        <result property="moduleExamId" column="module_exam_id"/>
+        <result property="chapterExamId" column="chapter_exam_id"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.UserExamRecordVo" id="UserExamRecordVoResult">
@@ -31,6 +34,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="historyExamJson" column="history_exam_json"/>
         <result property="totalQuestionNum" column="total_question_num"/>
         <result property="rightQuestionNum" column="right_question_num"/>
+        <result property="doQuestionNum" column="do_question_num"/>
+        <result property="moduleExamId" column="module_exam_id"/>
+        <result property="chapterExamId" column="chapter_exam_id"/>
 
         <result property="examName" column="exam_name"/>
         <result property="paperName" column="paper_name"/>
@@ -54,4 +60,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND ue.goods_id = #{goodsId}
         </if>
     </select>
+
+    <select id="selectDoNum" parameterType="com.zhongzheng.modules.user.bo.UserExamRecordQueryBo" resultType="Long">
+        SELECT
+            COALESCE(sum( uer.num ),0) num
+        FROM
+        ( SELECT MAX( do_question_num ) AS num FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} GROUP BY exam_id ) uer
+
+    </select>
+
+    <select id="selectRightNum" parameterType="com.zhongzheng.modules.user.bo.UserExamRecordQueryBo" resultType="Long">
+        SELECT
+            COALESCE(sum( uer.num ),0) num
+        FROM
+            ( SELECT MAX( right_question_num ) AS num FROM user_exam_record WHERE user_id = #{userId} AND goods_id = #{goodsId} GROUP BY exam_id ) uer
+
+    </select>
 </mapper>

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/user/UserExamWrongRecordMapper.xml

@@ -90,7 +90,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectTypeNum" parameterType="com.zhongzheng.modules.user.bo.UserExamWrongRecordQueryBo"  resultMap="UserExamWrongRecordVoResult">
         SELECT
             q.type,
-            count( q.question_id ) AS num
+            count(DISTINCT q.question_id ) AS num
         FROM
                 ( SELECT * FROM user_exam_wrong_record WHERE user_id = #{userId} ) uew
                     LEFT JOIN question q ON uew.question_id = q.question_id