he2802 пре 4 година
родитељ
комит
bcf9208324
29 измењених фајлова са 1555 додато и 0 уклоњено
  1. 112 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/bank/QuestionSimulateController.java
  2. 78 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserBankRecordController.java
  3. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionSimulateAddBo.java
  4. 60 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionSimulateEditBo.java
  5. 64 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionSimulateQueryBo.java
  6. 63 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionSimulate.java
  7. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionSimulateMapper.java
  8. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionSimulateService.java
  9. 106 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionSimulateServiceImpl.java
  10. 60 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/QuestionSimulateVo.java
  11. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankQuestionRecordAddBo.java
  12. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankQuestionRecordEditBo.java
  13. 58 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankQuestionRecordQueryBo.java
  14. 42 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankRecordAddBo.java
  15. 44 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankRecordEditBo.java
  16. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankRecordQueryBo.java
  17. 57 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserBankQuestionRecord.java
  18. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserBankRecord.java
  19. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserBankQuestionRecordMapper.java
  20. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserBankRecordMapper.java
  21. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserBankQuestionRecordService.java
  22. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserBankRecordService.java
  23. 104 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankQuestionRecordServiceImpl.java
  24. 102 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java
  25. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserBankQuestionRecordVo.java
  26. 44 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserBankRecordVo.java
  27. 22 0
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionSimulateMapper.xml
  28. 20 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserBankQuestionRecordMapper.xml
  29. 18 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserBankRecordMapper.xml

+ 112 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/bank/QuestionSimulateController.java

