tanzh 3 tahun lalu
induk
melakukan
e66fab745a
60 mengubah file dengan 3283 tambahan dan 0 penghapusan
  1. 124 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/mock/MockApplyController.java
  2. 122 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserMockSubscribeController.java
  3. 58 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockApplyAddBo.java
  4. 65 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockApplyEditBo.java
  5. 66 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockApplyQueryBo.java
  6. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorAddBo.java
  7. 37 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorEditBo.java
  8. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorQueryBo.java
  9. 46 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectAddBo.java
  10. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectEditBo.java
  11. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectGoodsAddBo.java
  12. 37 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectGoodsEditBo.java
  13. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectGoodsQueryBo.java
  14. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectQueryBo.java
  15. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectTimeAddBo.java
  16. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectTimeEditBo.java
  17. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectTimeQueryBo.java
  18. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockApply.java
  19. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajor.java
  20. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajorSubject.java
  21. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajorSubjectGoods.java
  22. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajorSubjectTime.java
  23. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockApplyMapper.java
  24. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorMapper.java
  25. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorSubjectGoodsMapper.java
  26. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorSubjectMapper.java
  27. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorSubjectTimeMapper.java
  28. 56 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockApplyService.java
  29. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorService.java
  30. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorSubjectGoodsService.java
  31. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorSubjectService.java
  32. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorSubjectTimeService.java
  33. 224 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java
  34. 98 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorServiceImpl.java
  35. 98 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorSubjectGoodsServiceImpl.java
  36. 101 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorSubjectServiceImpl.java
  37. 102 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorSubjectTimeServiceImpl.java
  38. 111 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockApplyVo.java
  39. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorSubjectGoodsVo.java
  40. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorSubjectTimeVo.java
  41. 47 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorSubjectVo.java
  42. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorVo.java
  43. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java
  44. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  45. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  46. 63 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserMockSubscribeAddBo.java
  47. 77 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserMockSubscribeEditBo.java
  48. 75 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserMockSubscribeQueryBo.java
  49. 59 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserMockSubscribe.java
  50. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMockSubscribeMapper.java
  51. 55 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserMockSubscribeService.java
  52. 192 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserMockSubscribeServiceImpl.java
  53. 120 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserMockSubscribeVo.java
  54. 68 0
      zhongzheng-system/src/main/resources/mapper/modules/mock/MockApplyMapper.xml
  55. 16 0
      zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorMapper.xml
  56. 16 0
      zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorSubjectGoodsMapper.xml
  57. 18 0
      zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorSubjectMapper.xml
  58. 18 0
      zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorSubjectTimeMapper.xml
  59. 9 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml
  60. 72 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserMockSubscribeMapper.xml

+ 124 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/mock/MockApplyController.java

