浏览代码

提交:模考活动相关接口

yangdamao 3 年之前
父节点
当前提交
62656ce9e1
共有 21 个文件被更改,包括 796 次插入2 次删除
  1. 101 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamActivityController.java
  2. 23 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java
  3. 13 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java
  4. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityAddBo.java
  5. 48 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityApplyBo.java
  6. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityApplyVo.java
  7. 23 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityQueryBo.java
  8. 42 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityUpdateBo.java
  9. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityUserVo.java
  10. 49 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamActivity.java
  11. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamActivityUser.java
  12. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamActivityMapper.java
  13. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamActivityUserMapper.java
  14. 79 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamActivityService.java
  15. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamActivityUserService.java
  16. 92 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamActivityServiceImpl.java
  17. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamActivityUserServiceImpl.java
  18. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamActivityVo.java
  19. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  20. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/IWxLoginService.java
  21. 22 0
      zhongzheng-system/src/main/resources/mapper/modules/exam/ExamActivityMapper.xml

+ 101 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamActivityController.java

@@ -0,0 +1,101 @@
+package com.zhongzheng.controller.exam;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.exam.bo.*;
+import com.zhongzheng.modules.exam.service.*;
+import com.zhongzheng.modules.exam.vo.*;
+import com.zhongzheng.modules.goods.vo.ExportLiveGoodsVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 考试活动Controller
+ *
+ * @author ruoyi
+ * @date 2021-12-07
+ */
+@Api(value = "考试活动控制器", tags = {"考试活动管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/exam/activity")
+public class ExamActivityController extends BaseController {
+
+    private final IExamActivityService iExamActivityService;
+
+    /**
+     * 新增活动
+     */
+    @ApiOperation("新增新增活动")
+    @PostMapping("/add")
+    public AjaxResult<Void> add(@RequestBody ExamActivityAddBo bo) {
+        return toAjax(iExamActivityService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 获取活动列表
+     */
+    @ApiOperation("获取活动列表")
+    @GetMapping("/list")
+    public TableDataInfo<ExamActivityVo> getActivityList(ExamActivityQueryBo bo) {
+        startPage();
+        List<ExamActivityVo> list = iExamActivityService.getActivityList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 修改活动
+     */
+    @ApiOperation("修改活动")
+    @PostMapping("/update")
+    public AjaxResult<Void> update(@RequestBody ExamActivityUpdateBo bo) {
+        return toAjax(iExamActivityService.updateByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 获取活动用户列表
+     */
+    @ApiOperation("获取活动用户列表")
+    @GetMapping("/user/list/{activityId}")
+    public TableDataInfo<ExamActivityUserVo> getActivityUserList(@PathVariable("activityId" ) Long activityId) {
+        startPage();
+        List<ExamActivityUserVo> list = iExamActivityService.getActivityUserList(activityId);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取活动报名二维码
+     */
+    @ApiOperation("获取活动报名二维码")
+    @GetMapping("/apply/code/{activityId}")
+    public AjaxResult<String> getActivityApplyCode(@PathVariable("activityId" ) Long activityId) {
+        String result = iExamActivityService.getActivityApplyCode(activityId);
+        return AjaxResult.success("成功",result);
+    }
+
+    /**
+     * 导出活动用户
+     */
+    @ApiOperation("导出活动用户")
+    @GetMapping("/export/{activityId}")
+    public AjaxResult<ExamActivityUserVo> exportActivityUserList(@PathVariable("activityId" ) Long activityId) {
+        List<ExamActivityUserVo> list = iExamActivityService.getActivityUserList(activityId);
+        list.forEach(item -> {
+            item.setUserSexStr(ObjectUtils.isNotNull(item.getUserSex()) && item.getUserSex() == 2?"女":"男");
+        });
+        ExcelUtil<ExamActivityUserVo> util = new ExcelUtil<>(ExamActivityUserVo.class);
+        return util.exportExcel(list,"模考活动用户");
+    }
+
+}

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

@@ -8,6 +8,7 @@ import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.WxTokenService;
 import com.zhongzheng.modules.exam.bo.*;
+import com.zhongzheng.modules.exam.service.IExamActivityService;
 import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
 import com.zhongzheng.modules.exam.service.IExamApplyService;
 import com.zhongzheng.modules.exam.service.IExamApplySiteService;
@@ -49,6 +50,8 @@ public class ExamApplyController extends BaseController {
 
     private final IUserSubscribeService iUserSubscribeService;
 
+    private final IExamActivityService iExamActivityService;
+
     /**
      * 获取考试安排详细信息
      */
@@ -159,4 +162,24 @@ public class ExamApplyController extends BaseController {
     public AjaxResult<Void> edit(@RequestBody UserAppSubscribeEditBo bo) {
         return toAjax(iUserSubscribeService.updateByEditSingleBo(bo) ? 1 : 0);
     }
+
+    /**
+     * 获取活动信息
+     */
+    @ApiOperation("获取活动信息")
+    @GetMapping("/detail/{activityId}")
+    public AjaxResult<ExamActivityVo> getDetail(@PathVariable("activityId" ) Long activityId) {
+        ExamActivityVo vo = iExamActivityService.getDetail(activityId);
+        return AjaxResult.success(vo);
+    }
+
+    /**
+     * 考试活动报名
+     */
+    @ApiOperation("考试活动报名")
+    @PostMapping("/launch")
+    public AjaxResult<ExamActivityApplyVo> applyActivity(@RequestBody ExamActivityApplyBo bo) {
+        ExamActivityApplyVo vo = iExamActivityService.applyActivity(bo);
+        return AjaxResult.success(vo);
+    }
 }

+ 13 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -834,6 +834,19 @@ public class WxLoginService implements IWxLoginService {
         return result;
     }
 
+    @Override
+    public String getActivityApplyCode(Long activityId) {
+        String wxGzhAccessToken = getWxSmallAccessToken();
+        String param = String.format(small_wxEnCodeParam, wxGzhAccessToken);
+        String url = small_wxEnCodeUrl + "?" + param;
+        JSONObject obj = new JSONObject();
+        obj.put("page", "pages5/mockExam/examApply");
+        obj.put("scene",String.format("tid=%s",activityId));
+        obj.put("env_version",enCodeVersion);
+        String result = HttpUtils.sendPost(url, obj);
+        return result;
+    }
+
     public Boolean subGzh(String openId) {
         String unionId = getWxGzhUserCgiInfo(openId);
         if (Validator.isNotEmpty(unionId)) {

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityAddBo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试活动添加对象")
+public class ExamActivityAddBo implements Serializable {
+
+    /**活动名称 */
+    @ApiModelProperty("活动名称")
+    private String name;
+
+    /** 科目(多个用逗号隔开) */
+    @ApiModelProperty("科目(多个用逗号隔开)")
+    private String majors;
+
+    /** 活动开始时间 */
+    @ApiModelProperty("活动开始时间")
+    private Long startTime;
+
+    /** 活动结束时间 */
+    @ApiModelProperty("活动结束时间")
+    private Long endTime;
+
+
+}

+ 48 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityApplyBo.java

@@ -0,0 +1,48 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动报名用户对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试活动报名用户对象")
+public class ExamActivityApplyBo implements Serializable {
+
+    /**活动ID */
+    @ApiModelProperty("活动ID")
+    private Long activityId;
+
+    /** 用户名称 */
+    @ApiModelProperty("用户名称")
+    private String userName;
+
+    /** 用户性别:1男,2女 */
+    @ApiModelProperty("用户性别:1男,2女 ")
+    private Integer userSex;
+
+    /** 企业名称 */
+    @ApiModelProperty("企业名称")
+    private String companyName;
+
+    /** 用户身份证号码 */
+    @ApiModelProperty("用户身份证号码")
+    private String userIdCard;
+
+    /** 用户手机号码 */
+    @ApiModelProperty("用户手机号码")
+    private String userPhone;
+
+    /** 报考科目(多个用逗号隔开) */
+    @ApiModelProperty("报考科目(多个用逗号隔开)")
+    private String userMajors;
+
+
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityApplyVo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试活动添加对象")
+public class ExamActivityApplyVo implements Serializable {
+
+    /**活动ID */
+    @ApiModelProperty("活动ID")
+    private Long activityId;
+
+    /**活动名称 */
+    @ApiModelProperty("活动名称")
+    private String name;
+
+    /** 活动开始时间 */
+    @ApiModelProperty("活动开始时间")
+    private Long startTime;
+
+    /** 活动结束时间 */
+    @ApiModelProperty("活动结束时间")
+    private Long endTime;
+
+
+}

+ 23 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityQueryBo.java

@@ -0,0 +1,23 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动查询对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试活动添加对象")
+public class ExamActivityQueryBo implements Serializable {
+
+    /**活动名称 */
+    @ApiModelProperty("活动名称")
+    private String name;
+
+}

+ 42 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityUpdateBo.java

@@ -0,0 +1,42 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试活动修改对象")
+public class ExamActivityUpdateBo implements Serializable {
+
+    /**活动ID */
+    @ApiModelProperty("活动ID")
+    private Long activityId;
+
+    /**活动名称 */
+    @ApiModelProperty("活动名称")
+    private String name;
+
+    /** 科目(多个用逗号隔开) */
+    @ApiModelProperty("科目(多个用逗号隔开)")
+    private String majors;
+
+    /** 活动开始时间 */
+    @ApiModelProperty("活动开始时间")
+    private Long startTime;
+
+    /** 活动结束时间 */
+    @ApiModelProperty("活动结束时间")
+    private Long endTime;
+
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+}

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamActivityUserVo.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.exam.bo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试活动添加对象")
+public class ExamActivityUserVo implements Serializable {
+
+    /** 活动ID */
+    @ApiModelProperty("活动ID")
+    private Long activityId;
+    /** 用户名称 */
+    @ApiModelProperty("用户名称")
+    @Excel(name = "用户名称")
+    private String userName;
+    /** 用户性别:1男,2女 */
+    @ApiModelProperty("用户性别:1男,2女")
+    private Integer userSex;
+    @Excel(name = "用户性别")
+    private String userSexStr;
+    /** 企业名称 */
+    @ApiModelProperty("企业名称")
+    @Excel(name = "企业名称")
+    private String companyName;
+    /** 用户身份证号码 */
+    @ApiModelProperty("用户身份证号码")
+    @Excel(name = "用户身份证号码")
+    private String userIdCard;
+    /** 用户手机号码 */
+    @ApiModelProperty("用户手机号码")
+    @Excel(name = "用户手机号码")
+    private String userPhone;
+    /** 报考科目(多个用逗号隔开) */
+    @ApiModelProperty("报考科目(多个用逗号隔开)")
+    @Excel(name = "报考科目(多个用逗号隔开)")
+    private String userMajors;
+
+}

+ 49 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamActivity.java

@@ -0,0 +1,49 @@
+package com.zhongzheng.modules.exam.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("exam_activity")
+public class ExamActivity implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "activity_id")
+    private Long activityId;
+    /** 活动名称 */
+    private String name;
+    /** 科目(多个用逗号隔开) */
+    private String majors;
+    /** 活动开始时间 */
+    private Long startTime;
+    /** 活动结束时间 */
+    private Long endTime;
+    /** 创建人ID */
+    private Long creatorId;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+}

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamActivityUser.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.exam.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动用户对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("exam_activity_user")
+public class ExamActivityUser implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 活动ID */
+    private Long activityId;
+    /** 用户名称 */
+    private String userName;
+    /** 用户性别:1男,2女 */
+    private Integer userSex;
+    /** 企业名称 */
+    private String companyName;
+    /** 用户身份证号码 */
+    private String userIdCard;
+    /** 用户手机号码 */
+    private String userPhone;
+    /** 报考科目(多个用逗号隔开) */
+    private String userMajors;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+}

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamActivityMapper.java

@@ -0,0 +1,26 @@
+package com.zhongzheng.modules.exam.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.exam.bo.ExamActivityQueryBo;
+import com.zhongzheng.modules.exam.bo.ExamActivityUserVo;
+import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
+import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
+import com.zhongzheng.modules.exam.domain.ExamActivity;
+import com.zhongzheng.modules.exam.domain.ExamApply;
+import com.zhongzheng.modules.exam.vo.*;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 考试活动Mapper接口
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+public interface ExamActivityMapper extends BaseMapper<ExamActivity> {
+
+    List<ExamActivityVo> getActivityList(ExamActivityQueryBo bo);
+
+    List<ExamActivityUserVo> getActivityUserList(@Param("activityId") Long activityId);
+}

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamActivityUserMapper.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.modules.exam.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.exam.domain.ExamActivity;
+import com.zhongzheng.modules.exam.domain.ExamActivityUser;
+
+/**
+ * 考试活动用户Mapper接口
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+public interface ExamActivityUserMapper extends BaseMapper<ExamActivityUser> {
+
+}

+ 79 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamActivityService.java

@@ -0,0 +1,79 @@
+package com.zhongzheng.modules.exam.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.exam.bo.*;
+import com.zhongzheng.modules.exam.domain.ExamActivity;
+import com.zhongzheng.modules.exam.vo.ExamActivityVo;
+
+import java.util.List;
+
+/**
+ * 考试活动Service接口
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+public interface IExamActivityService extends IService<ExamActivity> {
+    /**
+     * 新增活动
+     * @author change
+     * @date 2022/8/30 9:45
+     * @param bo
+     * @return boolean
+     */
+    boolean insertByAddBo(ExamActivityAddBo bo);
+
+    /**
+     * 活动列表
+     * @author change
+     * @date 2022/8/30 10:15
+     * @param bo
+     * @return java.util.List<com.zhongzheng.modules.exam.vo.ExamActivityVo>
+     */
+    List<ExamActivityVo> getActivityList(ExamActivityQueryBo bo);
+
+    /**
+     * 修改活动
+     * @author change
+     * @date 2022/8/30 10:29
+     * @param bo
+     * @return boolean
+     */
+    boolean updateByAddBo(ExamActivityUpdateBo bo);
+
+    /**
+     * 考试活动报名
+     * @author change
+     * @date 2022/8/30 10:55
+     * @param bo
+     * @return com.zhongzheng.modules.exam.bo.ExamActivityApplyVo
+     */
+    ExamActivityApplyVo applyActivity(ExamActivityApplyBo bo);
+
+    /**
+     * 获取活动详情
+     * @author change
+     * @date 2022/8/30 11:02
+     * @param activityId
+     * @return com.zhongzheng.modules.exam.vo.ExamActivityVo
+     */
+    ExamActivityVo getDetail(Long activityId);
+
+    /**
+     * 获取活动用户列表
+     * @author change
+     * @date 2022/8/30 11:08
+     * @param activityId
+     * @return java.util.List<com.zhongzheng.modules.exam.bo.ExamActivityUserVo>
+     */
+    List<ExamActivityUserVo> getActivityUserList(Long activityId);
+
+    /**
+     * 获取活动报名二维码
+     * @author change
+     * @date 2022/8/30 16:52
+     * @param activityId
+     * @return java.lang.String
+     */
+    String getActivityApplyCode(Long activityId);
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamActivityUserService.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.exam.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.exam.domain.ExamActivity;
+import com.zhongzheng.modules.exam.domain.ExamActivityUser;
+
+/**
+ * 考试活动用户Service接口
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+public interface IExamActivityUserService extends IService<ExamActivityUser> {
+}

+ 92 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamActivityServiceImpl.java

@@ -0,0 +1,92 @@
+package com.zhongzheng.modules.exam.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.modules.exam.bo.*;
+import com.zhongzheng.modules.exam.domain.ExamActivity;
+import com.zhongzheng.modules.exam.domain.ExamActivityUser;
+import com.zhongzheng.modules.exam.mapper.ExamActivityMapper;
+import com.zhongzheng.modules.exam.service.IExamActivityService;
+import com.zhongzheng.modules.exam.service.IExamActivityUserService;
+import com.zhongzheng.modules.exam.vo.ExamActivityVo;
+import com.zhongzheng.modules.wx.service.IWxLoginService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 考试活动Service业务层处理
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Service
+public class ExamActivityServiceImpl extends ServiceImpl<ExamActivityMapper, ExamActivity> implements IExamActivityService {
+
+    @Autowired
+    private IExamActivityUserService iExamActivityUserService;
+    @Autowired
+    private IWxLoginService wxLoginService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean insertByAddBo(ExamActivityAddBo bo) {
+        ExamActivity examActivity = new ExamActivity();
+        BeanUtils.copyProperties(bo, examActivity);
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        examActivity.setCreatorId(loginUser.getUser().getUserId());
+        examActivity.setCreateTime(DateUtils.getNowTime());
+        examActivity.setUpdateTime(DateUtils.getNowTime());
+        return this.save(examActivity);
+    }
+
+    @Override
+    public List<ExamActivityVo> getActivityList(ExamActivityQueryBo bo) {
+        return baseMapper.getActivityList(bo);
+    }
+
+    @Override
+    public boolean updateByAddBo(ExamActivityUpdateBo bo) {
+        ExamActivity examActivity = new ExamActivity();
+        BeanUtils.copyProperties(bo, examActivity);
+        examActivity.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(examActivity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ExamActivityApplyVo applyActivity(ExamActivityApplyBo bo) {
+        ExamActivityUser examActivityUser = new ExamActivityUser();
+        BeanUtils.copyProperties(bo, examActivityUser);
+        examActivityUser.setCreateTime(DateUtils.getNowTime());
+        examActivityUser.setUpdateTime(DateUtils.getNowTime());
+        iExamActivityUserService.save(examActivityUser);
+        ExamActivity activity = getById(bo.getActivityId());
+        ExamActivityApplyVo vo = new ExamActivityApplyVo();
+        BeanUtils.copyProperties(activity,vo);
+        return vo;
+    }
+
+    @Override
+    public ExamActivityVo getDetail(Long activityId) {
+        ExamActivity activity = getById(activityId);
+        ExamActivityVo vo = new ExamActivityVo();
+        BeanUtils.copyProperties(activity,vo);
+        return vo;
+    }
+
+    @Override
+    public List<ExamActivityUserVo> getActivityUserList(Long activityId) {
+        return baseMapper.getActivityUserList(activityId);
+    }
+
+    @Override
+    public String getActivityApplyCode(Long activityId) {
+        return wxLoginService.getActivityApplyCode(activityId);
+    }
+}

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamActivityUserServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.exam.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.exam.domain.ExamActivityUser;
+import com.zhongzheng.modules.exam.mapper.ExamActivityUserMapper;
+import com.zhongzheng.modules.exam.service.IExamActivityUserService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 考试活动用户Service业务层处理
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Service
+public class ExamActivityUserServiceImpl extends ServiceImpl<ExamActivityUserMapper, ExamActivityUser> implements IExamActivityUserService {
+
+}

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamActivityVo.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.exam.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 考试活动对象 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试活动添加对象")
+public class ExamActivityVo implements Serializable {
+
+    /**活动ID */
+    @ApiModelProperty("活动ID")
+    private Long activityId;
+
+    /**活动名称 */
+    @ApiModelProperty("活动名称")
+    private String name;
+
+    /** 科目(多个用逗号隔开) */
+    @ApiModelProperty("科目(多个用逗号隔开)")
+    private String majors;
+
+    /** 活动开始时间 */
+    @ApiModelProperty("活动开始时间")
+    private Long startTime;
+
+    /** 活动结束时间 */
+    @ApiModelProperty("活动结束时间")
+    private Long endTime;
+
+    /** 创建人 */
+    @ApiModelProperty("创建人")
+    private String creatorName;
+
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+
+}

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -655,7 +655,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     }
 
     @Override
-    public List<CourseStatementVo> getCourseStatement(CourseStatementBo bo) {
+    public List<CourseStatementVo>  getCourseStatement(CourseStatementBo bo) {
         List<CourseStatementVo> voList = baseMapper.getCourseStatement(bo);
         if (CollectionUtils.isEmpty(voList)){
             return new ArrayList<>();
@@ -687,7 +687,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                         Map<Long, List<UserStudyRecord>> collect = records.stream().filter(x -> ObjectUtils.isNotNull(x.getUserId())).collect(Collectors.groupingBy(UserStudyRecord::getUserId));
                         List<Long> unBuyCourseUserIds = new ArrayList<>();
                         for (Long id : collect.keySet()) {
-                            if (CollectionUtils.isNotEmpty(buyCourseUserIds) && !buyCourseUserIds.contains(id)){
+                            if (CollectionUtils.isEmpty(buyCourseUserIds) || !buyCourseUserIds.contains(id)){
                                 unBuyCourseUserIds.add(id);
                             }
                         }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/IWxLoginService.java

@@ -61,4 +61,6 @@ public interface IWxLoginService
     String sendQdyExamTpMsg(String openId,Map<String,String> paramMap);
 
     String sendQdyExamStatusTpMsg(String openId,Map<String,String> paramMap);
+
+    String getActivityApplyCode(Long activityId);
 }

+ 22 - 0
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamActivityMapper.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.exam.mapper.ExamActivityMapper">
+
+    <select id="getActivityList" parameterType="com.zhongzheng.modules.exam.bo.ExamActivityQueryBo"
+            resultType="com.zhongzheng.modules.exam.vo.ExamActivityVo">
+        SELECT ea.*,
+               (SELECT su.user_name FROM sys_user su WHERE su.user_id = ea.creator_id) as creatorName
+        FROM exam_activity ea
+        WHERE ea.`status` = 1
+        <if test="name != null and name != ''">
+            AND (ea.name like concat('%', #{name}, '%'))
+        </if>
+    </select>
+
+    <select id="getActivityUserList" parameterType="java.lang.Long"
+            resultType="com.zhongzheng.modules.exam.bo.ExamActivityUserVo">
+        SELECT * FROM exam_activity_user WHERE activity_id = #{activityId}
+    </select>
+</mapper>