@@ -0,0 +1,112 @@
+package com.zhongzheng.controller.bank;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.modules.bank.bo.QuestionSimulateAddBo;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateEditBo;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateQueryBo;
+import com.zhongzheng.modules.bank.service.IQuestionSimulateService;
+import com.zhongzheng.modules.bank.vo.QuestionSimulateVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 模拟题库Controller
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Api(value = "模拟题库控制器", tags = {"模拟题库管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/simulate")
+public class QuestionSimulateController extends BaseController {
+
+    private final IQuestionSimulateService iQuestionSimulateService;
+
+    /**
+     * 查询模拟题库列表
+     */
+    @ApiOperation("查询模拟题库列表")
+    @PreAuthorize("@ss.hasPermi('system:simulate:list')")
+    @GetMapping("/list")
+    public TableDataInfo<QuestionSimulateVo> list(QuestionSimulateQueryBo bo) {
+        startPage();
+        List<QuestionSimulateVo> list = iQuestionSimulateService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出模拟题库列表
+     */
+    @ApiOperation("导出模拟题库列表")
+    @PreAuthorize("@ss.hasPermi('system:simulate:export')")
+    @Log(title = "模拟题库", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<QuestionSimulateVo> export(QuestionSimulateQueryBo bo) {
+        List<QuestionSimulateVo> list = iQuestionSimulateService.queryList(bo);
+        ExcelUtil<QuestionSimulateVo> util = new ExcelUtil<QuestionSimulateVo>(QuestionSimulateVo.class);
+        return util.exportExcel(list, "模拟题库");
+    }
+
+    /**
+     * 获取模拟题库详细信息
+     */
+    @ApiOperation("获取模拟题库详细信息")
+    @PreAuthorize("@ss.hasPermi('system:simulate:query')")
+    @GetMapping("/{simulateId}")
+    public AjaxResult<QuestionSimulateVo> getInfo(@PathVariable("simulateId" ) Long simulateId) {
+        return AjaxResult.success(iQuestionSimulateService.queryById(simulateId));
+    }
+
+    /**
+     * 新增模拟题库
+     */
+    @ApiOperation("新增模拟题库")
+    @PreAuthorize("@ss.hasPermi('system:simulate:add')")
+    @Log(title = "模拟题库", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody QuestionSimulateAddBo bo) {
+        return toAjax(iQuestionSimulateService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改模拟题库
+     */
+    @ApiOperation("修改模拟题库")
+    @PreAuthorize("@ss.hasPermi('system:simulate:edit')")
+    @Log(title = "模拟题库", businessType = BusinessType.UPDATE)
+    @PutMapping()
+    public AjaxResult<Void> edit(@RequestBody QuestionSimulateEditBo bo) {
+        return toAjax(iQuestionSimulateService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除模拟题库
+     */
+    @ApiOperation("删除模拟题库")
+    @PreAuthorize("@ss.hasPermi('system:simulate:remove')")
+    @Log(title = "模拟题库" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{simulateIds}")
+    public AjaxResult<Void> remove(@PathVariable Long[] simulateIds) {
+        return toAjax(iQuestionSimulateService.deleteWithValidByIds(Arrays.asList(simulateIds), true) ? 1 : 0);
+    }
+}

+ 78 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserBankRecordController.java

@@ -0,0 +1,78 @@
+package com.zhongzheng.controller.user;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.modules.user.bo.UserBankRecordAddBo;
+import com.zhongzheng.modules.user.bo.UserBankRecordEditBo;
+import com.zhongzheng.modules.user.bo.UserBankRecordQueryBo;
+import com.zhongzheng.modules.user.service.IUserBankRecordService;
+import com.zhongzheng.modules.user.vo.UserBankRecordVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 用户的做题历史Controller
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Api(value = "用户的做题历史控制器", tags = {"用户的做题历史管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/bank/record")
+public class UserBankRecordController extends BaseController {
+
+    private final IUserBankRecordService iUserBankRecordService;
+
+    /**
+     * 查询用户的做题历史列表
+     */
+    @ApiOperation("查询用户的做题历史列表")
+    @GetMapping("/list")
+    public TableDataInfo<UserBankRecordVo> list(UserBankRecordQueryBo bo) {
+        startPage();
+        List<UserBankRecordVo> list = iUserBankRecordService.queryList(bo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 获取用户的做题历史详细信息
+     */
+    @ApiOperation("获取用户的做题历史详细信息")
+    @GetMapping("/{recordId}")
+    public AjaxResult<UserBankRecordVo> getInfo(@PathVariable("recordId" ) Long recordId) {
+        return AjaxResult.success(iUserBankRecordService.queryById(recordId));
+    }
+
+    /**
+     * 新增用户的做题历史
+     */
+    @ApiOperation("新增用户的做题历史")
+    @Log(title = "用户的做题历史", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody UserBankRecordAddBo bo) {
+        return toAjax(iUserBankRecordService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+
+}

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionSimulateAddBo.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.bank.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模拟题库添加对象 question_simulate
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("模拟题库添加对象")
+public class QuestionSimulateAddBo {
+
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+    /** 考试配置ID */
+    @ApiModelProperty("考试配置ID")
+    private Long examConfigId;
+    /** 添加试卷 */
+    @ApiModelProperty("添加试卷")
+    private Long createTime;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long updateTime;
+    /** 0 失效 1启用 */
+    @ApiModelProperty("0 失效 1启用")
+    private Integer status;
+    /** 单选题目ID拼接 */
+    @ApiModelProperty("单选题目ID拼接")
+    private String type1Ids;
+    /** 多选题目ID拼接 */
+    @ApiModelProperty("多选题目ID拼接")
+    private String type2Ids;
+    /** 单选题目ID拼接 */
+    @ApiModelProperty("单选题目ID拼接")
+    private String type3Ids;
+    /** 案例题目ID拼接 */
+    @ApiModelProperty("案例题目ID拼接")
+    private String type4Ids;
+    /** 所属题库ID */
+    @ApiModelProperty("所属题库ID")
+    private Long bankId;
+}

+ 60 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionSimulateEditBo.java

@@ -0,0 +1,60 @@
+package com.zhongzheng.modules.bank.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 模拟题库编辑对象 question_simulate
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("模拟题库编辑对象")
+public class QuestionSimulateEditBo {
+
+
+    /** 随机产生模拟试卷ID */
+    @ApiModelProperty("随机产生模拟试卷ID")
+    private Long simulateId;
+
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+    /** 考试配置ID */
+    @ApiModelProperty("考试配置ID")
+    private Long examConfigId;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long updateTime;
+
+    /** 0 失效 1启用 */
+    @ApiModelProperty("0 失效 1启用")
+    private Integer status;
+
+    /** 单选题目ID拼接 */
+    @ApiModelProperty("单选题目ID拼接")
+    private String type1Ids;
+
+    /** 多选题目ID拼接 */
+    @ApiModelProperty("多选题目ID拼接")
+    private String type2Ids;
+
+    /** 单选题目ID拼接 */
+    @ApiModelProperty("单选题目ID拼接")
+    private String type3Ids;
+
+    /** 案例题目ID拼接 */
+    @ApiModelProperty("案例题目ID拼接")
+    private String type4Ids;
+
+    /** 所属题库ID */
+    @ApiModelProperty("所属题库ID")
+    private Long bankId;
+}

+ 64 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionSimulateQueryBo.java

@@ -0,0 +1,64 @@
+package com.zhongzheng.modules.bank.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 模拟题库分页查询对象 question_simulate
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("模拟题库分页查询对象")
+public class QuestionSimulateQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 用户ID */
+	@ApiModelProperty("用户ID")
+	private Long userId;
+	/** 考试配置ID */
+	@ApiModelProperty("考试配置ID")
+	private Long examConfigId;
+	/** 0 失效 1启用 */
+	@ApiModelProperty("0 失效 1启用")
+	private Integer status;
+	/** 单选题目ID拼接 */
+	@ApiModelProperty("单选题目ID拼接")
+	private String type1Ids;
+	/** 多选题目ID拼接 */
+	@ApiModelProperty("多选题目ID拼接")
+	private String type2Ids;
+	/** 单选题目ID拼接 */
+	@ApiModelProperty("单选题目ID拼接")
+	private String type3Ids;
+	/** 案例题目ID拼接 */
+	@ApiModelProperty("案例题目ID拼接")
+	private String type4Ids;
+	/** 所属题库ID */
+	@ApiModelProperty("所属题库ID")
+	private Long bankId;
+
+}

+ 63 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionSimulate.java

@@ -0,0 +1,63 @@
+package com.zhongzheng.modules.bank.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 模拟题库对象 question_simulate
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("question_simulate")
+public class QuestionSimulate implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+    /** 随机产生模拟试卷ID */
+    @TableId(value = "simulate_id")
+    private Long simulateId;
+
+    /** 用户ID */
+    private Long userId;
+
+    /** 考试配置ID */
+    private Long examConfigId;
+
+    /** 添加试卷 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+
+    /** $column.columnComment */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+    /** 0 失效 1启用 */
+    private Integer status;
+
+    /** 单选题目ID拼接 */
+    private String type1Ids;
+
+    /** 多选题目ID拼接 */
+    private String type2Ids;
+
+    /** 单选题目ID拼接 */
+    private String type3Ids;
+
+    /** 案例题目ID拼接 */
+    private String type4Ids;
+
+    /** 所属题库ID */
+    private Long bankId;
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionSimulateMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.bank.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.bank.domain.QuestionSimulate;
+
+/**
+ * 模拟题库Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+public interface QuestionSimulateMapper extends BaseMapper<QuestionSimulate> {
+
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionSimulateService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.bank.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateAddBo;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateEditBo;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateQueryBo;
+import com.zhongzheng.modules.bank.domain.QuestionSimulate;
+import com.zhongzheng.modules.bank.vo.QuestionSimulateVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 模拟题库Service接口
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+public interface IQuestionSimulateService extends IService<QuestionSimulate> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	QuestionSimulateVo queryById(Long simulateId);
+
+	/**
+	 * 查询列表
+	 */
+	List<QuestionSimulateVo> queryList(QuestionSimulateQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入模拟题库
+	 * @param bo 模拟题库新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(QuestionSimulateAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改模拟题库
+	 * @param bo 模拟题库编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(QuestionSimulateEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 106 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionSimulateServiceImpl.java

@@ -0,0 +1,106 @@
+package com.zhongzheng.modules.bank.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateAddBo;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateEditBo;
+import com.zhongzheng.modules.bank.bo.QuestionSimulateQueryBo;
+import com.zhongzheng.modules.bank.domain.QuestionSimulate;
+import com.zhongzheng.modules.bank.mapper.QuestionSimulateMapper;
+import com.zhongzheng.modules.bank.service.IQuestionSimulateService;
+import com.zhongzheng.modules.bank.vo.QuestionSimulateVo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 模拟题库Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Service
+public class QuestionSimulateServiceImpl extends ServiceImpl<QuestionSimulateMapper, QuestionSimulate> implements IQuestionSimulateService {
+
+    @Override
+    public QuestionSimulateVo queryById(Long simulateId){
+        QuestionSimulate db = this.baseMapper.selectById(simulateId);
+        return BeanUtil.toBean(db, QuestionSimulateVo.class);
+    }
+
+    @Override
+    public List<QuestionSimulateVo> queryList(QuestionSimulateQueryBo bo) {
+        LambdaQueryWrapper<QuestionSimulate> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, QuestionSimulate::getUserId, bo.getUserId());
+        lqw.eq(bo.getExamConfigId() != null, QuestionSimulate::getExamConfigId, bo.getExamConfigId());
+        lqw.eq(bo.getStatus() != null, QuestionSimulate::getStatus, bo.getStatus());
+        lqw.eq(StrUtil.isNotBlank(bo.getType1Ids()), QuestionSimulate::getType1Ids, bo.getType1Ids());
+        lqw.eq(StrUtil.isNotBlank(bo.getType2Ids()), QuestionSimulate::getType2Ids, bo.getType2Ids());
+        lqw.eq(StrUtil.isNotBlank(bo.getType3Ids()), QuestionSimulate::getType3Ids, bo.getType3Ids());
+        lqw.eq(StrUtil.isNotBlank(bo.getType4Ids()), QuestionSimulate::getType4Ids, bo.getType4Ids());
+        lqw.eq(bo.getBankId() != null, QuestionSimulate::getBankId, bo.getBankId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<QuestionSimulateVo> entity2Vo(Collection<QuestionSimulate> collection) {
+        List<QuestionSimulateVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, QuestionSimulateVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<QuestionSimulate> page = (Page<QuestionSimulate>)collection;
+            Page<QuestionSimulateVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(QuestionSimulateAddBo bo) {
+        QuestionSimulate add = BeanUtil.toBean(bo, QuestionSimulate.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(QuestionSimulateEditBo bo) {
+        QuestionSimulate update = BeanUtil.toBean(bo, QuestionSimulate.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(QuestionSimulate entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 60 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/QuestionSimulateVo.java

@@ -0,0 +1,60 @@
+package com.zhongzheng.modules.bank.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模拟题库视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("模拟题库视图对象")
+public class QuestionSimulateVo {
+	private static final long serialVersionUID = 1L;
+
+	/** 随机产生模拟试卷ID */
+	@ApiModelProperty("随机产生模拟试卷ID")
+	private Long simulateId;
+
+	/** 用户ID */
+	@Excel(name = "用户ID")
+	@ApiModelProperty("用户ID")
+	private Long userId;
+	/** 考试配置ID */
+	@Excel(name = "考试配置ID")
+	@ApiModelProperty("考试配置ID")
+	private Long examConfigId;
+	/** 0 失效 1启用 */
+	@Excel(name = "0 失效 1启用")
+	@ApiModelProperty("0 失效 1启用")
+	private Integer status;
+	/** 单选题目ID拼接 */
+	@Excel(name = "单选题目ID拼接")
+	@ApiModelProperty("单选题目ID拼接")
+	private String type1Ids;
+	/** 多选题目ID拼接 */
+	@Excel(name = "多选题目ID拼接")
+	@ApiModelProperty("多选题目ID拼接")
+	private String type2Ids;
+	/** 单选题目ID拼接 */
+	@Excel(name = "单选题目ID拼接")
+	@ApiModelProperty("单选题目ID拼接")
+	private String type3Ids;
+	/** 案例题目ID拼接 */
+	@Excel(name = "案例题目ID拼接")
+	@ApiModelProperty("案例题目ID拼接")
+	private String type4Ids;
+	/** 所属题库ID */
+	@Excel(name = "所属题库ID")
+	@ApiModelProperty("所属题库ID")
+	private Long bankId;
+
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankQuestionRecordAddBo.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户做的历史题库题目记录添加对象 user_bank_question_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("用户做的历史题库题目记录添加对象")
+public class UserBankQuestionRecordAddBo {
+
+    /** 所属做题历史ID */
+    @ApiModelProperty("所属做题历史ID")
+    private Long recordId;
+    /** 题目ID */
+    @ApiModelProperty("题目ID")
+    private Long questionId;
+    /** 是否正确 1正确 0错误 */
+    @ApiModelProperty("是否正确 1正确 0错误")
+    private Long isRight;
+    /** 题库ID */
+    @ApiModelProperty("题库ID")
+    private Long bankId;
+    /** 所选ID拼接 */
+    @ApiModelProperty("所选ID拼接")
+    private String selectIds;
+    /** 回复的json字符串 */
+    @ApiModelProperty("回复的json字符串")
+    private String replyStr;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankQuestionRecordEditBo.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 用户做的历史题库题目记录编辑对象 user_bank_question_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("用户做的历史题库题目记录编辑对象")
+public class UserBankQuestionRecordEditBo {
+
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long replyId;
+
+    /** 所属做题历史ID */
+    @ApiModelProperty("所属做题历史ID")
+    private Long recordId;
+
+    /** 题目ID */
+    @ApiModelProperty("题目ID")
+    private Long questionId;
+
+    /** 是否正确 1正确 0错误 */
+    @ApiModelProperty("是否正确 1正确 0错误")
+    private Long isRight;
+
+    /** 题库ID */
+    @ApiModelProperty("题库ID")
+    private Long bankId;
+
+    /** 所选ID拼接 */
+    @ApiModelProperty("所选ID拼接")
+    private String selectIds;
+
+    /** 回复的json字符串 */
+    @ApiModelProperty("回复的json字符串")
+    private String replyStr;
+
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+}

+ 58 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankQuestionRecordQueryBo.java

@@ -0,0 +1,58 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 用户做的历史题库题目记录分页查询对象 user_bank_question_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("用户做的历史题库题目记录分页查询对象")
+public class UserBankQuestionRecordQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 所属做题历史ID */
+	@ApiModelProperty("所属做题历史ID")
+	private Long recordId;
+	/** 题目ID */
+	@ApiModelProperty("题目ID")
+	private Long questionId;
+	/** 是否正确 1正确 0错误 */
+	@ApiModelProperty("是否正确 1正确 0错误")
+	private Long isRight;
+	/** 题库ID */
+	@ApiModelProperty("题库ID")
+	private Long bankId;
+	/** 所选ID拼接 */
+	@ApiModelProperty("所选ID拼接")
+	private String selectIds;
+	/** 回复的json字符串 */
+	@ApiModelProperty("回复的json字符串")
+	private String replyStr;
+
+}

+ 42 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankRecordAddBo.java

@@ -0,0 +1,42 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 用户的做题历史添加对象 user_bank_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("用户的做题历史添加对象")
+public class UserBankRecordAddBo {
+
+    /** 1真题模拟考试 2试卷练习 3真题练习 */
+    @ApiModelProperty("1真题模拟考试 2试卷练习 3真题练习")
+    private Long type;
+    /** 真题模拟ID */
+    @ApiModelProperty("真题模拟ID")
+    private Long simulateId;
+    /** 试卷ID */
+    @ApiModelProperty("试卷ID")
+    private Long examId;
+    /** 题库ID */
+    @ApiModelProperty("题库ID")
+    private Long bankId;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+    /** 更新时间 */
+    @ApiModelProperty("用户答题数组")
+    private List<UserBankQuestionRecordAddBo> answerList;
+}

+ 44 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankRecordEditBo.java

@@ -0,0 +1,44 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 用户的做题历史编辑对象 user_bank_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("用户的做题历史编辑对象")
+public class UserBankRecordEditBo {
+
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long recordId;
+
+    /** 1真题模拟考试 2试卷练习 3真题练习 */
+    @ApiModelProperty("1真题模拟考试 2试卷练习 3真题练习")
+    private Long type;
+
+    /** 真题模拟ID */
+    @ApiModelProperty("真题模拟ID")
+    private Long simulateId;
+
+    /** 试卷ID */
+    @ApiModelProperty("试卷ID")
+    private Long examId;
+
+    /** 题库ID */
+    @ApiModelProperty("题库ID")
+    private Long bankId;
+
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankRecordQueryBo.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 用户的做题历史分页查询对象 user_bank_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("用户的做题历史分页查询对象")
+public class UserBankRecordQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 1真题模拟考试 2试卷练习 3真题练习 */
+	@ApiModelProperty("1真题模拟考试 2试卷练习 3真题练习")
+	private Long type;
+	/** 真题模拟ID */
+	@ApiModelProperty("真题模拟ID")
+	private Long simulateId;
+	/** 试卷ID */
+	@ApiModelProperty("试卷ID")
+	private Long examId;
+	/** 题库ID */
+	@ApiModelProperty("题库ID")
+	private Long bankId;
+
+}

+ 57 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserBankQuestionRecord.java

@@ -0,0 +1,57 @@
+package com.zhongzheng.modules.user.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 用户做的历史题库题目记录对象 user_bank_question_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("user_bank_question_record")
+public class UserBankQuestionRecord implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+    /** $column.columnComment */
+    @TableId(value = "reply_id")
+    private Long replyId;
+
+    /** 所属做题历史ID */
+    private Long recordId;
+
+    /** 题目ID */
+    private Long questionId;
+
+    /** 是否正确 1正确 0错误 */
+    private Long isRight;
+
+    /** 题库ID */
+    private Long bankId;
+
+    /** 所选ID拼接 */
+    private String selectIds;
+
+    /** 回复的json字符串 */
+    private String replyStr;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+}

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserBankRecord.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.user.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 用户的做题历史对象 user_bank_record
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("user_bank_record")
+public class UserBankRecord implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+    /** $column.columnComment */
+    @TableId(value = "record_id")
+    private Long recordId;
+
+    /** 1真题模拟考试 2试卷练习 3真题练习 */
+    private Long type;
+
+    /** 真题模拟ID */
+    private Long simulateId;
+
+    /** 试卷ID */
+    private Long examId;
+
+    /** 题库ID */
+    private Long bankId;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserBankQuestionRecordMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.domain.UserBankQuestionRecord;
+
+/**
+ * 用户做的历史题库题目记录Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+public interface UserBankQuestionRecordMapper extends BaseMapper<UserBankQuestionRecord> {
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserBankRecordMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.domain.UserBankRecord;
+
+/**
+ * 用户的做题历史Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+public interface UserBankRecordMapper extends BaseMapper<UserBankRecord> {
+
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserBankQuestionRecordService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.user.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.user.bo.UserBankQuestionRecordAddBo;
+import com.zhongzheng.modules.user.bo.UserBankQuestionRecordEditBo;
+import com.zhongzheng.modules.user.bo.UserBankQuestionRecordQueryBo;
+import com.zhongzheng.modules.user.domain.UserBankQuestionRecord;
+import com.zhongzheng.modules.user.vo.UserBankQuestionRecordVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户做的历史题库题目记录Service接口
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+public interface IUserBankQuestionRecordService extends IService<UserBankQuestionRecord> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	UserBankQuestionRecordVo queryById(Long replyId);
+
+	/**
+	 * 查询列表
+	 */
+	List<UserBankQuestionRecordVo> queryList(UserBankQuestionRecordQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入用户做的历史题库题目记录
+	 * @param bo 用户做的历史题库题目记录新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(UserBankQuestionRecordAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改用户做的历史题库题目记录
+	 * @param bo 用户做的历史题库题目记录编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(UserBankQuestionRecordEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserBankRecordService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.user.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.user.bo.UserBankRecordAddBo;
+import com.zhongzheng.modules.user.bo.UserBankRecordEditBo;
+import com.zhongzheng.modules.user.bo.UserBankRecordQueryBo;
+import com.zhongzheng.modules.user.domain.UserBankRecord;
+import com.zhongzheng.modules.user.vo.UserBankRecordVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户的做题历史Service接口
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+public interface IUserBankRecordService extends IService<UserBankRecord> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	UserBankRecordVo queryById(Long recordId);
+
+	/**
+	 * 查询列表
+	 */
+	List<UserBankRecordVo> queryList(UserBankRecordQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入用户的做题历史
+	 * @param bo 用户的做题历史新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(UserBankRecordAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改用户的做题历史
+	 * @param bo 用户的做题历史编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(UserBankRecordEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 104 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankQuestionRecordServiceImpl.java

@@ -0,0 +1,104 @@
+package com.zhongzheng.modules.user.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.user.bo.UserBankQuestionRecordAddBo;
+import com.zhongzheng.modules.user.bo.UserBankQuestionRecordEditBo;
+import com.zhongzheng.modules.user.bo.UserBankQuestionRecordQueryBo;
+import com.zhongzheng.modules.user.domain.UserBankQuestionRecord;
+import com.zhongzheng.modules.user.mapper.UserBankQuestionRecordMapper;
+import com.zhongzheng.modules.user.service.IUserBankQuestionRecordService;
+import com.zhongzheng.modules.user.vo.UserBankQuestionRecordVo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 用户做的历史题库题目记录Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Service
+public class UserBankQuestionRecordServiceImpl extends ServiceImpl<UserBankQuestionRecordMapper, UserBankQuestionRecord> implements IUserBankQuestionRecordService {
+
+    @Override
+    public UserBankQuestionRecordVo queryById(Long replyId){
+        UserBankQuestionRecord db = this.baseMapper.selectById(replyId);
+        return BeanUtil.toBean(db, UserBankQuestionRecordVo.class);
+    }
+
+    @Override
+    public List<UserBankQuestionRecordVo> queryList(UserBankQuestionRecordQueryBo bo) {
+        LambdaQueryWrapper<UserBankQuestionRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getRecordId() != null, UserBankQuestionRecord::getRecordId, bo.getRecordId());
+        lqw.eq(bo.getQuestionId() != null, UserBankQuestionRecord::getQuestionId, bo.getQuestionId());
+        lqw.eq(bo.getIsRight() != null, UserBankQuestionRecord::getIsRight, bo.getIsRight());
+        lqw.eq(bo.getBankId() != null, UserBankQuestionRecord::getBankId, bo.getBankId());
+        lqw.eq(StrUtil.isNotBlank(bo.getSelectIds()), UserBankQuestionRecord::getSelectIds, bo.getSelectIds());
+        lqw.eq(StrUtil.isNotBlank(bo.getReplyStr()), UserBankQuestionRecord::getReplyStr, bo.getReplyStr());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<UserBankQuestionRecordVo> entity2Vo(Collection<UserBankQuestionRecord> collection) {
+        List<UserBankQuestionRecordVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, UserBankQuestionRecordVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<UserBankQuestionRecord> page = (Page<UserBankQuestionRecord>)collection;
+            Page<UserBankQuestionRecordVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(UserBankQuestionRecordAddBo bo) {
+        UserBankQuestionRecord add = BeanUtil.toBean(bo, UserBankQuestionRecord.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(UserBankQuestionRecordEditBo bo) {
+        UserBankQuestionRecord update = BeanUtil.toBean(bo, UserBankQuestionRecord.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(UserBankQuestionRecord entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 102 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java

@@ -0,0 +1,102 @@
+package com.zhongzheng.modules.user.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.user.bo.UserBankRecordAddBo;
+import com.zhongzheng.modules.user.bo.UserBankRecordEditBo;
+import com.zhongzheng.modules.user.bo.UserBankRecordQueryBo;
+import com.zhongzheng.modules.user.domain.UserBankRecord;
+import com.zhongzheng.modules.user.mapper.UserBankRecordMapper;
+import com.zhongzheng.modules.user.service.IUserBankRecordService;
+import com.zhongzheng.modules.user.vo.UserBankRecordVo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 用户的做题历史Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Service
+public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper, UserBankRecord> implements IUserBankRecordService {
+
+    @Override
+    public UserBankRecordVo queryById(Long recordId){
+        UserBankRecord db = this.baseMapper.selectById(recordId);
+        return BeanUtil.toBean(db, UserBankRecordVo.class);
+    }
+
+    @Override
+    public List<UserBankRecordVo> queryList(UserBankRecordQueryBo bo) {
+        LambdaQueryWrapper<UserBankRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getType() != null, UserBankRecord::getType, bo.getType());
+        lqw.eq(bo.getSimulateId() != null, UserBankRecord::getSimulateId, bo.getSimulateId());
+        lqw.eq(bo.getExamId() != null, UserBankRecord::getExamId, bo.getExamId());
+        lqw.eq(bo.getBankId() != null, UserBankRecord::getBankId, bo.getBankId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<UserBankRecordVo> entity2Vo(Collection<UserBankRecord> collection) {
+        List<UserBankRecordVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, UserBankRecordVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<UserBankRecord> page = (Page<UserBankRecord>)collection;
+            Page<UserBankRecordVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(UserBankRecordAddBo bo) {
+        UserBankRecord add = BeanUtil.toBean(bo, UserBankRecord.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(UserBankRecordEditBo bo) {
+        UserBankRecord update = BeanUtil.toBean(bo, UserBankRecord.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(UserBankRecord entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserBankQuestionRecordVo.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户做的历史题库题目记录视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("用户做的历史题库题目记录视图对象")
+public class UserBankQuestionRecordVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long replyId;
+
+	/** 所属做题历史ID */
+	@Excel(name = "所属做题历史ID")
+	@ApiModelProperty("所属做题历史ID")
+	private Long recordId;
+	/** 题目ID */
+	@Excel(name = "题目ID")
+	@ApiModelProperty("题目ID")
+	private Long questionId;
+	/** 是否正确 1正确 0错误 */
+	@Excel(name = "是否正确 1正确 0错误")
+	@ApiModelProperty("是否正确 1正确 0错误")
+	private Long isRight;
+	/** 题库ID */
+	@Excel(name = "题库ID")
+	@ApiModelProperty("题库ID")
+	private Long bankId;
+	/** 所选ID拼接 */
+	@Excel(name = "所选ID拼接")
+	@ApiModelProperty("所选ID拼接")
+	private String selectIds;
+	/** 回复的json字符串 */
+	@Excel(name = "回复的json字符串")
+	@ApiModelProperty("回复的json字符串")
+	private String replyStr;
+
+}

+ 44 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserBankRecordVo.java

@@ -0,0 +1,44 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户的做题历史视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("用户的做题历史视图对象")
+public class UserBankRecordVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long recordId;
+
+	/** 1真题模拟考试 2试卷练习 3真题练习 */
+	@Excel(name = "1真题模拟考试 2试卷练习 3真题练习")
+	@ApiModelProperty("1真题模拟考试 2试卷练习 3真题练习")
+	private Long type;
+	/** 真题模拟ID */
+	@Excel(name = "真题模拟ID")
+	@ApiModelProperty("真题模拟ID")
+	private Long simulateId;
+	/** 试卷ID */
+	@Excel(name = "试卷ID")
+	@ApiModelProperty("试卷ID")
+	private Long examId;
+	/** 题库ID */
+	@Excel(name = "题库ID")
+	@ApiModelProperty("题库ID")
+	private Long bankId;
+
+}

+ 22 - 0
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionSimulateMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.bank.mapper.QuestionSimulateMapper">
+
+    <resultMap type="com.zhongzheng.modules.bank.domain.QuestionSimulate" id="QuestionSimulateResult">
+        <result property="simulateId" column="simulate_id"/>
+        <result property="userId" column="user_id"/>
+        <result property="examConfigId" column="exam_config_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="status" column="status"/>
+        <result property="type1Ids" column="type1_ids"/>
+        <result property="type2Ids" column="type2_ids"/>
+        <result property="type3Ids" column="type3_ids"/>
+        <result property="type4Ids" column="type4_ids"/>
+        <result property="bankId" column="bank_id"/>
+    </resultMap>
+
+
+</mapper>

+ 20 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserBankQuestionRecordMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.system.mapper.UserBankQuestionRecordMapper">
+
+    <resultMap type="com.zhongzheng.system.domain.UserBankQuestionRecord" id="UserBankQuestionRecordResult">
+        <result property="replyId" column="reply_id"/>
+        <result property="recordId" column="record_id"/>
+        <result property="questionId" column="question_id"/>
+        <result property="isRight" column="is_right"/>
+        <result property="bankId" column="bank_id"/>
+        <result property="selectIds" column="select_ids"/>
+        <result property="replyStr" column="reply_str"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>

+ 18 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserBankRecordMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.system.mapper.UserBankRecordMapper">
+
+    <resultMap type="com.zhongzheng.system.domain.UserBankRecord" id="UserBankRecordResult">
+        <result property="recordId" column="record_id"/>
+        <result property="type" column="type"/>
+        <result property="simulateId" column="simulate_id"/>
+        <result property="examId" column="exam_id"/>
+        <result property="bankId" column="bank_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>