he2802 преди 3 години
родител
ревизия
0ff1ade998
променени са 28 файла, в които са добавени 580 реда и са изтрити 44 реда
  1. 16 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java
  2. 6 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java
  3. 6 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java
  4. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleQueryBo.java
  5. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java
  6. 8 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseModuleVo.java
  7. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyGoodsAddBo.java
  8. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyUserAddBo.java
  9. 37 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyUserEditBo.java
  10. 44 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyUserQueryBo.java
  11. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamNumberGoodsQueryBo.java
  12. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamApplyUser.java
  13. 20 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamApplyUserMapper.java
  14. 54 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyUserService.java
  15. 21 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyGoodsServiceImpl.java
  16. 105 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyUserServiceImpl.java
  17. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplyUserVo.java
  18. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAddBo.java
  19. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsEditBo.java
  20. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsQueryBo.java
  21. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java
  22. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsVo.java
  23. 32 35
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  24. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleMapper.xml
  25. 14 1
      zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyGoodsMapper.xml
  26. 1 2
      zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyMapper.xml
  27. 40 0
      zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyUserMapper.xml
  28. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

+ 16 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java

@@ -6,7 +6,9 @@ import java.util.Arrays;
 import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
 import com.zhongzheng.modules.exam.service.IExamApplySiteService;
+import com.zhongzheng.modules.exam.service.IExamApplyUserService;
 import com.zhongzheng.modules.exam.vo.ExamApplySiteVo;
+import com.zhongzheng.modules.exam.vo.ExamApplyUserVo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -32,7 +34,7 @@ import io.swagger.annotations.ApiOperation;
 
 /**
  * 考试安排Controller
- * 
+ *
  * @author ruoyi
  * @date 2021-12-07
  */
@@ -48,6 +50,8 @@ public class ExamApplyController extends BaseController {
 
     private final IExamApplyGoodsService iExamApplyGoodsService;
 
+    private final IExamApplyUserService iExamApplyUserService;
+
     /**
      * 查询考试安排列表
      */
@@ -150,5 +154,16 @@ public class ExamApplyController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询考试配置绑定用户列表
+     */
+    @ApiOperation("查询考试配置绑定用户列表")
+    @PreAuthorize("@ss.hasPermi('system:goods:list')")
+    @GetMapping("/listUser")
+    public TableDataInfo<ExamApplyUserVo> listUser(ExamApplyUserQueryBo bo) {
+        startPage();
+        List<ExamApplyUserVo> list = iExamApplyUserService.listUser(bo);
+        return getDataTable(list);
+    }
 
 }

+ 6 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java

@@ -47,5 +47,10 @@ public class CourseModuleAddBo {
     private List<CourseModuleBusinessAddBo> businessList;
     @ApiModelProperty("章id列表")
     private List<CourseModuleChapterListAddBo> chapterIdList;
-
+    /** 题卷类型 1试卷 2章卷 3模块卷 */
+    @ApiModelProperty("题卷类型 1试卷 2章卷 3模块卷")
+    private Integer examType;
+    /** 赠送卷ID */
+    @ApiModelProperty("赠送卷ID")
+    private Long freeExamId;
 }

+ 6 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java

@@ -56,6 +56,11 @@ public class CourseModuleEditBo {
     @ApiModelProperty("章id列表")
     private List<CourseModuleChapterListAddBo> chapterIdList;
 
-
+    /** 题卷类型 1试卷 2章卷 3模块卷 */
+    @ApiModelProperty("题卷类型 1试卷 2章卷 3模块卷")
+    private Integer examType;
+    /** 赠送卷ID */
+    @ApiModelProperty("赠送卷ID")
+    private Long freeExamId;
 
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleQueryBo.java

@@ -66,4 +66,10 @@ public class CourseModuleQueryBo extends BaseEntity {
 	/** 科目id */
 	@ApiModelProperty("科目id")
 	private Long subjectId;
+	/** 题卷类型 1试卷 2章卷 3模块卷 */
+	@ApiModelProperty("题卷类型 1试卷 2章卷 3模块卷")
+	private Integer examType;
+	/** 赠送卷ID */
+	@ApiModelProperty("赠送卷ID")
+	private Long freeExamId;
 }

+ 4 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java

@@ -44,5 +44,8 @@ private static final long serialVersionUID=1L;
     private Integer status;
     /** 编码 */
     private String code;
-
+    /** 题卷类型 1试卷 2章卷 3模块卷 */
+    private Integer examType;
+    /** 赠送卷ID */
+    private Long freeExamId;
 }