@@ -0,0 +1,124 @@
+package com.zhongzheng.controller.mock;
+
+import java.util.List;
+import java.util.Arrays;
+
+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.modules.mock.vo.MockApplyVo;
+import com.zhongzheng.modules.mock.bo.MockApplyQueryBo;
+import com.zhongzheng.modules.mock.bo.MockApplyAddBo;
+import com.zhongzheng.modules.mock.bo.MockApplyEditBo;
+import com.zhongzheng.modules.mock.service.IMockApplyService;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 模考安排Controller
+ * 
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Api(value = "模考安排控制器", tags = {"模考安排管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/mock/apply")
+public class MockApplyController extends BaseController {
+
+    private final IMockApplyService iMockApplyService;
+
+    /**
+     * 查询模考安排列表
+     */
+    @ApiOperation("查询模考安排列表")
+    @PreAuthorize("@ss.hasPermi('system:apply:list')")
+    @GetMapping("/list")
+    public TableDataInfo<MockApplyVo> list(MockApplyQueryBo bo) {
+        startPage();
+        List<MockApplyVo> list = iMockApplyService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出模考安排列表
+     */
+    @ApiOperation("导出模考安排列表")
+    @PreAuthorize("@ss.hasPermi('system:apply:export')")
+    @Log(title = "模考安排", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<MockApplyVo> export(MockApplyQueryBo bo) {
+        List<MockApplyVo> list = iMockApplyService.queryList(bo);
+        ExcelUtil<MockApplyVo> util = new ExcelUtil<MockApplyVo>(MockApplyVo.class);
+        return util.exportExcel(list, "模考安排");
+    }
+
+    /**
+     * 获取模考安排详细信息
+     */
+    @ApiOperation("获取模考安排详细信息")
+    @PreAuthorize("@ss.hasPermi('system:apply:query')")
+    @GetMapping("/{applyId}")
+    public AjaxResult<MockApplyVo> getInfo(@PathVariable("applyId" ) Long applyId) {
+        return AjaxResult.success(iMockApplyService.queryById(applyId));
+    }
+
+    /**
+     * 新增模考安排
+     */
+    @ApiOperation("新增模考安排")
+    @PreAuthorize("@ss.hasPermi('system:apply:add')")
+    @Log(title = "模考安排", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody MockApplyAddBo bo) {
+        return toAjax(iMockApplyService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改模考安排
+     */
+    @ApiOperation("修改模考安排")
+    @PreAuthorize("@ss.hasPermi('system:apply:edit')")
+    @Log(title = "模考安排", businessType = BusinessType.UPDATE)
+    @PutMapping()
+    public AjaxResult<Void> edit(@RequestBody MockApplyEditBo bo) {
+        return toAjax(iMockApplyService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除模考安排
+     */
+    @ApiOperation("删除模考安排")
+    @PreAuthorize("@ss.hasPermi('system:apply:remove')")
+    @Log(title = "模考安排" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{applyIds}")
+    public AjaxResult<Void> remove(@PathVariable Long[] applyIds) {
+        return toAjax(iMockApplyService.deleteWithValidByIds(Arrays.asList(applyIds), true) ? 1 : 0);
+    }
+
+    /**
+     * 查询模考安排列表
+     */
+    @ApiOperation("查询模考安排列表")
+    @PreAuthorize("@ss.hasPermi('system:apply:list')")
+    @GetMapping("/listApply")
+    public TableDataInfo<MockApplyVo> listApply(MockApplyQueryBo bo) {
+        startPage();
+        List<MockApplyVo> list = iMockApplyService.listApply(bo);
+        return getDataTable(list);
+    }
+}

+ 122 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserMockSubscribeController.java

@@ -0,0 +1,122 @@
+package com.zhongzheng.controller.user;
+
+import java.text.ParseException;
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+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.modules.user.vo.UserMockSubscribeVo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeQueryBo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeAddBo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeEditBo;
+import com.zhongzheng.modules.user.service.IUserMockSubscribeService;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 用户预约模考Controller
+ * 
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Api(value = "用户预约模考控制器", tags = {"用户预约模考管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/user/subscribe")
+public class UserMockSubscribeController extends BaseController {
+
+    private final IUserMockSubscribeService iUserMockSubscribeService;
+
+    private final WxTokenService wxTokenService;
+
+    /**
+     * 查询用户预约模考列表
+     */
+    @ApiOperation("查询用户预约模考列表")
+    @PreAuthorize("@ss.hasPermi('system:subscribe:list')")
+    @GetMapping("/list")
+    public TableDataInfo<UserMockSubscribeVo> list(UserMockSubscribeQueryBo bo) {
+        startPage();
+        List<UserMockSubscribeVo> list = iUserMockSubscribeService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出用户预约模考列表
+     */
+    @ApiOperation("导出用户预约模考列表")
+    @PreAuthorize("@ss.hasPermi('system:subscribe:export')")
+    @Log(title = "用户预约模考", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<UserMockSubscribeVo> export(UserMockSubscribeQueryBo bo) {
+        List<UserMockSubscribeVo> list = iUserMockSubscribeService.queryList(bo);
+        ExcelUtil<UserMockSubscribeVo> util = new ExcelUtil<UserMockSubscribeVo>(UserMockSubscribeVo.class);
+        return util.exportExcel(list, "用户预约模考");
+    }
+
+    /**
+     * 获取用户预约模考详细信息
+     */
+    @ApiOperation("获取用户预约模考详细信息")
+    @PreAuthorize("@ss.hasPermi('system:subscribe:query')")
+    @GetMapping("/{userId}")
+    public TableDataInfo<UserMockSubscribeVo> getInfo(@PathVariable("userId" ) Long userId) {
+        startPage();
+        List<UserMockSubscribeVo> list = iUserMockSubscribeService.getInfo(userId);
+        return getDataTable(list);
+    }
+
+    /**
+     * 新增用户预约模考
+     */
+    @ApiOperation("新增用户预约模考")
+    @PreAuthorize("@ss.hasPermi('system:subscribe:add')")
+    @Log(title = "用户预约模考", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Long> add(@RequestBody UserMockSubscribeAddBo bo) throws ParseException {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return AjaxResult.success(iUserMockSubscribeService.insertByAddBo(bo));
+    }
+
+    /**
+     * 修改用户预约模考
+     */
+    @ApiOperation("修改用户预约模考")
+    @PreAuthorize("@ss.hasPermi('system:subscribe:edit')")
+    @Log(title = "用户预约模考", businessType = BusinessType.UPDATE)
+    @PutMapping()
+    public AjaxResult<Void> edit(@RequestBody UserMockSubscribeEditBo bo) {
+        return toAjax(iUserMockSubscribeService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除用户预约模考
+     */
+    @ApiOperation("删除用户预约模考")
+    @PreAuthorize("@ss.hasPermi('system:subscribe:remove')")
+    @Log(title = "用户预约模考" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{subscribeIds}")
+    public AjaxResult<Void> remove(@PathVariable Long[] subscribeIds) {
+        return toAjax(iUserMockSubscribeService.deleteWithValidByIds(Arrays.asList(subscribeIds), true) ? 1 : 0);
+    }
+}

+ 58 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockApplyAddBo.java

@@ -0,0 +1,58 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 模考安排添加对象 mock_apply
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考安排添加对象")
+public class MockApplyAddBo {
+
+    /** 模考封面 */
+    @ApiModelProperty("模考封面")
+    private String applyUrl;
+    /** 模考名字 */
+    @ApiModelProperty("模考名字")
+    private String applyName;
+    /** 模考简介 */
+    @ApiModelProperty("模考简介")
+    private String applyIntroduce;
+    /** 预约开始时间 */
+    @ApiModelProperty("预约开始时间")
+    private Long applyStartTime;
+    /** 预约结束时间 */
+    @ApiModelProperty("预约结束时间")
+    private Long applyEndTime;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+    /** 1 启用 0未启用 -1删除 2已过期 */
+    @ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
+    private Integer status;
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationTypeId;
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+    /** 编码 */
+    @ApiModelProperty("编码")
+    private String code;
+
+    /** 关联专业列表 */
+    @ApiModelProperty("关联专业列表")
+    private List<MockMajorAddBo> mockMajorAddBoList;
+}

+ 65 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockApplyEditBo.java

@@ -0,0 +1,65 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 模考安排编辑对象 mock_apply
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考安排编辑对象")
+public class MockApplyEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long applyId;
+
+    /** 模考封面 */
+    @ApiModelProperty("模考封面")
+    private String applyUrl;
+
+    /** 模考名字 */
+    @ApiModelProperty("模考名字")
+    private String applyName;
+
+    /** 模考简介 */
+    @ApiModelProperty("模考简介")
+    private String applyIntroduce;
+
+    /** 预约开始时间 */
+    @ApiModelProperty("预约开始时间")
+    private Long applyStartTime;
+
+    /** 预约结束时间 */
+    @ApiModelProperty("预约结束时间")
+    private Long applyEndTime;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+    /** 1 启用 0未启用 -1删除 2已过期 */
+    @ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
+    private Integer status;
+
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationTypeId;
+
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+
+    /** 编码 */
+    @ApiModelProperty("编码")
+    private String code;
+
+}

+ 66 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockApplyQueryBo.java

@@ -0,0 +1,66 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考安排分页查询对象 mock_apply
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("模考安排分页查询对象")
+public class MockApplyQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 模考封面 */
+	@ApiModelProperty("模考封面")
+	private String applyUrl;
+	/** 模考名字 */
+	@ApiModelProperty("模考名字")
+	private String applyName;
+	/** 模考简介 */
+	@ApiModelProperty("模考简介")
+	private String applyIntroduce;
+	/** 预约开始时间 */
+	@ApiModelProperty("预约开始时间")
+	private Long applyStartTime;
+	/** 预约结束时间 */
+	@ApiModelProperty("预约结束时间")
+	private Long applyEndTime;
+	/** 1 启用 0未启用 -1删除 2已过期 */
+	@ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
+	private Integer status;
+	/** 教育类型id */
+	@ApiModelProperty("教育类型id")
+	private Long educationTypeId;
+	/** 业务层次id */
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+	/** 编码 */
+	@ApiModelProperty("编码")
+	private String code;
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorAddBo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 模考安排绑定专业添加对象 mock_major
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考安排绑定专业添加对象")
+public class MockMajorAddBo {
+
+    /** 模考安排ID */
+    @ApiModelProperty("模考安排ID")
+    private Long applyId;
+    /** 专业ID */
+    @ApiModelProperty("专业ID")
+    private Long majorId;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+    /** 关联科目列表 */
+    @ApiModelProperty("关联科目列表")
+    private List<MockMajorSubjectAddBo> mockMajorSubjectAddBoList;
+}

+ 37 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorEditBo.java

@@ -0,0 +1,37 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 模考安排绑定专业编辑对象 mock_major
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考安排绑定专业编辑对象")
+public class MockMajorEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long mockMajorId;
+
+    /** 模考安排ID */
+    @ApiModelProperty("模考安排ID")
+    private Long applyId;
+
+    /** 专业ID */
+    @ApiModelProperty("专业ID")
+    private Long majorId;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorQueryBo.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考安排绑定专业分页查询对象 mock_major
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("模考安排绑定专业分页查询对象")
+public class MockMajorQueryBo 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 majorId;
+}

+ 46 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectAddBo.java

@@ -0,0 +1,46 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 模考专业绑定科目添加对象 mock_major_subject
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考专业绑定科目添加对象")
+public class MockMajorSubjectAddBo {
+
+    /** 模考专业ID */
+    @ApiModelProperty("模考专业ID")
+    private Long mockMajorId;
+    /** 科目ID */
+    @ApiModelProperty("科目ID")
+    private Long subjectId;
+    /** 试卷ID */
+    @ApiModelProperty("试卷ID")
+    private Long examId;
+    /** 讲解ID */
+    @ApiModelProperty("讲解ID")
+    private Long handoutsId;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+
+    /** 关联商品列表 */
+    @ApiModelProperty("关联商品列表")
+    private List<MockMajorSubjectGoodsAddBo> mockMajorSubjectGoodsAddBoList;
+
+    /** 关联时间列表 */
+    @ApiModelProperty("关联时间列表")
+    private List<MockMajorSubjectTimeAddBo> mockMajorSubjectTimeAddBoList;
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectEditBo.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 模考专业绑定科目编辑对象 mock_major_subject
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考专业绑定科目编辑对象")
+public class MockMajorSubjectEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long mockMajorSubjectId;
+
+    /** 模考专业ID */
+    @ApiModelProperty("模考专业ID")
+    private Long mockMajorId;
+
+    /** 科目ID */
+    @ApiModelProperty("科目ID")
+    private Long subjectId;
+
+    /** 试卷ID */
+    @ApiModelProperty("试卷ID")
+    private Long examId;
+
+    /** 讲解ID */
+    @ApiModelProperty("讲解ID")
+    private Long handoutsId;
+
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+
+
+}

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectGoodsAddBo.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模考专业科目绑定商品添加对象 mock_major_subject_goods
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考专业科目绑定商品添加对象")
+public class MockMajorSubjectGoodsAddBo {
+
+    /** 模考专业科目ID */
+    @ApiModelProperty("模考专业科目ID")
+    private Long mockMajorSubjectId;
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 37 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectGoodsEditBo.java

@@ -0,0 +1,37 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 模考专业科目绑定商品编辑对象 mock_major_subject_goods
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考专业科目绑定商品编辑对象")
+public class MockMajorSubjectGoodsEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 模考专业科目ID */
+    @ApiModelProperty("模考专业科目ID")
+    private Long mockMajorSubjectId;
+
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectGoodsQueryBo.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考专业科目绑定商品分页查询对象 mock_major_subject_goods
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("模考专业科目绑定商品分页查询对象")
+public class MockMajorSubjectGoodsQueryBo 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 mockMajorSubjectId;
+	/** 商品ID */
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+}

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectQueryBo.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考专业绑定科目分页查询对象 mock_major_subject
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("模考专业绑定科目分页查询对象")
+public class MockMajorSubjectQueryBo 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 mockMajorId;
+	/** 科目ID */
+	@ApiModelProperty("科目ID")
+	private Long subjectId;
+	/** 试卷ID */
+	@ApiModelProperty("试卷ID")
+	private Long examId;
+	/** 讲解ID */
+	@ApiModelProperty("讲解ID")
+	private Long handoutsId;
+}

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectTimeAddBo.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模考专业科目绑定时间添加对象 mock_major_subject_time
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@ApiModel("模考专业科目绑定时间添加对象")
+public class MockMajorSubjectTimeAddBo {
+
+    /** 模考专业科目ID */
+    @ApiModelProperty("模考专业科目ID")
+    private Long mockMajorSubjectId;
+    /** 考试日期 */
+    @ApiModelProperty("考试日期")
+    private Long examTime;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 开始时间 */
+    @ApiModelProperty("开始时间")
+    private String startTime;
+    /** 结束时间 */
+    @ApiModelProperty("结束时间")
+    private String endTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectTimeEditBo.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.mock.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 模考专业科目绑定时间编辑对象 mock_major_subject_time
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@ApiModel("模考专业科目绑定时间编辑对象")
+public class MockMajorSubjectTimeEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 模考专业科目ID */
+    @ApiModelProperty("模考专业科目ID")
+    private Long mockMajorSubjectId;
+
+    /** 考试日期 */
+    @ApiModelProperty("考试日期")
+    private Long examTime;
+
+    /** 开始时间 */
+    @ApiModelProperty("开始时间")
+    private String startTime;
+
+    /** 结束时间 */
+    @ApiModelProperty("结束时间")
+    private String endTime;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+
+}

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockMajorSubjectTimeQueryBo.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考专业科目绑定时间分页查询对象 mock_major_subject_time
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("模考专业科目绑定时间分页查询对象")
+public class MockMajorSubjectTimeQueryBo 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 mockMajorSubjectId;
+	/** 考试日期 */
+	@ApiModelProperty("考试日期")
+	private Long examTime;
+	/** 开始时间 */
+	@ApiModelProperty("开始时间")
+	private String startTime;
+	/** 结束时间 */
+	@ApiModelProperty("结束时间")
+	private String endTime;
+}

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockApply.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考安排对象 mock_apply
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("mock_apply")
+public class MockApply implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "apply_id")
+    private Long applyId;
+    /** 模考封面 */
+    private String applyUrl;
+    /** 模考标题 */
+    private String applyName;
+    /** 模考简介 */
+    private String applyIntroduce;
+    /** 预约开始时间 */
+    private Long applyStartTime;
+    /** 预约结束时间 */
+    private Long applyEndTime;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 1 启用 0未启用 -1删除 2已过期 */
+    private Integer status;
+    /** 教育类型id */
+    private Long educationTypeId;
+    /** 业务层次id */
+    private Long businessId;
+    /** 编码 */
+    private String code;
+}

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajor.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考安排绑定专业对象 mock_major
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("mock_major")
+public class MockMajor implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "mock_major_id")
+    private Long mockMajorId;
+    /** 模考安排ID */
+    private Long applyId;
+    /** 专业ID */
+    private Long majorId;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+}

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajorSubject.java

@@ -0,0 +1,43 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考专业绑定科目对象 mock_major_subject
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("mock_major_subject")
+public class MockMajorSubject implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "mock_major_subject_id")
+    private Long mockMajorSubjectId;
+    /** 模考专业ID */
+    private Long mockMajorId;
+    /** 科目ID */
+    private Long subjectId;
+    /** 试卷ID */
+    private Long examId;
+    /** 讲解ID */
+    private Long handoutsId;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+}

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajorSubjectGoods.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考专业科目绑定商品对象 mock_major_subject_goods
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("mock_major_subject_goods")
+public class MockMajorSubjectGoods implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 模考专业科目ID */
+    private Long mockMajorSubjectId;
+    /** 商品ID */
+    private Long goodsId;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+}

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/domain/MockMajorSubjectTime.java

@@ -0,0 +1,43 @@
+package com.zhongzheng.modules.mock.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;
+
+/**
+ * 模考专业科目绑定时间对象 mock_major_subject_time
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("mock_major_subject_time")
+public class MockMajorSubjectTime implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 模考专业科目ID */
+    private Long mockMajorSubjectId;
+    /** 考试日期 */
+    private Long examTime;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 开始时间 */
+    private String startTime;
+    /** 结束时间 */
+    private String endTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+}

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockApplyMapper.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.mock.mapper;
+
+import com.zhongzheng.modules.mock.bo.MockApplyQueryBo;
+import com.zhongzheng.modules.mock.domain.MockApply;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 模考安排Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface MockApplyMapper extends BaseMapper<MockApply> {
+
+    MockApplyVo getMockSubjectInfo(@Param(value = "mockMajorSubjectId")Long mockMajorSubjectId);
+
+    List<MockApplyVo> listApply(MockApplyQueryBo bo);
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.mock.mapper;
+
+import com.zhongzheng.modules.mock.domain.MockMajor;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 模考安排绑定专业Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface MockMajorMapper extends BaseMapper<MockMajor> {
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorSubjectGoodsMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.mock.mapper;
+
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 模考专业科目绑定商品Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface MockMajorSubjectGoodsMapper extends BaseMapper<MockMajorSubjectGoods> {
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorSubjectMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.mock.mapper;
+
+import com.zhongzheng.modules.mock.domain.MockMajorSubject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 模考专业绑定科目Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface MockMajorSubjectMapper extends BaseMapper<MockMajorSubject> {
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockMajorSubjectTimeMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.mock.mapper;
+
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectTime;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 模考专业科目绑定时间Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+public interface MockMajorSubjectTimeMapper extends BaseMapper<MockMajorSubjectTime> {
+
+}

+ 56 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockApplyService.java

@@ -0,0 +1,56 @@
+package com.zhongzheng.modules.mock.service;
+
+import com.zhongzheng.modules.mock.domain.MockApply;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
+import com.zhongzheng.modules.mock.bo.MockApplyQueryBo;
+import com.zhongzheng.modules.mock.bo.MockApplyAddBo;
+import com.zhongzheng.modules.mock.bo.MockApplyEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 模考安排Service接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface IMockApplyService extends IService<MockApply> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	MockApplyVo queryById(Long applyId);
+
+	/**
+	 * 查询列表
+	 */
+	List<MockApplyVo> queryList(MockApplyQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入模考安排
+	 * @param bo 模考安排新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(MockApplyAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改模考安排
+	 * @param bo 模考安排编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(MockApplyEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+	MockApplyVo getMockSubjectInfo(Long mockMajorSubjectId);
+
+	List<MockApplyVo> listApply(MockApplyQueryBo bo);
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.mock.service;
+
+import com.zhongzheng.modules.mock.domain.MockMajor;
+import com.zhongzheng.modules.mock.vo.MockMajorVo;
+import com.zhongzheng.modules.mock.bo.MockMajorQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 模考安排绑定专业Service接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface IMockMajorService extends IService<MockMajor> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	MockMajorVo queryById(Long mockMajorId);
+
+	/**
+	 * 查询列表
+	 */
+	List<MockMajorVo> queryList(MockMajorQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入模考安排绑定专业
+	 * @param bo 模考安排绑定专业新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(MockMajorAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改模考安排绑定专业
+	 * @param bo 模考安排绑定专业编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(MockMajorEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorSubjectGoodsService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.mock.service;
+
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectGoods;
+import com.zhongzheng.modules.mock.vo.MockMajorSubjectGoodsVo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectGoodsQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectGoodsAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectGoodsEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 模考专业科目绑定商品Service接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface IMockMajorSubjectGoodsService extends IService<MockMajorSubjectGoods> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	MockMajorSubjectGoodsVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<MockMajorSubjectGoodsVo> queryList(MockMajorSubjectGoodsQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入模考专业科目绑定商品
+	 * @param bo 模考专业科目绑定商品新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(MockMajorSubjectGoodsAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改模考专业科目绑定商品
+	 * @param bo 模考专业科目绑定商品编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(MockMajorSubjectGoodsEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorSubjectService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.mock.service;
+
+import com.zhongzheng.modules.mock.domain.MockMajorSubject;
+import com.zhongzheng.modules.mock.vo.MockMajorSubjectVo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 模考专业绑定科目Service接口
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+public interface IMockMajorSubjectService extends IService<MockMajorSubject> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	MockMajorSubjectVo queryById(Long mockMajorSubjectId);
+
+	/**
+	 * 查询列表
+	 */
+	List<MockMajorSubjectVo> queryList(MockMajorSubjectQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入模考专业绑定科目
+	 * @param bo 模考专业绑定科目新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(MockMajorSubjectAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改模考专业绑定科目
+	 * @param bo 模考专业绑定科目编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(MockMajorSubjectEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockMajorSubjectTimeService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.mock.service;
+
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectTime;
+import com.zhongzheng.modules.mock.vo.MockMajorSubjectTimeVo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectTimeQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectTimeAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectTimeEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 模考专业科目绑定时间Service接口
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+public interface IMockMajorSubjectTimeService extends IService<MockMajorSubjectTime> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	MockMajorSubjectTimeVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<MockMajorSubjectTimeVo> queryList(MockMajorSubjectTimeQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入模考专业科目绑定时间
+	 * @param bo 模考专业科目绑定时间新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(MockMajorSubjectTimeAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改模考专业科目绑定时间
+	 * @param bo 模考专业科目绑定时间编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(MockMajorSubjectTimeEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 224 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java

@@ -0,0 +1,224 @@
+package com.zhongzheng.modules.mock.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.course.domain.Major;
+import com.zhongzheng.modules.course.service.IMajorService;
+import com.zhongzheng.modules.mock.bo.*;
+import com.zhongzheng.modules.mock.domain.*;
+import com.zhongzheng.modules.mock.service.*;
+import com.zhongzheng.modules.user.domain.UserMockSubscribe;
+import com.zhongzheng.modules.user.service.IUserMockSubscribeService;
+import com.zhongzheng.modules.user.service.IUserSubscribeService;
+import org.springframework.beans.factory.annotation.Autowired;
+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 com.zhongzheng.modules.mock.mapper.MockApplyMapper;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 模考安排Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Service
+public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply> implements IMockApplyService {
+
+    @Autowired
+    private IMajorService iMajorService;
+
+    @Autowired
+    private IMockMajorService iMockMajorService;
+
+    @Autowired
+    private IMockMajorSubjectService iMockMajorSubjectService;
+
+    @Autowired
+    private IMockMajorSubjectGoodsService iMockMajorSubjectGoodsService;
+
+    @Autowired
+    private IMockMajorSubjectTimeService iMockMajorSubjectTimeService;
+
+    @Autowired
+    private IUserMockSubscribeService iUserMockSubscribeService;
+
+    @Override
+    public MockApplyVo queryById(Long applyId) {
+        MockApply db = this.baseMapper.selectById(applyId);
+        return BeanUtil.toBean(db, MockApplyVo.class);
+    }
+
+    @Override
+    public List<MockApplyVo> queryList(MockApplyQueryBo bo) {
+        LambdaQueryWrapper<MockApply> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StrUtil.isNotBlank(bo.getApplyUrl()), MockApply::getApplyUrl, bo.getApplyUrl());
+        lqw.like(StrUtil.isNotBlank(bo.getApplyName()), MockApply::getApplyName, bo.getApplyName());
+        lqw.eq(StrUtil.isNotBlank(bo.getApplyIntroduce()), MockApply::getApplyIntroduce, bo.getApplyIntroduce());
+        lqw.eq(bo.getApplyStartTime() != null, MockApply::getApplyStartTime, bo.getApplyStartTime());
+        lqw.eq(bo.getApplyEndTime() != null, MockApply::getApplyEndTime, bo.getApplyEndTime());
+        lqw.eq(bo.getStatus() != null, MockApply::getStatus, bo.getStatus());
+        lqw.eq(bo.getEducationTypeId() != null, MockApply::getEducationTypeId, bo.getEducationTypeId());
+        lqw.eq(bo.getBusinessId() != null, MockApply::getBusinessId, bo.getBusinessId());
+        lqw.eq(StrUtil.isNotBlank(bo.getCode()), MockApply::getCode, bo.getCode());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+     * 实体类转化成视图对象
+     *
+     * @param collection 实体类集合
+     * @return
+     */
+    private List<MockApplyVo> entity2Vo(Collection<MockApply> collection) {
+        List<MockApplyVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, MockApplyVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<MockApply> page = (Page<MockApply>) collection;
+            Page<MockApplyVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page, pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(MockApplyAddBo bo) {
+        MockApply add = BeanUtil.toBean(bo, MockApply.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        this.save(add);
+        if (BeanUtil.isEmpty(bo.getMockMajorAddBoList())) {
+            throw new CustomException("专业不能为空");
+        }
+        bo.getMockMajorAddBoList().stream().forEach(mockMajorAddBo -> {
+            MockMajorAddBo bo1 = new MockMajorAddBo();
+            bo1.setApplyId(add.getApplyId());
+            bo1.setMajorId(mockMajorAddBo.getMajorId());
+            MockMajor mockMajorAdd = BeanUtil.toBean(bo1, MockMajor.class);
+            mockMajorAdd.setCreateTime(DateUtils.getNowTime());
+            mockMajorAdd.setUpdateTime(DateUtils.getNowTime());
+            iMockMajorService.save(mockMajorAdd);
+            if (BeanUtil.isEmpty(mockMajorAddBo.getMockMajorSubjectAddBoList())) {
+                throw new CustomException("科目不能为空");
+            }
+            mockMajorAddBo.getMockMajorSubjectAddBoList().stream().forEach(mockMajorSubjectAddBo -> {
+                MockMajorSubjectAddBo bo2 = new MockMajorSubjectAddBo();
+                bo2.setMockMajorId(mockMajorAdd.getMockMajorId());
+                bo2.setExamId(mockMajorSubjectAddBo.getExamId());
+                bo2.setHandoutsId(mockMajorSubjectAddBo.getHandoutsId());
+                bo2.setSubjectId(mockMajorSubjectAddBo.getSubjectId());
+                MockMajorSubject mockMajorSubjectAdd = BeanUtil.toBean(bo2, MockMajorSubject.class);
+                mockMajorSubjectAdd.setCreateTime(DateUtils.getNowTime());
+                mockMajorSubjectAdd.setUpdateTime(DateUtils.getNowTime());
+                iMockMajorSubjectService.save(mockMajorSubjectAdd);
+
+                if (BeanUtil.isNotEmpty(mockMajorSubjectAddBo.getMockMajorSubjectGoodsAddBoList())) {
+                    mockMajorSubjectAddBo.getMockMajorSubjectGoodsAddBoList().stream().forEach(mockMajorSubjectGoodsAddBo -> {
+                        MockMajorSubjectGoodsAddBo bo3 = new MockMajorSubjectGoodsAddBo();
+                        bo3.setMockMajorSubjectId(mockMajorSubjectAdd.getMockMajorSubjectId());
+                        bo3.setGoodsId(mockMajorSubjectGoodsAddBo.getGoodsId());
+                        MockMajorSubjectGoods mockMajorSubjectGoods = BeanUtil.toBean(bo3, MockMajorSubjectGoods.class);
+                        mockMajorSubjectGoods.setCreateTime(DateUtils.getNowTime());
+                        mockMajorSubjectGoods.setUpdateTime(DateUtils.getNowTime());
+                        iMockMajorSubjectGoodsService.save(mockMajorSubjectGoods);
+                    });
+                }
+                if (BeanUtil.isNotEmpty(mockMajorSubjectAddBo.getMockMajorSubjectTimeAddBoList())) {
+                    mockMajorSubjectAddBo.getMockMajorSubjectTimeAddBoList().stream().forEach(mockMajorSubjectTimeAddBo -> {
+                        MockMajorSubjectTimeAddBo bo4 = new MockMajorSubjectTimeAddBo();
+                        bo4.setMockMajorSubjectId(mockMajorSubjectAdd.getMockMajorSubjectId());
+                        bo4.setExamTime(mockMajorSubjectTimeAddBo.getExamTime());
+                        bo4.setStartTime(mockMajorSubjectTimeAddBo.getStartTime());
+                        bo4.setEndTime(mockMajorSubjectTimeAddBo.getEndTime());
+                        MockMajorSubjectTime mockMajorSubjectTime = BeanUtil.toBean(bo4, MockMajorSubjectTime.class);
+                        mockMajorSubjectTime.setCreateTime(DateUtils.getNowTime());
+                        mockMajorSubjectTime.setUpdateTime(DateUtils.getNowTime());
+                        iMockMajorSubjectTimeService.save(mockMajorSubjectTime);
+                    });
+                }
+            });
+        });
+
+        return true;
+    }
+
+    @Override
+    public Boolean updateByEditBo(MockApplyEditBo bo) {
+        MockApply update = BeanUtil.toBean(bo, MockApply.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(MockApply entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+
+    @Override
+    public MockApplyVo getMockSubjectInfo(Long mockMajorSubjectId) {
+        return baseMapper.getMockSubjectInfo(mockMajorSubjectId);
+    }
+
+    @Override
+    public List<MockApplyVo> listApply(MockApplyQueryBo bo) {
+        List<MockApplyVo> mockApplyVoList = baseMapper.listApply(bo);
+        mockApplyVoList.stream().forEach(mockApplyVo -> {
+            LambdaQueryWrapper<MockMajor> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(MockMajor::getApplyId, mockApplyVo.getApplyId());
+            List<MockMajor> mockMajorList = iMockMajorService.list(lqw);
+            List<String> nameList = new ArrayList<>();
+            mockMajorList.stream().forEach(mockMajor -> {
+                LambdaQueryWrapper<Major> lqw2 = new LambdaQueryWrapper<>();
+                lqw2.eq(Major::getId, mockMajor.getMajorId());
+                Major major = iMajorService.getOne(lqw2);
+                nameList.add(major.getCategoryName());
+            });
+            mockApplyVo.setMajorNameList(nameList);
+
+            LambdaQueryWrapper<UserMockSubscribe> lqw3 = new LambdaQueryWrapper<>();
+            lqw3.eq(UserMockSubscribe::getApplyId, mockApplyVo.getApplyId());
+            lqw3.eq(UserMockSubscribe::getSubscribeStatus, "1");
+            List<UserMockSubscribe> userMockSubscribeList1 = iUserMockSubscribeService.list(lqw3);
+            mockApplyVo.setSubscribeNum(userMockSubscribeList1.size());
+
+            LambdaQueryWrapper<UserMockSubscribe> lqw4 = new LambdaQueryWrapper<>();
+            lqw3.eq(UserMockSubscribe::getApplyId, mockApplyVo.getApplyId());
+            lqw3.eq(UserMockSubscribe::getSubscribeStatus, "0");
+            List<UserMockSubscribe> userMockSubscribeList2 = iUserMockSubscribeService.list(lqw4);
+            mockApplyVo.setSubscribeCancelNum(userMockSubscribeList2.size());
+        });
+
+        return mockApplyVoList;
+
+    }
+}

+ 98 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorServiceImpl.java

@@ -0,0 +1,98 @@
+package com.zhongzheng.modules.mock.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.mock.service.IMockMajorService;
+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 com.zhongzheng.modules.mock.bo.MockMajorAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorEditBo;
+import com.zhongzheng.modules.mock.domain.MockMajor;
+import com.zhongzheng.modules.mock.mapper.MockMajorMapper;
+import com.zhongzheng.modules.mock.vo.MockMajorVo;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 模考安排绑定专业Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Service
+public class MockMajorServiceImpl extends ServiceImpl<MockMajorMapper, MockMajor> implements IMockMajorService {
+
+    @Override
+    public MockMajorVo queryById(Long mockMajorId){
+        MockMajor db = this.baseMapper.selectById(mockMajorId);
+        return BeanUtil.toBean(db, MockMajorVo.class);
+    }
+
+    @Override
+    public List<MockMajorVo> queryList(MockMajorQueryBo bo) {
+        LambdaQueryWrapper<MockMajor> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getApplyId() != null, MockMajor::getApplyId, bo.getApplyId());
+        lqw.eq(bo.getMajorId() != null, MockMajor::getMajorId, bo.getMajorId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<MockMajorVo> entity2Vo(Collection<MockMajor> collection) {
+        List<MockMajorVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, MockMajorVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<MockMajor> page = (Page<MockMajor>)collection;
+            Page<MockMajorVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(MockMajorAddBo bo) {
+        MockMajor add = BeanUtil.toBean(bo, MockMajor.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(MockMajorEditBo bo) {
+        MockMajor update = BeanUtil.toBean(bo, MockMajor.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(MockMajor entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 98 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorSubjectGoodsServiceImpl.java

@@ -0,0 +1,98 @@
+package com.zhongzheng.modules.mock.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectGoodsService;
+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 com.zhongzheng.modules.mock.bo.MockMajorSubjectGoodsAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectGoodsQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectGoodsEditBo;
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectGoods;
+import com.zhongzheng.modules.mock.mapper.MockMajorSubjectGoodsMapper;
+import com.zhongzheng.modules.mock.vo.MockMajorSubjectGoodsVo;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 模考专业科目绑定商品Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Service
+public class MockMajorSubjectGoodsServiceImpl extends ServiceImpl<MockMajorSubjectGoodsMapper, MockMajorSubjectGoods> implements IMockMajorSubjectGoodsService {
+
+    @Override
+    public MockMajorSubjectGoodsVo queryById(Long id){
+        MockMajorSubjectGoods db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, MockMajorSubjectGoodsVo.class);
+    }
+
+    @Override
+    public List<MockMajorSubjectGoodsVo> queryList(MockMajorSubjectGoodsQueryBo bo) {
+        LambdaQueryWrapper<MockMajorSubjectGoods> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getMockMajorSubjectId() != null, MockMajorSubjectGoods::getMockMajorSubjectId, bo.getMockMajorSubjectId());
+        lqw.eq(bo.getGoodsId() != null, MockMajorSubjectGoods::getGoodsId, bo.getGoodsId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<MockMajorSubjectGoodsVo> entity2Vo(Collection<MockMajorSubjectGoods> collection) {
+        List<MockMajorSubjectGoodsVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, MockMajorSubjectGoodsVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<MockMajorSubjectGoods> page = (Page<MockMajorSubjectGoods>)collection;
+            Page<MockMajorSubjectGoodsVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(MockMajorSubjectGoodsAddBo bo) {
+        MockMajorSubjectGoods add = BeanUtil.toBean(bo, MockMajorSubjectGoods.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(MockMajorSubjectGoodsEditBo bo) {
+        MockMajorSubjectGoods update = BeanUtil.toBean(bo, MockMajorSubjectGoods.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(MockMajorSubjectGoods entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 101 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorSubjectServiceImpl.java

@@ -0,0 +1,101 @@
+package com.zhongzheng.modules.mock.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectService;
+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 com.zhongzheng.modules.mock.bo.MockMajorSubjectAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectEditBo;
+import com.zhongzheng.modules.mock.domain.MockMajorSubject;
+import com.zhongzheng.modules.mock.mapper.MockMajorSubjectMapper;
+import com.zhongzheng.modules.mock.vo.MockMajorSubjectVo;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 模考专业绑定科目Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Service
+public class MockMajorSubjectServiceImpl extends ServiceImpl<MockMajorSubjectMapper, MockMajorSubject> implements IMockMajorSubjectService {
+
+    @Override
+    public MockMajorSubjectVo queryById(Long mockMajorSubjectId){
+        MockMajorSubject db = this.baseMapper.selectById(mockMajorSubjectId);
+        return BeanUtil.toBean(db, MockMajorSubjectVo.class);
+    }
+
+    @Override
+    public List<MockMajorSubjectVo> queryList(MockMajorSubjectQueryBo bo) {
+        LambdaQueryWrapper<MockMajorSubject> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getMockMajorId() != null, MockMajorSubject::getMockMajorId, bo.getMockMajorId());
+        lqw.eq(bo.getSubjectId() != null, MockMajorSubject::getSubjectId, bo.getSubjectId());
+        lqw.eq(bo.getExamId() != null, MockMajorSubject::getExamId, bo.getExamId());
+        lqw.eq(bo.getHandoutsId() != null, MockMajorSubject::getHandoutsId, bo.getHandoutsId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<MockMajorSubjectVo> entity2Vo(Collection<MockMajorSubject> collection) {
+        List<MockMajorSubjectVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, MockMajorSubjectVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<MockMajorSubject> page = (Page<MockMajorSubject>)collection;
+            Page<MockMajorSubjectVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(MockMajorSubjectAddBo bo) {
+        MockMajorSubject add = BeanUtil.toBean(bo, MockMajorSubject.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(MockMajorSubjectEditBo bo) {
+        MockMajorSubject update = BeanUtil.toBean(bo, MockMajorSubject.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(MockMajorSubject entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 102 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockMajorSubjectTimeServiceImpl.java

@@ -0,0 +1,102 @@
+package com.zhongzheng.modules.mock.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+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 com.zhongzheng.modules.mock.bo.MockMajorSubjectTimeAddBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectTimeQueryBo;
+import com.zhongzheng.modules.mock.bo.MockMajorSubjectTimeEditBo;
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectTime;
+import com.zhongzheng.modules.mock.mapper.MockMajorSubjectTimeMapper;
+import com.zhongzheng.modules.mock.vo.MockMajorSubjectTimeVo;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectTimeService;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 模考专业科目绑定时间Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Service
+public class MockMajorSubjectTimeServiceImpl extends ServiceImpl<MockMajorSubjectTimeMapper, MockMajorSubjectTime> implements IMockMajorSubjectTimeService {
+
+    @Override
+    public MockMajorSubjectTimeVo queryById(Long id){
+        MockMajorSubjectTime db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, MockMajorSubjectTimeVo.class);
+    }
+
+    @Override
+    public List<MockMajorSubjectTimeVo> queryList(MockMajorSubjectTimeQueryBo bo) {
+        LambdaQueryWrapper<MockMajorSubjectTime> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getMockMajorSubjectId() != null, MockMajorSubjectTime::getMockMajorSubjectId, bo.getMockMajorSubjectId());
+        lqw.eq(bo.getExamTime() != null, MockMajorSubjectTime::getExamTime, bo.getExamTime());
+        lqw.eq(StrUtil.isNotBlank(bo.getStartTime()), MockMajorSubjectTime::getStartTime, bo.getStartTime());
+        lqw.eq(StrUtil.isNotBlank(bo.getEndTime()), MockMajorSubjectTime::getEndTime, bo.getEndTime());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<MockMajorSubjectTimeVo> entity2Vo(Collection<MockMajorSubjectTime> collection) {
+        List<MockMajorSubjectTimeVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, MockMajorSubjectTimeVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<MockMajorSubjectTime> page = (Page<MockMajorSubjectTime>)collection;
+            Page<MockMajorSubjectTimeVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(MockMajorSubjectTimeAddBo bo) {
+        MockMajorSubjectTime add = BeanUtil.toBean(bo, MockMajorSubjectTime.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(MockMajorSubjectTimeEditBo bo) {
+        MockMajorSubjectTime update = BeanUtil.toBean(bo, MockMajorSubjectTime.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(MockMajorSubjectTime entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 111 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockApplyVo.java

@@ -0,0 +1,111 @@
+package com.zhongzheng.modules.mock.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;
+import java.util.List;
+
+
+/**
+ * 模考安排视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考安排视图对象")
+public class MockApplyVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long applyId;
+
+	/** 模考封面 */
+	@Excel(name = "模考封面")
+	@ApiModelProperty("模考封面")
+	private String applyUrl;
+	/** 模考名字 */
+	@Excel(name = "模考名字")
+	@ApiModelProperty("模考名字")
+	private String applyName;
+	/** 模考简介 */
+	@Excel(name = "模考简介")
+	@ApiModelProperty("模考简介")
+	private String applyIntroduce;
+	/** 预约开始时间 */
+	@Excel(name = "预约开始时间")
+	@ApiModelProperty("预约开始时间")
+	private Long applyStartTime;
+	/** 预约结束时间 */
+	@Excel(name = "预约结束时间")
+	@ApiModelProperty("预约结束时间")
+	private Long applyEndTime;
+	/** 1 启用 0未启用 -1删除 2已过期 */
+	@Excel(name = "1 启用 0未启用 -1删除 2已过期")
+	@ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
+	private Integer status;
+	/** 教育类型id */
+	@Excel(name = "教育类型id")
+	@ApiModelProperty("教育类型id")
+	private Long educationTypeId;
+	/** 教育类型名称 */
+	@Excel(name = "教育类型名称")
+	@ApiModelProperty("教育类型名称")
+	private String educationName;
+	/** 业务层次id */
+	@Excel(name = "业务层次id")
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+	/** 业务层次名称 */
+	@Excel(name = "业务层次名称")
+	@ApiModelProperty("业务层次名称")
+	private String businessName;
+	/** 编码 */
+	@Excel(name = "编码")
+	@ApiModelProperty("编码")
+	private String code;
+
+	/** 模考专业ID */
+	@Excel(name = "模考专业ID")
+	@ApiModelProperty("模考专业ID")
+	private Long mockMajorId;
+
+	/** 模考专业科目ID */
+	@Excel(name = "模考专业科目ID")
+	@ApiModelProperty("模考专业科目ID")
+	private Long mockMajorSubjectId;
+
+	/** 科目ID */
+	@Excel(name = "科目ID")
+	@ApiModelProperty("科目ID")
+	private Long subjectId;
+
+	/** 试卷ID */
+	@Excel(name = "试卷ID")
+	@ApiModelProperty("试卷ID")
+	private Long examId;
+
+	/** 讲解ID */
+	@Excel(name = "讲解ID")
+	@ApiModelProperty("讲解ID")
+	private Long handoutsId;
+
+	/** 模考专业集合 */
+	@Excel(name = "模考专业集合")
+	@ApiModelProperty("模考专业集合")
+	private List<String> majorNameList;
+
+	/** 预约数量 */
+	@Excel(name = "预约数量")
+	@ApiModelProperty("预约数量")
+	private Integer subscribeNum;
+
+	/** 预约取消数量 */
+	@Excel(name = "预约取消数量")
+	@ApiModelProperty("预约取消数量")
+	private Integer subscribeCancelNum;
+}

+ 35 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorSubjectGoodsVo.java

@@ -0,0 +1,35 @@
+package com.zhongzheng.modules.mock.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模考专业科目绑定商品视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考专业科目绑定商品视图对象")
+public class MockMajorSubjectGoodsVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 模考专业科目ID */
+	@Excel(name = "模考专业科目ID")
+	@ApiModelProperty("模考专业科目ID")
+	private Long mockMajorSubjectId;
+	/** 商品ID */
+	@Excel(name = "商品ID")
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+}

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorSubjectTimeVo.java

@@ -0,0 +1,43 @@
+package com.zhongzheng.modules.mock.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模考专业科目绑定时间视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@ApiModel("模考专业科目绑定时间视图对象")
+public class MockMajorSubjectTimeVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 模考专业科目ID */
+	@Excel(name = "模考专业科目ID")
+	@ApiModelProperty("模考专业科目ID")
+	private Long mockMajorSubjectId;
+	/** 考试日期 */
+	@Excel(name = "考试日期")
+	@ApiModelProperty("考试日期")
+	private Long examTime;
+	/** 开始时间 */
+	@Excel(name = "开始时间")
+	@ApiModelProperty("开始时间")
+	private String startTime;
+	/** 结束时间 */
+	@Excel(name = "结束时间")
+	@ApiModelProperty("结束时间")
+	private String endTime;
+}

+ 47 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorSubjectVo.java

@@ -0,0 +1,47 @@
+package com.zhongzheng.modules.mock.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模考专业绑定科目视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考专业绑定科目视图对象")
+public class MockMajorSubjectVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long mockMajorSubjectId;
+
+	/** 模考专业ID */
+	@Excel(name = "模考专业ID")
+	@ApiModelProperty("模考专业ID")
+	private Long mockMajorId;
+	/** 科目ID */
+	@Excel(name = "科目ID")
+	@ApiModelProperty("科目ID")
+	private Long subjectId;
+	/** 时间的json */
+	@Excel(name = "时间的json")
+	@ApiModelProperty("时间的json")
+	private String siteTime;
+	/** 试卷ID */
+	@Excel(name = "试卷ID")
+	@ApiModelProperty("试卷ID")
+	private Long examId;
+	/** 讲解ID */
+	@Excel(name = "讲解ID")
+	@ApiModelProperty("讲解ID")
+	private Long handoutsId;
+}

+ 35 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockMajorVo.java

@@ -0,0 +1,35 @@
+package com.zhongzheng.modules.mock.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 模考安排绑定专业视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2022-05-24
+ */
+@Data
+@ApiModel("模考安排绑定专业视图对象")
+public class MockMajorVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long mockMajorId;
+
+	/** 模考安排ID */
+	@Excel(name = "模考安排ID")
+	@ApiModelProperty("模考安排ID")
+	private Long applyId;
+	/** 专业ID */
+	@Excel(name = "专业ID")
+	@ApiModelProperty("专业ID")
+	private Long majorId;
+}

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java

@@ -40,4 +40,5 @@ public interface OrderMapper extends BaseMapper<Order> {
 
     OrderListVo queryDetailByOrderSn(String orderSn);
 
+    List<Long> getUserGoods(@Param("userId") Long userId);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -96,4 +96,6 @@ public interface IOrderService extends IService<Order> {
 	Integer getConsoleRebuyNum(ConsoleQueryBo bo);
 
 	Long newFreeBankGoods(Long goodsId,Long orderGoodsId);
+
+    List<Long> getUserGoods(Long userId);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -1157,6 +1157,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return freeBankGoodsId;
     }
 
+    @Override
+    public List<Long> getUserGoods(Long userId) {
+        return baseMapper.getUserGoods(userId);
+    }
+
     //判断视频商品是否购买过且服务期是否过期
     public Long getHaveBuyGoods(Long goodsId, Long userId) {
         OrderGoodsQueryBo orderGoodsQueryBo = new OrderGoodsQueryBo();

+ 63 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserMockSubscribeAddBo.java

@@ -0,0 +1,63 @@
+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_mock_subscribe
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@ApiModel("用户预约模考添加对象")
+public class UserMockSubscribeAddBo {
+
+    /** 学员ID */
+    @ApiModelProperty("学员ID")
+    private Long userId;
+    /** 1正常 2取消 */
+    @ApiModelProperty("1正常 2取消")
+    private Integer subscribeStatus;
+    /** 1 已开通 0未开通 */
+    @ApiModelProperty("1 已开通 0未开通")
+    private Integer beforeStatus;
+    /** 0 待登记 1正常 2缺考 3作弊 4替考 */
+    @ApiModelProperty("0 待登记 1正常 2缺考 3作弊 4替考")
+    private Integer examStatus;
+    /** 成绩 */
+    @ApiModelProperty("成绩")
+    private Long performance;
+    /** 交卷状态 0未交卷 1手动交卷 2自动交卷 */
+    @ApiModelProperty("交卷状态 0为交卷 1手动交卷 2自动交卷")
+    private Integer handStatus;
+    /** 1通过 0不通过 */
+    @ApiModelProperty("1通过 0不通过")
+    private Integer result;
+    /** 考试ID */
+    @ApiModelProperty("考试ID")
+    private Long applyId;
+    /** 考试绑定科目ID */
+    @ApiModelProperty("考试绑定科目ID")
+    private Long mockMajorSubjectId;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+    /** 考试开始时间段 */
+    @ApiModelProperty("考试开始时间段")
+    private String applySiteStartTime;
+    /** 考试结束时间段 */
+    @ApiModelProperty("考试结束时间段")
+    private String applySiteEndTime;
+    /** 考试日期 */
+    @ApiModelProperty("考试日期")
+    private Long applySiteExamTime;
+}

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

@@ -0,0 +1,77 @@
+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_mock_subscribe
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@ApiModel("用户预约模考编辑对象")
+public class UserMockSubscribeEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long subscribeId;
+
+    /** 学员ID */
+    @ApiModelProperty("学员ID")
+    private Long userId;
+
+    /** 1正常 2取消 */
+    @ApiModelProperty("1正常 2取消")
+    private Integer subscribeStatus;
+
+    /** 1 已开通 0未开通 */
+    @ApiModelProperty("1 已开通 0未开通")
+    private Integer beforeStatus;
+
+    /** 0 待登记 1正常 2缺考 3作弊 4替考 */
+    @ApiModelProperty("0 待登记 1正常 2缺考 3作弊 4替考")
+    private Integer examStatus;
+
+    /** 成绩 */
+    @ApiModelProperty("成绩")
+    private Long performance;
+
+    /** 交卷状态 0未交卷 1手动交卷 2自动交卷 */
+    @ApiModelProperty("交卷状态 0未交卷 1手动交卷 2自动交卷")
+    private Integer handStatus;
+
+    /** 1通过 0不通过 */
+    @ApiModelProperty("1通过 0不通过")
+    private Integer result;
+
+    /** 考试ID */
+    @ApiModelProperty("考试ID")
+    private Long applyId;
+
+    /** 考试绑定科目ID */
+    @ApiModelProperty("考试绑定科目ID")
+    private Long mockMajorSubjectId;
+
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+
+
+    /** 考试开始时间段 */
+    @ApiModelProperty("考试开始时间段")
+    private String applySiteStartTime;
+
+    /** 考试结束时间段 */
+    @ApiModelProperty("考试结束时间段")
+    private String applySiteEndTime;
+
+    /** 考试日期 */
+    @ApiModelProperty("考试日期")
+    private Long applySiteExamTime;
+
+}

+ 75 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserMockSubscribeQueryBo.java

@@ -0,0 +1,75 @@
+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_mock_subscribe
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("用户预约模考分页查询对象")
+public class UserMockSubscribeQueryBo 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;
+	/** 1正常 2取消 */
+	@ApiModelProperty("1正常 2取消")
+	private Integer subscribeStatus;
+	/** 1 已开通 0未开通 */
+	@ApiModelProperty("1 已开通 0未开通")
+	private Integer beforeStatus;
+	/** 0 待登记 1正常 2缺考 3作弊 4替考 */
+	@ApiModelProperty("0 待登记 1正常 2缺考 3作弊 4替考")
+	private Integer examStatus;
+	/** 成绩 */
+	@ApiModelProperty("成绩")
+	private Long performance;
+	/** 交卷状态 0未交卷 1手动交卷 2自动交卷 */
+	@ApiModelProperty("交卷状态 0未交卷 1手动交卷 2自动交卷")
+	private Integer handStatus;
+	/** 1通过 0不通过 */
+	@ApiModelProperty("1通过 0不通过")
+	private Integer result;
+	/** 考试ID */
+	@ApiModelProperty("考试ID")
+	private Long applyId;
+	/** 考试绑定科目ID */
+	@ApiModelProperty("考试绑定科目ID")
+	private Long mockMajorSubjectId;
+	/** 考试开始时间段 */
+	@ApiModelProperty("考试开始时间段")
+	private String applySiteStartTime;
+	/** 考试结束时间段 */
+	@ApiModelProperty("考试结束时间段")
+	private String applySiteEndTime;
+	/** 考试日期 */
+	@ApiModelProperty("考试日期")
+	private Long applySiteExamTime;
+}

+ 59 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserMockSubscribe.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_mock_subscribe
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("user_mock_subscribe")
+public class UserMockSubscribe implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "subscribe_id")
+    private Long subscribeId;
+    /** 学员ID */
+    private Long userId;
+    /** 1正常 2取消 */
+    private Integer subscribeStatus;
+    /** 1 已开通 0未开通 */
+    private Integer beforeStatus;
+    /** 0 待登记 1正常 2缺考 3作弊 4替考 */
+    private Integer examStatus;
+    /** 成绩 */
+    private Long performance;
+    /** 交卷状态 0未交卷 1手动交卷 2自动交卷 */
+    private Integer handStatus;
+    /** 1通过 0不通过 */
+    private Integer result;
+    /** 考试ID */
+    private Long applyId;
+    /** 考试绑定科目ID */
+    private Long mockMajorSubjectId;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 考试开始时间段 */
+    private String applySiteStartTime;
+    /** 考试结束时间段 */
+    private String applySiteEndTime;
+    /** 考试日期 */
+    private Long applySiteExamTime;
+}

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMockSubscribeMapper.java

@@ -0,0 +1,19 @@
+package com.zhongzheng.modules.user.mapper;
+
+import com.zhongzheng.modules.user.domain.UserMockSubscribe;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.vo.UserMockSubscribeVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 用户预约模考Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+public interface UserMockSubscribeMapper extends BaseMapper<UserMockSubscribe> {
+
+    List<UserMockSubscribeVo> getInfo(Long userId);
+}

+ 55 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserMockSubscribeService.java

@@ -0,0 +1,55 @@
+package com.zhongzheng.modules.user.service;
+
+import com.zhongzheng.modules.user.domain.UserMockSubscribe;
+import com.zhongzheng.modules.user.vo.UserMockSubscribeVo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeQueryBo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeAddBo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户预约模考Service接口
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+public interface IUserMockSubscribeService extends IService<UserMockSubscribe> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	UserMockSubscribeVo queryById(Long subscribeId);
+
+	/**
+	 * 查询列表
+	 */
+	List<UserMockSubscribeVo> queryList(UserMockSubscribeQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入用户预约模考
+	 * @param bo 用户预约模考新增业务对象
+	 * @return
+	 */
+	Long insertByAddBo(UserMockSubscribeAddBo bo) throws ParseException;
+
+	/**
+	 * 根据编辑业务对象修改用户预约模考
+	 * @param bo 用户预约模考编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(UserMockSubscribeEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    List<UserMockSubscribeVo> getInfo(Long userId);
+}

+ 192 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserMockSubscribeServiceImpl.java

@@ -0,0 +1,192 @@
+package com.zhongzheng.modules.user.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.mock.domain.MockApply;
+import com.zhongzheng.modules.mock.domain.MockMajorSubject;
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectGoods;
+import com.zhongzheng.modules.mock.service.IMockApplyService;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectGoodsService;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectService;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
+import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+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 com.zhongzheng.modules.user.bo.UserMockSubscribeAddBo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeQueryBo;
+import com.zhongzheng.modules.user.bo.UserMockSubscribeEditBo;
+import com.zhongzheng.modules.user.domain.UserMockSubscribe;
+import com.zhongzheng.modules.user.mapper.UserMockSubscribeMapper;
+import com.zhongzheng.modules.user.vo.UserMockSubscribeVo;
+import com.zhongzheng.modules.user.service.IUserMockSubscribeService;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 用户预约模考Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Service
+public class UserMockSubscribeServiceImpl extends ServiceImpl<UserMockSubscribeMapper, UserMockSubscribe> implements IUserMockSubscribeService {
+
+    @Autowired
+    private IMockApplyService iMockApplyService;
+
+    @Autowired
+    private IMockMajorSubjectGoodsService iMockMajorSubjectGoodsService;
+
+    @Autowired
+    private IOrderService iOrderService;
+
+    @Override
+    public UserMockSubscribeVo queryById(Long subscribeId){
+        UserMockSubscribe db = this.baseMapper.selectById(subscribeId);
+        return BeanUtil.toBean(db, UserMockSubscribeVo.class);
+    }
+
+    @Override
+    public List<UserMockSubscribeVo> queryList(UserMockSubscribeQueryBo bo) {
+        LambdaQueryWrapper<UserMockSubscribe> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, UserMockSubscribe::getUserId, bo.getUserId());
+        lqw.eq(bo.getSubscribeStatus() != null, UserMockSubscribe::getSubscribeStatus, bo.getSubscribeStatus());
+        lqw.eq(bo.getBeforeStatus() != null, UserMockSubscribe::getBeforeStatus, bo.getBeforeStatus());
+        lqw.eq(bo.getExamStatus() != null, UserMockSubscribe::getExamStatus, bo.getExamStatus());
+        lqw.eq(bo.getPerformance() != null, UserMockSubscribe::getPerformance, bo.getPerformance());
+        lqw.eq(bo.getHandStatus() != null, UserMockSubscribe::getHandStatus, bo.getHandStatus());
+        lqw.eq(bo.getResult() != null, UserMockSubscribe::getResult, bo.getResult());
+        lqw.eq(bo.getApplyId() != null, UserMockSubscribe::getApplyId, bo.getApplyId());
+        lqw.eq(bo.getMockMajorSubjectId() != null, UserMockSubscribe::getMockMajorSubjectId, bo.getMockMajorSubjectId());
+        lqw.eq(StrUtil.isNotBlank(bo.getApplySiteStartTime()), UserMockSubscribe::getApplySiteStartTime, bo.getApplySiteStartTime());
+        lqw.eq(StrUtil.isNotBlank(bo.getApplySiteEndTime()), UserMockSubscribe::getApplySiteEndTime, bo.getApplySiteEndTime());
+        lqw.eq(bo.getApplySiteExamTime() != null, UserMockSubscribe::getApplySiteExamTime, bo.getApplySiteExamTime());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<UserMockSubscribeVo> entity2Vo(Collection<UserMockSubscribe> collection) {
+        List<UserMockSubscribeVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, UserMockSubscribeVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<UserMockSubscribe> page = (Page<UserMockSubscribe>)collection;
+            Page<UserMockSubscribeVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Long insertByAddBo(UserMockSubscribeAddBo bo) throws ParseException {
+        UserMockSubscribe add = BeanUtil.toBean(bo, UserMockSubscribe.class);
+        //判断当前时间是否超过了选择时间
+        Long time = formatTime(add.getApplySiteExamTime(), add.getApplySiteStartTime());
+        if (System.currentTimeMillis()/1000 > time){
+            throw new CustomException("当前选择的考试时间已过期,请重新预约,选择未过期考试时间");
+        }
+
+        //查询该学员该科目的预约记录
+        LambdaQueryWrapper<UserMockSubscribe> lqw = Wrappers.lambdaQuery();
+        lqw.eq(UserMockSubscribe::getUserId, bo.getUserId());
+        lqw.eq(UserMockSubscribe::getMockMajorSubjectId, bo.getMockMajorSubjectId());
+        lqw.eq(UserMockSubscribe::getApplyId, bo.getApplyId());
+        lqw.orderByDesc(UserMockSubscribe::getCreateTime).last("limit 1");
+        UserMockSubscribe userMockSubscribe = this.getOne(lqw);
+        if (BeanUtil.isNotEmpty(userMockSubscribe)) {
+            //已进行过模考
+            if ((userMockSubscribe.getHandStatus() == 1) || (userMockSubscribe.getHandStatus() == 2)) {
+                throw new CustomException("已进行同类型模考,不能再预约了哦~");
+            }
+            //重复预约
+            if (!(System.currentTimeMillis()/1000 > formatTime(userMockSubscribe.getApplySiteExamTime(), userMockSubscribe.getApplySiteEndTime()))
+                    && userMockSubscribe.getHandStatus() == 0) {
+                throw new CustomException("已存在同类型模考预约,不能再预约了哦~");
+            }
+
+        }
+
+        //判断关联商品
+        List<Long> goodsIds = iOrderService.getUserGoods(bo.getUserId());
+        if (goodsIds.size() > 0) {
+            LambdaQueryWrapper<MockMajorSubjectGoods> lq = Wrappers.lambdaQuery();
+            lq.eq(MockMajorSubjectGoods::getMockMajorSubjectId, bo.getMockMajorSubjectId());
+            List<MockMajorSubjectGoods> mockMajorSubjectGoodsList = iMockMajorSubjectGoodsService.list(lq);
+            List<Long> userGoods = new ArrayList<>();
+            mockMajorSubjectGoodsList.stream().forEach(mockMajorSubjectGoods -> {
+                userGoods.add(mockMajorSubjectGoods.getGoodsId());
+            });
+            List<Long> crossList = goodsIds.stream().filter(userGoods::contains).collect(Collectors.toList());
+            if (crossList.size() == 0) {
+                throw new CustomException("预约失败,用户没购买相应商品");
+            }
+        }
+        validEntityBeforeSave(add);
+        add.setSubscribeStatus(1);
+        add.setExamStatus(0);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        this.save(add);
+        //TODO:发送站内信
+
+        return add.getSubscribeId();
+    }
+
+    private Long formatTime(Long startTime, String addTime) throws ParseException{
+        Long times = startTime*1000;//时间戳
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        String dateString = formatter.format(times);
+        String dateForma =null;
+        dateForma = dateString+" "+addTime.replace("-", ":");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        return sdf.parse(dateForma).getTime() / 1000;
+    }
+
+    @Override
+    public Boolean updateByEditBo(UserMockSubscribeEditBo bo) {
+        UserMockSubscribe update = BeanUtil.toBean(bo, UserMockSubscribe.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(UserMockSubscribe entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+
+    @Override
+    public List<UserMockSubscribeVo> getInfo(Long userId) {
+        return baseMapper.getInfo(userId);
+    }
+}

+ 120 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserMockSubscribeVo.java

@@ -0,0 +1,120 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户预约模考视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2022-05-25
+ */
+@Data
+@ApiModel("用户预约模考视图对象")
+public class UserMockSubscribeVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long subscribeId;
+
+	/** 学员ID */
+	@Excel(name = "学员ID")
+	@ApiModelProperty("学员ID")
+	private Long userId;
+	/** 1正常 2取消 */
+	@Excel(name = "1正常 2取消")
+	@ApiModelProperty("1正常 2取消")
+	private Integer subscribeStatus;
+	/** 1 已开通 0未开通 */
+	@Excel(name = "1 已开通 0未开通")
+	@ApiModelProperty("1 已开通 0未开通")
+	private Integer beforeStatus;
+	/** 0 待登记 1正常 2缺考 3作弊 4替考 */
+	@Excel(name = "0 待登记 1正常 2缺考 3作弊 4替考")
+	@ApiModelProperty("0 待登记 1正常 2缺考 3作弊 4替考")
+	private Integer examStatus;
+	/** 成绩 */
+	@Excel(name = "成绩")
+	@ApiModelProperty("成绩")
+	private Long performance;
+	/** 交卷状态 0为交卷 1手动交卷 2自动交卷 */
+	@Excel(name = "交卷状态 0为交卷 1手动交卷 2自动交卷")
+	@ApiModelProperty("交卷状态 0为交卷 1手动交卷 2自动交卷")
+	private Integer handStatus;
+	/** 1通过 0不通过 */
+	@Excel(name = "1通过 0不通过")
+	@ApiModelProperty("1通过 0不通过")
+	private Integer result;
+	/** 考试ID */
+	@Excel(name = "考试ID")
+	@ApiModelProperty("考试ID")
+	private Long applyId;
+	/** 考试绑定科目ID */
+	@Excel(name = "考试绑定科目ID")
+	@ApiModelProperty("考试绑定科目ID")
+	private Long mockMajorSubjectId;
+	/** 考试开始时间段 */
+	@Excel(name = "考试开始时间段")
+	@ApiModelProperty("考试开始时间段")
+	private String applySiteStartTime;
+	/** 考试结束时间段 */
+	@Excel(name = "考试结束时间段")
+	@ApiModelProperty("考试结束时间段")
+	private String applySiteEndTime;
+	/** 考试日期 */
+	@Excel(name = "考试日期")
+	@ApiModelProperty("考试日期")
+	private Long applySiteExamTime;
+
+	/** 模考标题 */
+	@Excel(name = "模考标题")
+	@ApiModelProperty("模考标题")
+	private String applyName;
+
+	/** 教育类型id */
+	@Excel(name = "教育类型id")
+	@ApiModelProperty("教育类型id")
+	private Long educationTypeId;
+
+	/** 教育类型名称 */
+	@Excel(name = "教育类型名称")
+	@ApiModelProperty("教育类型名称")
+	private String educationName;
+
+	/** 业务层次id */
+	@Excel(name = "业务层次id")
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+
+	/** 业务层次名称 */
+	@Excel(name = "业务层次名称")
+	@ApiModelProperty("业务层次名称")
+	private String businessName;
+
+	/** 专业id */
+	@Excel(name = "专业id")
+	@ApiModelProperty("专业id")
+	private Long majorId;
+
+	/** 专业名字 */
+	@Excel(name = "专业名字")
+	@ApiModelProperty("专业名字")
+	private String categoryName;
+
+	/** 科目id */
+	@Excel(name = "科目id")
+	@ApiModelProperty("科目id")
+	private Long subjectId;
+
+	/** 科目名字 */
+	@Excel(name = "科目名字")
+	@ApiModelProperty("科目名字")
+	private String subjectName;
+}

+ 68 - 0
zhongzheng-system/src/main/resources/mapper/modules/mock/MockApplyMapper.xml

@@ -0,0 +1,68 @@
+<?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.mock.mapper.MockApplyMapper">
+
+    <resultMap type="com.zhongzheng.modules.mock.domain.MockApply" id="MockApplyResult">
+        <result property="applyId" column="apply_id"/>
+        <result property="applyUrl" column="apply_url"/>
+        <result property="applyName" column="apply_name"/>
+        <result property="applyIntroduce" column="apply_introduce"/>
+        <result property="applyStartTime" column="apply_start_time"/>
+        <result property="applyEndTime" column="apply_end_time"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="status" column="status"/>
+        <result property="educationTypeId" column="education_type_id"/>
+        <result property="businessId" column="business_id"/>
+        <result property="code" column="code"/>
+    </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.mock.vo.MockApplyVo" id="MockApplyVoResult">
+        <result property="applyId" column="apply_id"/>
+        <result property="applyUrl" column="apply_url"/>
+        <result property="applyName" column="apply_name"/>
+        <result property="applyIntroduce" column="apply_introduce"/>
+        <result property="applyStartTime" column="apply_start_time"/>
+        <result property="applyEndTime" column="apply_end_time"/>
+        <result property="status" column="status"/>
+        <result property="educationTypeId" column="education_type_id"/>
+        <result property="educationName" column="education_name"/>
+        <result property="businessId" column="business_id"/>
+        <result property="businessName" column="business_name"/>
+        <result property="code" column="code"/>
+        <result property="mockMajorId" column="mock_major_id"/>
+        <result property="mockMajorSubjectId" column="mock_major_subject_id"/>
+        <result property="subjectId" column="subject_id"/>
+        <result property="examId" column="exam_id"/>
+        <result property="handoutsId" column="handouts_id"/>
+        <result property="subscribeNum" column="subscribe_num"/>
+        <result property="subscribeCancelNum" column="subscribe_cancel_num"/>
+    </resultMap>
+    <select id="getMockSubjectInfo" parameterType="java.lang.Long" resultMap="MockApplyVoResult">
+        SELECT ma.*,
+               mm.mock_major_id,
+               major_id,
+               mms.mock_major_subject_id,
+               mms.subject_id,
+               mms.site_time,
+               mms.exam_id,
+               mms.handouts_id
+        FROM mock_apply ma
+        LEFT JOIN mock_major mm ON ma.apply_id = mm.apply_id
+        LEFT JOIN mock_major_subject mms ON mm.mock_major_id = mms.mock_major_id
+        WHERE
+        mms.mock_major_subject_id = #{mockMajorSubjectId}
+    </select>
+    <select id="listApply" resultType="com.zhongzheng.modules.mock.vo.MockApplyVo">
+        SELECT 	ma.*,
+                cet.education_name,
+                cb.business_name
+        FROM mock_apply ma
+                 LEFT JOIN course_education_type cet ON ma.education_type_id = cet.id
+                 LEFT JOIN course_business cb ON ma.business_id = cb.id
+    </select>
+
+
+</mapper>

+ 16 - 0
zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorMapper.xml

@@ -0,0 +1,16 @@
+<?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.mock.mapper.MockMajorMapper">
+
+    <resultMap type="com.zhongzheng.modules.mock.domain.MockMajor" id="MockMajorResult">
+        <result property="mockMajorId" column="mock_major_id"/>
+        <result property="applyId" column="apply_id"/>
+        <result property="majorId" column="major_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>

+ 16 - 0
zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorSubjectGoodsMapper.xml

@@ -0,0 +1,16 @@
+<?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.mock.mapper.MockMajorSubjectGoodsMapper">
+
+    <resultMap type="com.zhongzheng.modules.mock.domain.MockMajorSubjectGoods" id="MockMajorSubjectGoodsResult">
+        <result property="id" column="id"/>
+        <result property="mockMajorSubjectId" column="mock_major_subject_id"/>
+        <result property="goodsId" column="goods_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>

+ 18 - 0
zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorSubjectMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.mock.mapper.MockMajorSubjectMapper">
+
+    <resultMap type="com.zhongzheng.modules.mock.domain.MockMajorSubject" id="MockMajorSubjectResult">
+        <result property="mockMajorSubjectId" column="mock_major_subject_id"/>
+        <result property="mockMajorId" column="mock_major_id"/>
+        <result property="subjectId" column="subject_id"/>
+        <result property="examId" column="exam_id"/>
+        <result property="handoutsId" column="handouts_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>

+ 18 - 0
zhongzheng-system/src/main/resources/mapper/modules/mock/MockMajorSubjectTimeMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.mock.mapper.MockMajorSubjectTimeMapper">
+
+    <resultMap type="com.zhongzheng.modules.mock.domain.MockMajorSubjectTime" id="MockMajorSubjectTimeResult">
+        <result property="id" column="id"/>
+        <result property="mockMajorSubjectId" column="mock_major_subject_id"/>
+        <result property="examTime" column="exam_time"/>
+        <result property="createTime" column="create_time"/>
+        <result property="startTime" column="start_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>

+ 9 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

@@ -443,5 +443,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="queryDetailByOrderSn" parameterType="String" resultMap="OrderResultVo">
         SELECT * from `order` where order_sn = #{orderSn}
     </select>
+    <select id="getUserGoods" resultType="java.lang.Long" parameterType="java.lang.Long">
+        SELECT DISTINCT og.goods_id
+        FROM `order` o
+                 LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+        WHERE o.user_id = #{userId}
+          and o.order_status = 1
+          and o.pay_status in (2,3)
+          and og.status = 1
+    </select>
 
 </mapper>

+ 72 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserMockSubscribeMapper.xml

@@ -0,0 +1,72 @@
+<?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.user.mapper.UserMockSubscribeMapper">
+
+    <resultMap type="com.zhongzheng.modules.user.domain.UserMockSubscribe" id="UserMockSubscribeResult">
+        <result property="subscribeId" column="subscribe_id"/>
+        <result property="userId" column="user_id"/>
+        <result property="subscribeStatus" column="subscribe_status"/>
+        <result property="beforeStatus" column="before_status"/>
+        <result property="examStatus" column="exam_status"/>
+        <result property="performance" column="performance"/>
+        <result property="handStatus" column="hand_status"/>
+        <result property="result" column="result"/>
+        <result property="applyId" column="apply_id"/>
+        <result property="mockMajorSubjectId" column="mock_major_subject_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="applySiteStartTime" column="apply_site_start_time"/>
+        <result property="applySiteEndTime" column="apply_site_end_time"/>
+        <result property="applySiteExamTime" column="apply_site_exam_time"/>
+    </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.user.vo.UserMockSubscribeVo" id="UserMockSubscribeVoResult">
+        <result property="subscribeId" column="subscribe_id"/>
+        <result property="userId" column="user_id"/>
+        <result property="subscribeStatus" column="subscribe_status"/>
+        <result property="beforeStatus" column="before_status"/>
+        <result property="examStatus" column="exam_status"/>
+        <result property="performance" column="performance"/>
+        <result property="handStatus" column="hand_status"/>
+        <result property="result" column="result"/>
+        <result property="applyId" column="apply_id"/>
+        <result property="mockMajorSubjectId" column="mock_major_subject_id"/>
+        <result property="applySiteStartTime" column="apply_site_start_time"/>
+        <result property="applySiteEndTime" column="apply_site_end_time"/>
+        <result property="applySiteExamTime" column="apply_site_exam_time"/>
+        <result property="applyName" column="apply_name"/>
+        <result property="educationTypeId" column="educationType_id"/>
+        <result property="educationName" column="educationType_name"/>
+        <result property="businessId" column="business_id"/>
+        <result property="businessName" column="business_name"/>
+        <result property="majorId" column="major_id"/>
+        <result property="categoryName" column="category_name"/>
+        <result property="subjectId" column="subject_id"/>
+        <result property="subjectName" column="subject_name"/>
+    </resultMap>
+    <select id="getInfo" parameterType="java.lang.Long" resultMap="UserMockSubscribeVoResult">
+        SELECT 	ums.*,
+                  ma.apply_name,
+                  ma.education_type_id,
+                  cet.education_name,
+                  ma.business_id,
+                  cb.business_name,
+                  mm.major_id,
+                  m.category_name,
+                  mms.subject_id,
+                  cs.subject_name
+        FROM user_mock_subscribe ums
+                 LEFT JOIN mock_apply ma ON ums.apply_id = ma.apply_id
+                 LEFT JOIN course_education_type cet ON ma.education_type_id = cet.id
+                 LEFT JOIN course_business cb ON ma.business_id = cb.id
+                 LEFT JOIN mock_major mm ON ma.apply_id = mm.apply_id
+                 LEFT JOIN major m ON mm.major_id = m.id
+                 LEFT JOIN mock_major_subject mms ON mm.mock_major_id = mms.mock_major_id
+                 LEFT JOIN course_subject cs ON mms.subject_id = cs.id
+        WHERE user_id = #{userId}
+    </select>
+
+
+</mapper>