Browse Source

fix 证书

he2802 3 years ago
parent
commit
76a0a94f76
15 changed files with 711 additions and 27 deletions
  1. 112 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserCertificateController.java
  2. 22 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/TestController.java
  3. 2 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java
  4. 7 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java
  5. 65 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateAddBo.java
  6. 74 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateEditBo.java
  7. 77 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateQueryBo.java
  8. 59 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserCertificate.java
  9. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserCertificateMapper.java
  10. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserCertificateService.java
  11. 106 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserCertificateServiceImpl.java
  12. 67 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserCertificateVo.java
  13. 23 20
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  14. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  15. 27 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserCertificateMapper.xml

+ 112 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserCertificateController.java

@@ -0,0 +1,112 @@
+package com.zhongzheng.controller.user;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.modules.user.bo.UserCertificateAddBo;
+import com.zhongzheng.modules.user.bo.UserCertificateEditBo;
+import com.zhongzheng.modules.user.bo.UserCertificateQueryBo;
+import com.zhongzheng.modules.user.service.IUserCertificateService;
+import com.zhongzheng.modules.user.vo.UserCertificateVo;
+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 hjl
+ * @date 2022-02-17
+ */
+@Api(value = "用户证书控制器", tags = {"用户证书管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/user/certificate")
+public class UserCertificateController extends BaseController {
+
+    private final IUserCertificateService iUserCertificateService;
+
+    /**
+     * 查询用户证书列表
+     */
+    @ApiOperation("查询用户证书列表")
+    @PreAuthorize("@ss.hasPermi('system:certificate:list')")
+    @GetMapping("/list")
+    public TableDataInfo<UserCertificateVo> list(UserCertificateQueryBo bo) {
+        startPage();
+        List<UserCertificateVo> list = iUserCertificateService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出用户证书列表
+     */
+   /* @ApiOperation("导出用户证书列表")
+    @PreAuthorize("@ss.hasPermi('system:certificate:export')")
+    @Log(title = "用户证书", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<UserCertificateVo> export(UserCertificateQueryBo bo) {
+        List<UserCertificateVo> list = iUserCertificateService.queryList(bo);
+        ExcelUtil<UserCertificateVo> util = new ExcelUtil<UserCertificateVo>(UserCertificateVo.class);
+        return util.exportExcel(list, "用户证书");
+    }*/
+
+    /**
+     * 获取用户证书详细信息
+     */
+    @ApiOperation("获取用户证书详细信息")
+    @PreAuthorize("@ss.hasPermi('system:certificate:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<UserCertificateVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iUserCertificateService.queryById(id));
+    }
+
+    /**
+     * 新增用户证书
+     */
+   /* @ApiOperation("新增用户证书")
+    @PreAuthorize("@ss.hasPermi('system:certificate:add')")
+    @Log(title = "用户证书", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody UserCertificateAddBo bo) {
+        return toAjax(iUserCertificateService.insertByAddBo(bo) ? 1 : 0);
+    }*/
+
+    /**
+     * 修改用户证书
+     */
+   /* @ApiOperation("修改用户证书")
+    @PreAuthorize("@ss.hasPermi('system:certificate:edit')")
+    @Log(title = "用户证书", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody UserCertificateEditBo bo) {
+        return toAjax(iUserCertificateService.updateByEditBo(bo) ? 1 : 0);
+    }*/
+
+    /**
+     * 删除用户证书
+     */
+   /* @ApiOperation("删除用户证书")
+    @PreAuthorize("@ss.hasPermi('system:certificate:remove')")
+    @Log(title = "用户证书" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult<Void> remove(@PathVariable Long[] ids) {
+        return toAjax(iUserCertificateService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }*/
+}

+ 22 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/TestController.java

@@ -1,9 +1,21 @@
 package com.zhongzheng.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.order.domain.Order;
+import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.user.bo.UserExamGoodsQueryBo;
+import com.zhongzheng.modules.user.bo.UserExamGoodsSupplementAddBo;
+import com.zhongzheng.modules.user.domain.UserExamGoods;
+import com.zhongzheng.modules.user.service.IUserExamGoodsService;
+import com.zhongzheng.modules.user.service.IUserExamGoodsSupplementService;
+import com.zhongzheng.modules.user.vo.UserExamGoodsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,6 +32,15 @@ import java.util.Map;
 @RequestMapping("/v1/test")
 public class TestController extends BaseController
 {
+    @Autowired
+    private IUserExamGoodsSupplementService userExamGoodsSupplementService;
+
+    @Autowired
+    private IUserExamGoodsService userExamGoodsService;
+
+    @Autowired
+    private IGoodsService iGoodsService;
+
     private final static Map<Integer, String> users = new LinkedHashMap<Integer, String>();
     {
         users.put(1, "123456");
@@ -30,6 +51,7 @@ public class TestController extends BaseController
     @GetMapping("/list")
     public AjaxResult userList()
     {
+
         List<String> userList = new ArrayList<String>(users.values());
         return AjaxResult.success(userList);
     }

+ 2 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java

@@ -31,7 +31,7 @@ import java.util.List;
 
 /**
  * 考试安排Controller
- * 
+ *
  * @author ruoyi
  * @date 2021-12-07
  */
@@ -70,7 +70,7 @@ public class ExamApplyController extends BaseController {
     @GetMapping("/subscribeNext")
     public AjaxResult<Long> subscribeNext(ExamApplyQueryBo bo) {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
-        bo.setUserId(18L);
+        bo.setUserId(loginUser.getUser().getUserId());
         Long count = iExamApplyService.subscribeNext(bo);
         return AjaxResult.success(count);
     }

+ 7 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java

@@ -128,13 +128,15 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
                     vo.setCode("XYZC21011234");
                     vo.setRealname("李盛仁");
                     vo.setIdCard("445224199901040003");
-                    vo.setYear("2021");
+                    String date = DateUtils.timestampToDate(goodsVo.getCreateTime());
+                    vo.setYear(date.substring(0, 4));
                     vo.setType("专业");
                     vo.setMajor("网络班");
-                    vo.setClassHours("42");
-                    vo.setDateY("2022");
-                    vo.setDateM("2");
-                    vo.setDateD("16");
+                    vo.setClassHours(goodsVo.getClassHours()+"");
+
+                    vo.setDateY(date.substring(0, 4));
+                    vo.setDateM(date.substring(5, 2));
+                    vo.setDateD(date.substring(7, 2));
                     List<String> chapterList = new ArrayList<>();
                     chapterList.add("①.绿色施工");
                     chapterList.add("②.绿色施工");

+ 65 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateAddBo.java

@@ -0,0 +1,65 @@
+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_certificate
+ *
+ * @author hjl
+ * @date 2022-02-17
+ */
+@Data
+@ApiModel("用户证书添加对象")
+public class UserCertificateAddBo {
+
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+    /** 班级ID */
+    @ApiModelProperty("班级ID")
+    private Long gradeId;
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+    /** 模板ID */
+    @ApiModelProperty("模板ID")
+    private Long certificateTpId;
+    /** 模板编号 */
+    @ApiModelProperty("模板编号")
+    private String certificateCode;
+    /** 培训开始时间 */
+    @ApiModelProperty("培训开始时间")
+    private Long trainStartTime;
+    /** 培训结束时间 */
+    @ApiModelProperty("培训结束时间")
+    private Long trainEndTime;
+    /** 学时 */
+    @ApiModelProperty("学时")
+    private Long classHours;
+    /** 证书图片地址 */
+    @ApiModelProperty("证书图片地址")
+    private String certificatePath;
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationTypeId;
+
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+
+    /** 项目ID */
+    @ApiModelProperty("项目ID")
+    private Long projectId;
+}

+ 74 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateEditBo.java

@@ -0,0 +1,74 @@
+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_certificate
+ *
+ * @author hjl
+ * @date 2022-02-17
+ */
+@Data
+@ApiModel("用户证书编辑对象")
+public class UserCertificateEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 用户ID */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+    /** 班级ID */
+    @ApiModelProperty("班级ID")
+    private Long gradeId;
+
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+    /** 模板ID */
+    @ApiModelProperty("模板ID")
+    private Long certificateTpId;
+
+    /** 模板编号 */
+    @ApiModelProperty("模板编号")
+    private String certificateCode;
+
+    /** 培训开始时间 */
+    @ApiModelProperty("培训开始时间")
+    private Long trainStartTime;
+
+    /** 培训结束时间 */
+    @ApiModelProperty("培训结束时间")
+    private Long trainEndTime;
+
+    /** 学时 */
+    @ApiModelProperty("学时")
+    private Long classHours;
+    /** 证书图片地址 */
+    @ApiModelProperty("证书图片地址")
+    private String certificatePath;
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationTypeId;
+
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+
+    /** 项目ID */
+    @ApiModelProperty("项目ID")
+    private Long projectId;
+}

+ 77 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateQueryBo.java

@@ -0,0 +1,77 @@
+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_certificate
+ *
+ * @author hjl
+ * @date 2022-02-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("用户证书分页查询对象")
+public class UserCertificateQueryBo 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 gradeId;
+	/** 商品ID */
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+	/** 模板ID */
+	@ApiModelProperty("模板ID")
+	private Long certificateTpId;
+	/** 模板编号 */
+	@ApiModelProperty("模板编号")
+	private String certificateCode;
+	/** 培训开始时间 */
+	@ApiModelProperty("培训开始时间")
+	private Long trainStartTime;
+	/** 培训结束时间 */
+	@ApiModelProperty("培训结束时间")
+	private Long trainEndTime;
+	/** 学时 */
+	@ApiModelProperty("学时")
+	private Long classHours;
+	/** 证书图片地址 */
+	@ApiModelProperty("证书图片地址")
+	private String certificatePath;
+	/** 教育类型id */
+	@ApiModelProperty("教育类型id")
+	private Long educationTypeId;
+
+	/** 业务层次id */
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+
+	/** 项目ID */
+	@ApiModelProperty("项目ID")
+	private Long projectId;
+}

+ 59 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserCertificate.java

@@ -0,0 +1,59 @@
+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_certificate
+ *
+ * @author hjl
+ * @date 2022-02-17
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("user_certificate")
+public class UserCertificate implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 用户ID */
+    private Long userId;
+    /** 班级ID */
+    private Long gradeId;
+    /** 商品ID */
+    private Long goodsId;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 模板ID */
+    private Long certificateTpId;
+    /** 模板编号 */
+    private String certificateCode;
+    /** 培训开始时间 */
+    private Long trainStartTime;
+    /** 培训结束时间 */
+    private Long trainEndTime;
+    /** 学时 */
+    private Long classHours;
+    /** 证书图片地址 */
+    private String certificatePath;
+    /** 教育类型id */
+    private Long educationTypeId;
+    /** 业务层次id */
+    private Long businessId;
+    /** 项目ID */
+    private Long projectId;
+}

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

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.domain.UserCertificate;
+
+/**
+ * 用户证书Mapper接口
+ *
+ * @author hjl
+ * @date 2022-02-17
+ */
+public interface UserCertificateMapper extends BaseMapper<UserCertificate> {
+
+}

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

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.user.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.user.bo.UserCertificateAddBo;
+import com.zhongzheng.modules.user.bo.UserCertificateEditBo;
+import com.zhongzheng.modules.user.bo.UserCertificateQueryBo;
+import com.zhongzheng.modules.user.domain.UserCertificate;
+import com.zhongzheng.modules.user.vo.UserCertificateVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户证书Service接口
+ *
+ * @author hjl
+ * @date 2022-02-17
+ */
+public interface IUserCertificateService extends IService<UserCertificate> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	UserCertificateVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<UserCertificateVo> queryList(UserCertificateQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入用户证书
+	 * @param bo 用户证书新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(UserCertificateAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改用户证书
+	 * @param bo 用户证书编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(UserCertificateEditBo 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/user/service/impl/UserCertificateServiceImpl.java

@@ -0,0 +1,106 @@
+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.UserCertificateAddBo;
+import com.zhongzheng.modules.user.bo.UserCertificateEditBo;
+import com.zhongzheng.modules.user.bo.UserCertificateQueryBo;
+import com.zhongzheng.modules.user.domain.UserCertificate;
+import com.zhongzheng.modules.user.mapper.UserCertificateMapper;
+import com.zhongzheng.modules.user.service.IUserCertificateService;
+import com.zhongzheng.modules.user.vo.UserCertificateVo;
+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-02-17
+ */
+@Service
+public class UserCertificateServiceImpl extends ServiceImpl<UserCertificateMapper, UserCertificate> implements IUserCertificateService {
+
+    @Override
+    public UserCertificateVo queryById(Long id){
+        UserCertificate db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, UserCertificateVo.class);
+    }
+
+    @Override
+    public List<UserCertificateVo> queryList(UserCertificateQueryBo bo) {
+        LambdaQueryWrapper<UserCertificate> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, UserCertificate::getUserId, bo.getUserId());
+        lqw.eq(bo.getGradeId() != null, UserCertificate::getGradeId, bo.getGradeId());
+        lqw.eq(bo.getGoodsId() != null, UserCertificate::getGoodsId, bo.getGoodsId());
+        lqw.eq(bo.getCertificateTpId() != null, UserCertificate::getCertificateTpId, bo.getCertificateTpId());
+        lqw.eq(StrUtil.isNotBlank(bo.getCertificateCode()), UserCertificate::getCertificateCode, bo.getCertificateCode());
+        lqw.eq(bo.getTrainStartTime() != null, UserCertificate::getTrainStartTime, bo.getTrainStartTime());
+        lqw.eq(bo.getTrainEndTime() != null, UserCertificate::getTrainEndTime, bo.getTrainEndTime());
+        lqw.eq(bo.getClassHours() != null, UserCertificate::getClassHours, bo.getClassHours());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<UserCertificateVo> entity2Vo(Collection<UserCertificate> collection) {
+        List<UserCertificateVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, UserCertificateVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<UserCertificate> page = (Page<UserCertificate>)collection;
+            Page<UserCertificateVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(UserCertificateAddBo bo) {
+        UserCertificate add = BeanUtil.toBean(bo, UserCertificate.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(UserCertificateEditBo bo) {
+        UserCertificate update = BeanUtil.toBean(bo, UserCertificate.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(UserCertificate entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 67 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserCertificateVo.java

@@ -0,0 +1,67 @@
+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 hjl
+ * @date 2022-02-17
+ */
+@Data
+@ApiModel("用户证书视图对象")
+public class UserCertificateVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 用户ID */
+	@Excel(name = "用户ID")
+	@ApiModelProperty("用户ID")
+	private Long userId;
+	/** 班级ID */
+	@Excel(name = "班级ID")
+	@ApiModelProperty("班级ID")
+	private Long gradeId;
+	/** 商品ID */
+	@Excel(name = "商品ID")
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+	/** 模板ID */
+	@Excel(name = "模板ID")
+	@ApiModelProperty("模板ID")
+	private Long certificateTpId;
+	/** 模板编号 */
+	@Excel(name = "模板编号")
+	@ApiModelProperty("模板编号")
+	private String certificateCode;
+	/** 培训开始时间 */
+	@Excel(name = "培训开始时间")
+	@ApiModelProperty("培训开始时间")
+	private Long trainStartTime;
+	/** 培训结束时间 */
+	@Excel(name = "培训结束时间")
+	@ApiModelProperty("培训结束时间")
+	private Long trainEndTime;
+	/** 学时 */
+	@Excel(name = "学时")
+	@ApiModelProperty("学时")
+	private Long classHours;
+	/** 证书图片地址 */
+	@Excel(name = "证书图片地址")
+	@ApiModelProperty("证书图片地址")
+	private String certificatePath;
+	/** 项目ID */
+	@Excel(name = "项目ID")
+	@ApiModelProperty("项目ID")
+	private Long projectId;
+}

+ 23 - 20
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -335,7 +335,7 @@ public class WxPayServiceImpl  implements IWxPayService {
                     g.setPayStatus(OrderGoods.PAY_FULL);
                     g.setGoodsReceived(g.getGoodsRealPrice());
                     iOrderGoodsService.updateById(g);
-                    this.joinLockGrade(order.getOrderSn(),g.getGoodsId(),g.getOrderGoodsId());
+                    joinLockGrade(order.getOrderSn(),g.getGoodsId(),g.getOrderGoodsId());
                     //给用户增加商品考试次数前培次数
                     updateUserExamGoods(g,order);
                 }
@@ -416,26 +416,29 @@ public class WxPayServiceImpl  implements IWxPayService {
     //加入锁定班级
     @Override
     public boolean joinLockGrade(String orderSn,Long goodsId,Long orderGoodsId){
-        LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
-        lqwLock.eq(ClassGradeUserTemp::getOrderSn,orderSn);
-        lqwLock.eq(ClassGradeUserTemp::getGoodsId,goodsId);
-        ClassGradeUserTemp classGradeUserTemp = iClassGradeUserTempService.getOne(lqwLock);
-        if(classGradeUserTemp!=null&&classGradeUserTemp.getStatus()==ClassGradeUserTemp.STATUS_LOCK){
-            classGradeUserTemp.setStatus(ClassGradeUserTemp.STATUS_USE); //
-            classGradeUserTemp.setUpdateTime(DateUtils.getNowTime());
-            iClassGradeUserTempService.updateById(classGradeUserTemp);//关闭锁定状态
-            iOrderService.joinGrade(orderGoodsId,classGradeUserTemp.getGradeId(),classGradeUserTemp.getUserId());
+        GoodsVo goodsVo = iGoodsService.queryById(goodsId);
+        if(goodsVo.getGoodsType().equals(1L)){
+            LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
+            lqwLock.eq(ClassGradeUserTemp::getOrderSn,orderSn);
+            lqwLock.eq(ClassGradeUserTemp::getGoodsId,goodsId);
+            ClassGradeUserTemp classGradeUserTemp = iClassGradeUserTempService.getOne(lqwLock);
+            if(classGradeUserTemp!=null&&classGradeUserTemp.getStatus()==ClassGradeUserTemp.STATUS_LOCK){
+                classGradeUserTemp.setStatus(ClassGradeUserTemp.STATUS_USE); //
+                classGradeUserTemp.setUpdateTime(DateUtils.getNowTime());
+                iClassGradeUserTempService.updateById(classGradeUserTemp);//关闭锁定状态
+                iOrderService.joinGrade(orderGoodsId,classGradeUserTemp.getGradeId(),classGradeUserTemp.getUserId());
+            }
+            //记录消耗一次学习机会
+            StudyCountLog studyCountLog = new StudyCountLog();
+            studyCountLog.setGradeId(classGradeUserTemp.getGradeId());
+            studyCountLog.setStatus(-1);
+            studyCountLog.setOrderGoodsId(orderGoodsId);
+            studyCountLog.setStudyCount(1L);
+            studyCountLog.setUserId(classGradeUserTemp.getUserId());
+            studyCountLog.setCreateTime(DateUtils.getNowTime());
+            studyCountLog.setUpdateTime(DateUtils.getNowTime());
+            iStudyCountLogService.save(studyCountLog);
         }
-        //记录消耗一次学习机会
-        StudyCountLog studyCountLog = new StudyCountLog();
-        studyCountLog.setGradeId(classGradeUserTemp.getGradeId());
-        studyCountLog.setStatus(-1);
-        studyCountLog.setOrderGoodsId(orderGoodsId);
-        studyCountLog.setStudyCount(1L);
-        studyCountLog.setUserId(classGradeUserTemp.getUserId());
-        studyCountLog.setCreateTime(DateUtils.getNowTime());
-        studyCountLog.setUpdateTime(DateUtils.getNowTime());
-        iStudyCountLogService.save(studyCountLog);
         return true;
     }
 

+ 4 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -889,4 +889,8 @@
             id_card = #{idCard} and user_id != #{userId} and `status` = 1
     </select>
 
+    <select id="selectUserCertificate" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
+            resultMap="ClassGradeUserVoResult">
+
+    </select>
 </mapper>

+ 27 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserCertificateMapper.xml

@@ -0,0 +1,27 @@
+<?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.UserCertificateMapper">
+
+    <resultMap type="com.zhongzheng.modules.user.domain.UserCertificate" id="UserCertificateResult">
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="gradeId" column="grade_id"/>
+        <result property="goodsId" column="goods_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="certificateTpId" column="certificate_tp_id"/>
+        <result property="certificateCode" column="certificate_code"/>
+        <result property="trainStartTime" column="train_start_time"/>
+        <result property="trainEndTime" column="train_end_time"/>
+        <result property="classHours" column="class_hours"/>
+        <result property="certificatePath" column="certificate_path"/>
+        <result property="educationTypeId" column="education_type_id"/>
+        <result property="businessId" column="business_id"/>
+        <result property="projectId" column="project_id"/>
+    </resultMap>
+
+
+
+</mapper>