+ 8 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseModuleVo.java

@@ -72,5 +72,12 @@ public class CourseModuleVo {
 	@ApiModelProperty("修改时间")
 	@Excel(name = "修改时间")
 	private Long updateTime;
-
+	/** 题卷类型 1试卷 2章卷 3模块卷 */
+	@Excel(name = "题卷类型 1试卷 2章卷 3模块卷")
+	@ApiModelProperty("题卷类型 1试卷 2章卷 3模块卷")
+	private Integer examType;
+	/** 赠送卷ID */
+	@Excel(name = "赠送卷ID")
+	@ApiModelProperty("赠送卷ID")
+	private Long freeExamId;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyGoodsAddBo.java

@@ -46,4 +46,7 @@ public class ExamApplyGoodsAddBo {
     /** 绑定商品*/
     @ApiModelProperty("绑定商品")
     private Long[] goodsId;
+
+    @ApiModelProperty("绑定用户ID")
+    private Long[] userId;
 }

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyUserAddBo.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 考试安排绑定用户添加对象 exam_apply_user
+ *
+ * @author hjl
+ * @date 2022-05-07
+ */
+@Data
+@ApiModel("考试安排绑定用户添加对象")
+public class ExamApplyUserAddBo {
+
+    /** 绑定考试安排ID */
+    @ApiModelProperty("绑定考试安排ID")
+    private Long applyId;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+}

+ 37 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyUserEditBo.java

@@ -0,0 +1,37 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 考试安排绑定用户编辑对象 exam_apply_user
+ *
+ * @author hjl
+ * @date 2022-05-07
+ */
+@Data
+@ApiModel("考试安排绑定用户编辑对象")
+public class ExamApplyUserEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 绑定考试安排ID */
+    @ApiModelProperty("绑定考试安排ID")
+    private Long applyId;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+}

+ 44 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyUserQueryBo.java

@@ -0,0 +1,44 @@
+package com.zhongzheng.modules.exam.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;
+
+/**
+ * 考试安排绑定用户分页查询对象 exam_apply_user
+ *
+ * @author hjl
+ * @date 2022-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("考试安排绑定用户分页查询对象")
+public class ExamApplyUserQueryBo 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 applyId;
+	/** 用户ID */
+	@ApiModelProperty("用户ID")
+	private Long userId;
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamNumberGoodsQueryBo.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Map;
 import java.util.HashMap;
@@ -69,4 +70,8 @@ public class ExamNumberGoodsQueryBo extends BaseEntity {
 	/** 查找key */
 	@ApiModelProperty("searchKey")
 	private String searchKey;
+
+	private Long subjectId;
+
+	private BigDecimal standPrice;
 }

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamApplyUser.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.exam.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;
+
+/**
+ * 考试安排绑定用户对象 exam_apply_user
+ *
+ * @author hjl
+ * @date 2022-05-07
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("exam_apply_user")
+public class ExamApplyUser implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 绑定考试安排ID */
+    private Long applyId;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 用户ID */
+    private Long userId;
+}

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamApplyUserMapper.java

@@ -0,0 +1,20 @@
+package com.zhongzheng.modules.exam.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.exam.bo.ExamApplyGoodsQueryBo;
+import com.zhongzheng.modules.exam.bo.ExamApplyUserQueryBo;
+import com.zhongzheng.modules.exam.domain.ExamApplyUser;
+import com.zhongzheng.modules.exam.vo.ExamApplyGoodsVo;
+import com.zhongzheng.modules.exam.vo.ExamApplyUserVo;
+
+import java.util.List;
+
+/**
+ * 考试安排绑定用户Mapper接口
+ *
+ * @author hjl
+ * @date 2022-05-07
+ */
+public interface ExamApplyUserMapper extends BaseMapper<ExamApplyUser> {
+    List<ExamApplyUserVo> listUser(ExamApplyUserQueryBo bo);
+}

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyUserService.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.modules.exam.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.exam.bo.ExamApplyUserAddBo;
+import com.zhongzheng.modules.exam.bo.ExamApplyUserEditBo;
+import com.zhongzheng.modules.exam.bo.ExamApplyUserQueryBo;
+import com.zhongzheng.modules.exam.domain.ExamApplyUser;
+import com.zhongzheng.modules.exam.vo.ExamApplyUserVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 考试安排绑定用户Service接口
+ *
+ * @author hjl
+ * @date 2022-05-07
+ */
+public interface IExamApplyUserService extends IService<ExamApplyUser> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	ExamApplyUserVo queryById(Long id);
+
+	List<ExamApplyUserVo> listUser(ExamApplyUserQueryBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<ExamApplyUserVo> queryList(ExamApplyUserQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入考试安排绑定用户
+	 * @param bo 考试安排绑定用户新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(ExamApplyUserAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改考试安排绑定用户
+	 * @param bo 考试安排绑定用户编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(ExamApplyUserEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 21 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyGoodsServiceImpl.java

@@ -3,8 +3,11 @@ package com.zhongzheng.modules.exam.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.course.domain.CourseChapterSection;
 import com.zhongzheng.modules.exam.domain.ExamApply;
+import com.zhongzheng.modules.exam.domain.ExamApplyUser;
 import com.zhongzheng.modules.exam.service.IExamApplyService;
+import com.zhongzheng.modules.exam.service.IExamApplyUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -21,6 +24,7 @@ import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -36,6 +40,9 @@ public class ExamApplyGoodsServiceImpl extends ServiceImpl<ExamApplyGoodsMapper,
     @Autowired
     private IExamApplyService examApplyService;
 
+    @Autowired
+    private IExamApplyUserService iExamApplyUserService;
+
     @Override
     public List<ExamApplyGoodsVo> listGoods(ExamApplyGoodsQueryBo bo) {
         return this.baseMapper.listGoods(bo);
@@ -123,6 +130,7 @@ public class ExamApplyGoodsServiceImpl extends ServiceImpl<ExamApplyGoodsMapper,
         LambdaQueryWrapper<ExamApplyGoods> lqw = Wrappers.lambdaQuery();
         lqw.eq(ExamApplyGoods::getApplyId, bo.getApplyId());
         this.remove(lqw);
+        Collection<ExamApplyGoods> coll = new HashSet<>();
         //添加计划的商品
         for (Long goodsId : bo.getGoodsId()) {
             ExamApplyGoods add = new ExamApplyGoods();
@@ -130,8 +138,20 @@ public class ExamApplyGoodsServiceImpl extends ServiceImpl<ExamApplyGoodsMapper,
             add.setUpdateTime(DateUtils.getNowTime());
             add.setApplyId(bo.getApplyId());
             add.setGoodsId(goodsId);
-            this.save(add);
+            coll.add(add);
+        }
+        saveBatch(coll);
+        iExamApplyUserService.remove(new LambdaQueryWrapper<ExamApplyUser>().eq(ExamApplyUser::getApplyId, bo.getApplyId()));
+        Collection<ExamApplyUser> coll2 = new HashSet<>();
+        for(Long userId : bo.getUserId()){
+            ExamApplyUser add = new ExamApplyUser();
+            add.setApplyId(bo.getApplyId());
+            add.setUserId(userId);
+            add.setCreateTime(DateUtils.getNowTime());
+            add.setUpdateTime(DateUtils.getNowTime());
+            coll2.add(add);
         }
+        iExamApplyUserService.saveBatch(coll2);
         return true;
     }
 }

+ 105 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyUserServiceImpl.java

@@ -0,0 +1,105 @@
+package com.zhongzheng.modules.exam.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.exam.bo.ExamApplyUserAddBo;
+import com.zhongzheng.modules.exam.bo.ExamApplyUserEditBo;
+import com.zhongzheng.modules.exam.bo.ExamApplyUserQueryBo;
+import com.zhongzheng.modules.exam.domain.ExamApplyUser;
+import com.zhongzheng.modules.exam.mapper.ExamApplyUserMapper;
+import com.zhongzheng.modules.exam.service.IExamApplyUserService;
+import com.zhongzheng.modules.exam.vo.ExamApplyUserVo;
+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 hjl
+ * @date 2022-05-07
+ */
+@Service
+public class ExamApplyUserServiceImpl extends ServiceImpl<ExamApplyUserMapper, ExamApplyUser> implements IExamApplyUserService {
+
+    @Override
+    public ExamApplyUserVo queryById(Long id){
+        ExamApplyUser db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, ExamApplyUserVo.class);
+    }
+
+    @Override
+    public List<ExamApplyUserVo> listUser(ExamApplyUserQueryBo bo) {
+        return baseMapper.listUser(bo);
+    }
+
+    @Override
+    public List<ExamApplyUserVo> queryList(ExamApplyUserQueryBo bo) {
+        LambdaQueryWrapper<ExamApplyUser> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getApplyId() != null, ExamApplyUser::getApplyId, bo.getApplyId());
+        lqw.eq(bo.getUserId() != null, ExamApplyUser::getUserId, bo.getUserId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<ExamApplyUserVo> entity2Vo(Collection<ExamApplyUser> collection) {
+        List<ExamApplyUserVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, ExamApplyUserVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<ExamApplyUser> page = (Page<ExamApplyUser>)collection;
+            Page<ExamApplyUserVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(ExamApplyUserAddBo bo) {
+        ExamApplyUser add = BeanUtil.toBean(bo, ExamApplyUser.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(ExamApplyUserEditBo bo) {
+        ExamApplyUser update = BeanUtil.toBean(bo, ExamApplyUser.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(ExamApplyUser entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplyUserVo.java

@@ -0,0 +1,43 @@
+package com.zhongzheng.modules.exam.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 hjl
+ * @date 2022-05-07
+ */
+@Data
+@ApiModel("考试安排绑定用户视图对象")
+public class ExamApplyUserVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 绑定考试安排ID */
+	@Excel(name = "绑定考试安排ID")
+	@ApiModelProperty("绑定考试安排ID")
+	private Long applyId;
+	/** 用户ID */
+	@Excel(name = "用户ID")
+	@ApiModelProperty("用户ID")
+	private Long userId;
+	/** 真实姓名 */
+	@cn.afterturn.easypoi.excel.annotation.Excel(name = "真实姓名")
+	@ApiModelProperty("真实姓名")
+	private String realname;
+	/** 身份证号 */
+	@cn.afterturn.easypoi.excel.annotation.Excel(name = "身份证号")
+	@ApiModelProperty("身份证号")
+	private String idCard;
+}

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAddBo.java

@@ -150,4 +150,11 @@ public class GoodsAddBo {
     /** 每天最大节学习数量 */
     @ApiModelProperty("每天最大节学习数量")
     private Long sectionMaxNum;
+
+    /** 考试次数 */
+    @ApiModelProperty("考试次数")
+    private Long examNumber;
+    /** 前培次数 */
+    @ApiModelProperty("前培次数")
+    private Long doNumber;
 }

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsEditBo.java

@@ -179,4 +179,11 @@ public class GoodsEditBo {
     /** 每天最大节学习数量 */
     @ApiModelProperty("每天最大节学习数量")
     private Long sectionMaxNum;
+
+    /** 考试次数 */
+    @ApiModelProperty("考试次数")
+    private Long examNumber;
+    /** 前培次数 */
+    @ApiModelProperty("前培次数")
+    private Long doNumber;
 }

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsQueryBo.java

@@ -157,4 +157,11 @@ GoodsQueryBo extends BaseEntity {
 
 	@ApiModelProperty("排序模式 1默认 2价格从低到高 3价格从高到低")
 	private Integer sortType;
+
+	/** 考试次数 */
+	@ApiModelProperty("考试次数")
+	private Long examNumber;
+	/** 前培次数 */
+	@ApiModelProperty("前培次数")
+	private Long doNumber;
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java

@@ -121,4 +121,9 @@ private static final long serialVersionUID=1L;
 
     /** 每天最大节学习数量 */
     private Long sectionMaxNum;
+
+    /** 考试次数 */
+    private Long examNumber;
+    /** 前培次数 */
+    private Long doNumber;
 }

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsVo.java

@@ -261,4 +261,13 @@ public class GoodsVo {
 
 	@ApiModelProperty("班级名称")
 	private String gradeName;
+
+	/** 考试次数 */
+	@Excel(name = "考试次数")
+	@ApiModelProperty("考试次数")
+	private Long examNumber;
+	/** 前培次数 */
+	@Excel(name = "前培次数")
+	@ApiModelProperty("前培次数")
+	private Long doNumber;
 }

+ 32 - 35
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -321,7 +321,7 @@ public class WxPayServiceImpl implements IWxPayService {
                     ServletUtils.getRequestAttributes().getResponse().setHeader("TenantId", TenantId);
 
                     OrderPay orderPay = iOrderPayService.getOne(new LambdaQueryWrapper<OrderPay>().eq(OrderPay::getPaySn, out_trade_no));
-                    if(Validator.isNotEmpty(orderPay)){
+                    if (Validator.isNotEmpty(orderPay)) {
                         String orderSn = orderPay.getOrderSn();
                         orderPay.setTransid(transaction_id);
                         orderPay.setStatus(1);
@@ -456,9 +456,9 @@ public class WxPayServiceImpl implements IWxPayService {
         try {
             WXPay wxpay = new WXPay(config);
             Map<String, String> reqData = new HashMap<>();
-            reqData.put("out_trade_no",out_trade_no);
+            reqData.put("out_trade_no", out_trade_no);
             wxpay.closeOrder(reqData);
-        }catch (Exception e) {
+        } catch (Exception e) {
 
         }
         return true;
@@ -469,38 +469,35 @@ public class WxPayServiceImpl implements IWxPayService {
         GoodsVo goodsVo = iGoodsService.queryById(g.getGoodsId());
         //添加商品考试次数和补考次数
         if (goodsVo.getGoodsType().equals(1)) {
-            if (userExamGoodsService.queryExamGoods(goodsVo.getGoodsId(), order.getUserId()) < 1) {
-                ExamNumber examNumber = userExamGoodsService.queryExam(goodsVo.getGoodsId());
-                if ( Validator.isNotEmpty(examNumber)) {
-                    UserExamGoods add = new UserExamGoods();
-                    add.setGoodsId(g.getGoodsId());
-                    add.setUserId(order.getUserId());
-                    add.setExamNumber(examNumber.getExamNumber());
-                    add.setDoNumber(examNumber.getDoNumber());
-                    add.setCreateTime(DateUtils.getNowTime());
-                    add.setUpdateTime(DateUtils.getNowTime());
-                    add.setOrderGoodsId(g.getOrderGoodsId());
-                    userExamGoodsService.save(add);
-                    UserExamGoodsSupplementAddBo userExamGoodsSupplementAddBo = new UserExamGoodsSupplementAddBo();
-                    userExamGoodsSupplementAddBo.setGoodsId(goodsVo.getGoodsId());
-                    userExamGoodsSupplementAddBo.setUserExamGoodsId(add.getUserExamGoodsId());
-                    userExamGoodsSupplementAddBo.setExamNumber(examNumber.getExamNumber());
-                    userExamGoodsSupplementAddBo.setDoNumber(examNumber.getDoNumber());
-                    userExamGoodsSupplementAddBo.setStatus(3);
-                    userExamGoodsSupplementAddBo.setOrderGoodsId(g.getOrderGoodsId());
-                    userExamGoodsSupplementService.insertByAddBo(userExamGoodsSupplementAddBo);
-                } else {
-                    //默认生成一条,避免商品以后才配置考试次数
-                    UserExamGoods add = new UserExamGoods();
-                    add.setGoodsId(g.getGoodsId());
-                    add.setUserId(order.getUserId());
-                    add.setExamNumber(0L);
-                    add.setDoNumber(0L);
-                    add.setCreateTime(DateUtils.getNowTime());
-                    add.setUpdateTime(DateUtils.getNowTime());
-                    add.setOrderGoodsId(g.getOrderGoodsId());
-                    userExamGoodsService.save(add);
-                }
+            if (goodsVo.getExamNumber() > 0 || goodsVo.getDoNumber() > 0) {
+                UserExamGoods add = new UserExamGoods();
+                add.setGoodsId(g.getGoodsId());
+                add.setUserId(order.getUserId());
+                add.setExamNumber(goodsVo.getExamNumber());
+                add.setDoNumber(goodsVo.getDoNumber());
+                add.setCreateTime(DateUtils.getNowTime());
+                add.setUpdateTime(DateUtils.getNowTime());
+                add.setOrderGoodsId(g.getOrderGoodsId());
+                userExamGoodsService.save(add);
+                UserExamGoodsSupplementAddBo userExamGoodsSupplementAddBo = new UserExamGoodsSupplementAddBo();
+                userExamGoodsSupplementAddBo.setGoodsId(goodsVo.getGoodsId());
+                userExamGoodsSupplementAddBo.setUserExamGoodsId(add.getUserExamGoodsId());
+                userExamGoodsSupplementAddBo.setExamNumber(goodsVo.getExamNumber());
+                userExamGoodsSupplementAddBo.setDoNumber(goodsVo.getDoNumber());
+                userExamGoodsSupplementAddBo.setStatus(3);
+                userExamGoodsSupplementAddBo.setOrderGoodsId(g.getOrderGoodsId());
+                userExamGoodsSupplementService.insertByAddBo(userExamGoodsSupplementAddBo);
+            } else {
+                //默认生成一条,避免商品以后才配置考试次数
+                UserExamGoods add = new UserExamGoods();
+                add.setGoodsId(g.getGoodsId());
+                add.setUserId(order.getUserId());
+                add.setExamNumber(0L);
+                add.setDoNumber(0L);
+                add.setCreateTime(DateUtils.getNowTime());
+                add.setUpdateTime(DateUtils.getNowTime());
+                add.setOrderGoodsId(g.getOrderGoodsId());
+                userExamGoodsService.save(add);
             }
         }
         //增加前培次数

+ 4 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleMapper.xml

@@ -14,6 +14,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime" column="update_time"/>
         <result property="status" column="status"/>
         <result property="code" column="code"/>
+        <result property="examType" column="exam_type"/>
+        <result property="freeExamId" column="free_exam_id"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.course.vo.CourseModuleVo" id="CourseModuleResultVo">
@@ -29,6 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="durationTime" column="duration_time"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
+        <result property="examType" column="exam_type"/>
+        <result property="freeExamId" column="free_exam_id"/>
         <collection property="businessList" column="module_id" select="findBusinessList" />
         <collection property="courseList" column="module_id" select="findCourseList"/>
     </resultMap>

+ 14 - 1
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyGoodsMapper.xml

@@ -28,9 +28,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE
         1=1
         AND g.STATUS IN ( 1 )
+        AND g.goods_type = 1
         <if test="applyId != null and applyId != ''">
             and  eg.apply_id = #{applyId}
         </if>
-
+        <if test="subjectId != null and subjectId >0">
+        AND (SELECT count(*) from goods_course gc LEFT JOIN course c ON gc.course_id = c.course_id where gc.goods_id = g.goods_id and c.`status` = 1
+        AND c.subject_id = #{subjectId}) >0
+        </if>
+        <if test="businessId != null and businessId != ''">
+            AND g.business_id = #{businessId}
+        </if>
+        <if test="searchKey != null and searchKey != ''">
+            and (g.goods_name like concat('%', #{searchKey}, '%'))
+        </if>
+        <if test="standPrice != null and standPrice != ''">
+            AND g.stand_price = #{standPrice}
+        </if>
     </select>
 </mapper>

+ 1 - 2
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyMapper.xml

@@ -93,13 +93,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         goods_name,
         CODE,
         stand_price,
-        (case WHEN (SELECT COUNT(ea.apply_id) FROM exam_apply ea LEFT JOIN exam_apply_goods eag on ea.apply_id =eag.apply_id where 1=1 and eag.goods_id = g.goods_id and ea.status in (0,1)) >0 then 0 ELSE 1 end) as goods_status
+        1 as goods_status
         FROM
         goods g
         WHERE
         1 = 1
         and g.status in(1)
-        and (SELECT COUNT(eng.id) FROM exam_number_goods eng LEFT JOIN exam_number en on eng.exam_number_id = en.exam_number_id where eng.goods_id =g.goods_id and en.`status` = 1) > 0
         <if test="businessId != null and businessId != ''">
             and g.business_id = #{businessId}
         </if>

+ 40 - 0
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyUserMapper.xml

@@ -0,0 +1,40 @@
+<?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.exam.mapper.ExamApplyUserMapper">
+
+    <resultMap type="com.zhongzheng.modules.exam.domain.ExamApplyUser" id="ExamApplyUserResult">
+        <result property="id" column="id"/>
+        <result property="applyId" column="apply_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="userId" column="user_id"/>
+    </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.exam.vo.ExamApplyUserVo" id="ExamApplyUserVoResult">
+        <result property="id" column="id"/>
+        <result property="applyId" column="apply_id"/>
+        <result property="userId" column="user_id"/>
+        <result property="realname" column="realname"/>
+        <result property="idCard" column="id_card"/>
+    </resultMap>
+
+
+    <select id="listUser" parameterType="com.zhongzheng.modules.exam.bo.ExamApplyUserQueryBo" resultMap="ExamApplyUserVoResult">
+        SELECT
+        eu.apply_id,
+        u.realname,
+        u.id_card,
+        u.user_id
+        FROM
+        exam_apply_user eu
+        LEFT JOIN `user` u ON eu.user_id = u.user_id
+        WHERE
+        1=1
+        <if test="applyId != null and applyId != ''">
+            and  eu.apply_id = #{applyId}
+        </if>
+
+    </select>
+</mapper>

+ 4 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -44,6 +44,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="serviceTimeType" column="service_time_type"/>
         <result property="serviceTimeNum" column="service_time_num"/>
         <result property="sectionMaxNum" column="section_max_num"/>
+        <result property="examNumber" column="exam_number"/>
+        <result property="doNumber" column="do_number"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.goods.vo.GoodsVo" id="GoodsResultVo">
@@ -106,6 +108,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="gradeNum" column="grade_num"/>
         <result property="gradeId" column="grade_id"/>
         <result property="gradeName" column="grade_name"/>
+        <result property="examNumber" column="exam_number"/>
+        <result property="doNumber" column="do_number"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo" id="ExamNumberGoodsVoResult">