Browse Source

fix 选班

he2802 3 years ago
parent
commit
8c965d463b
32 changed files with 747 additions and 32 deletions
  1. 16 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  2. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMapper.java
  3. 9 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  4. 3 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  5. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserVo.java
  6. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserAddBo.java
  7. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserChangeBo.java
  8. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserEditBo.java
  9. 42 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyCountLogAddBo.java
  10. 48 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyCountLogEditBo.java
  11. 54 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyCountLogQueryBo.java
  12. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/ClassGradeUser.java
  13. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/StudyCountLog.java
  14. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/StudyCountLogMapper.java
  15. 3 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  16. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IStudyCountLogService.java
  17. 61 7
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  18. 103 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/StudyCountLogServiceImpl.java
  19. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java
  20. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeVo.java
  21. 47 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/StudyCountLogVo.java
  22. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  23. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  24. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  25. 82 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  26. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  27. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  28. 10 4
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterSectionMapper.xml
  29. 35 2
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  30. 3 6
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  31. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  32. 19 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/StudyCountLogMapper.xml

+ 16 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -7,9 +7,12 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxTokenService;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.service.*;
 import com.zhongzheng.modules.grade.vo.*;
+import com.zhongzheng.modules.order.bo.OrderAddBo;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -45,6 +48,8 @@ public class ClassGradeController extends BaseController {
 
     private final IUserPeriodStatusService userPeriodStatusService;
 
+    private final WxTokenService wxTokenService;
+
     /**
      * 查询班级列表
      */
@@ -66,4 +71,15 @@ public class ClassGradeController extends BaseController {
     public AjaxResult<ClassGradeVo> getInfo(@PathVariable("classId") Long classId) {
         return AjaxResult.success(iClassGradeService.queryById(classId));
     }
+
+    /**
+     * 新增订单
+     */
+    @ApiOperation("选新班")
+    @PostMapping("/changeGrade")
+    public AjaxResult changeGrade(@RequestBody ClassGradeUserChangeBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return AjaxResult.success(iClassGradeUserService.changeGrade(bo));
+    }
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMapper.java

@@ -12,6 +12,7 @@ import com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodVo;
 import com.zhongzheng.modules.goods.vo.GoodsUserVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
+import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import com.zhongzheng.modules.user.bo.UserPlanQueryBo;
 import org.apache.ibatis.annotations.Param;
 
@@ -43,5 +44,5 @@ public interface CourseMapper extends BaseMapper<Course> {
 
     Long rebuildNext(ClassGradeUserQueryBo bo);
 
-    Long gradeIdSelect(@Param("userId") Long userId,@Param("goodsId") Long goodsId);
+    ClassGradeVo gradeIdSelect(@Param("userId") Long userId, @Param("goodsId") Long goodsId);
 }

+ 9 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -30,6 +30,7 @@ import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.bo.UserPeriodStatusAddBo;
 import com.zhongzheng.modules.grade.domain.UserPeriodStatus;
 import com.zhongzheng.modules.grade.service.IUserPeriodStatusService;
+import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserPlanQueryBo;
 import com.zhongzheng.modules.user.domain.UserStudyRecordPhoto;
@@ -275,8 +276,14 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         //用户课程得详细信息
         for (GoodsUserVo goodsUserVo : goodsUserVos) {
             //获得当前所在班级
-            Long gradeId = baseMapper.gradeIdSelect(goodsUserVo.getUserId(),goodsUserVo.getGoodsId());
-            goodsUserVo.setGradeId(gradeId);
+            ClassGradeVo classGradeVo = baseMapper.gradeIdSelect(goodsUserVo.getUserId(),goodsUserVo.getGoodsId());
+            goodsUserVo.setGradeId(classGradeVo.getGradeId());
+            goodsUserVo.setLearningStatus(classGradeVo.getLearningStatus());
+            goodsUserVo.setLearningTimeStart(classGradeVo.getLearningTimeStart());
+            goodsUserVo.setGradeStatus(classGradeVo.getStatus());
+            goodsUserVo.setClassStartTime(classGradeVo.getClassStartTime());
+            goodsUserVo.setClassEndTime(classGradeVo.getClassEndTime());
+            goodsUserVo.setPeriodStatus(classGradeVo.getPeriodStatus());
             Long secLong = 0L;
             Long studyLong = 0L;
             SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();

+ 3 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -25,6 +25,7 @@ import com.zhongzheng.modules.goods.service.IGoodsAuditionConfigService;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.*;
+import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -358,8 +359,8 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     public GoodsVo selectUserDetail(CourseQueryBo bo) {
         GoodsVo goodsVo = goodsMapper.selectUserDetail(bo);
         //获得当前所在班级
-        Long gradeId = courseMapper.gradeIdSelect(bo.getUserId(),bo.getGoodsId());
-        goodsVo.setGradeId(gradeId);
+        ClassGradeVo classGradeVo = courseMapper.gradeIdSelect(bo.getUserId(),bo.getGoodsId());
+        goodsVo.setGradeId(classGradeVo.getGradeId());
         return goodsVo;
     }
 

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserVo.java

@@ -264,4 +264,29 @@ public class GoodsUserVo {
 
 	@ApiModelProperty("是否确认重修 1已经确认  0未确认")
 	private Long rebuildStatus;
+
+	/** 开放学习时间 */
+	@Excel(name = "开放学习时间")
+	@ApiModelProperty("开放学习时间")
+	private Long learningTimeStart;
+	/** 即刻 1  待定2  日期3 */
+	@Excel(name = "即刻 1  待定2  日期3")
+	@ApiModelProperty("即刻 1  待定2  日期3")
+	private Integer learningStatus;
+	/** 1有效 0无效 */
+	@Excel(name = "1有效 0无效")
+	@ApiModelProperty("1有效 0无效")
+	private Integer gradeStatus;
+	/** 班级有效期开始时间 */
+	@Excel(name = "班级有效期开始时间")
+	@ApiModelProperty("班级有效期开始时间")
+	private Long classStartTime;
+	/** 班级有效期结束时间 */
+	@Excel(name = "班级有效期结束时间")
+	@ApiModelProperty("班级有效期结束时间")
+	private Long classEndTime;
+	@ApiModelProperty("学时审批状态 0 未通过 1通过 2待审核 -1 不可审核")
+	private Integer periodStatus;
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserAddBo.java

@@ -60,4 +60,7 @@ public class ClassGradeUserAddBo {
     /** 学时变为待审核时间 */
     @ApiModelProperty("学时变为待审核时间")
     private Long periodWaitTime;
+    /** 是否已换班 0没有 1已换去新班 */
+    @ApiModelProperty("是否已换班 0没有 1已换去新班")
+    private Integer changeGrade;
 }

+ 35 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserChangeBo.java

@@ -0,0 +1,35 @@
+package com.zhongzheng.modules.grade.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 学员记录添加对象 class_grade_user
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("学员换班对象")
+public class ClassGradeUserChangeBo {
+
+    /** 学员ID */
+    @ApiModelProperty("学员ID")
+    private Long userId;
+    /** 班级id */
+    @ApiModelProperty("班级id")
+    private Long gradeId;
+
+    @ApiModelProperty("老班级id")
+    private Long oldGradeId;
+
+    /** 订单商品id */
+    @ApiModelProperty("订单商品id")
+    private Long orderGoodsId;
+
+    @ApiModelProperty("商品id")
+    private Long goodsId;
+
+}

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserEditBo.java

@@ -65,4 +65,8 @@ public class ClassGradeUserEditBo {
     /** 学时变为待审核时间 */
     @ApiModelProperty("学时变为待审核时间")
     private Long periodWaitTime;
+
+    /** 是否已换班 0没有 1已换去新班 */
+    @ApiModelProperty("是否已换班 0没有 1已换去新班")
+    private Integer changeGrade;
 }

+ 42 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyCountLogAddBo.java

@@ -0,0 +1,42 @@
+package com.zhongzheng.modules.grade.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 学习次数使用记录添加对象 study_count_log
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+@Data
+@ApiModel("学习次数使用记录添加对象")
+public class StudyCountLogAddBo {
+
+    /** 学员ID */
+    @ApiModelProperty("学员ID")
+    private Long userId;
+    /** 班级id */
+    @ApiModelProperty("班级id")
+    private Long gradeId;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long orderGoodsId;
+    /** 学习次数 */
+    @ApiModelProperty("学习次数")
+    private Long studyCount;
+    /** 状态 1增加 -1消耗 */
+    @ApiModelProperty("状态 1增加 -1消耗")
+    private Integer status;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 48 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyCountLogEditBo.java

@@ -0,0 +1,48 @@
+package com.zhongzheng.modules.grade.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 学习次数使用记录编辑对象 study_count_log
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+@Data
+@ApiModel("学习次数使用记录编辑对象")
+public class StudyCountLogEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 学员ID */
+    @ApiModelProperty("学员ID")
+    private Long userId;
+
+    /** 班级id */
+    @ApiModelProperty("班级id")
+    private Long gradeId;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long orderGoodsId;
+
+    /** 学习次数 */
+    @ApiModelProperty("学习次数")
+    private Long studyCount;
+
+    /** 状态 1增加 -1消耗 */
+    @ApiModelProperty("状态 1增加 -1消耗")
+    private Integer status;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+}

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyCountLogQueryBo.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.modules.grade.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;
+
+/**
+ * 学习次数使用记录分页查询对象 study_count_log
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("学习次数使用记录分页查询对象")
+public class StudyCountLogQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 学员ID */
+	@ApiModelProperty("学员ID")
+	private Long userId;
+	/** 班级id */
+	@ApiModelProperty("班级id")
+	private Long gradeId;
+	/** $column.columnComment */
+	@ApiModelProperty("$column.columnComment")
+	private Long orderGoodsId;
+	/** 学习次数 */
+	@ApiModelProperty("学习次数")
+	private Long studyCount;
+	/** 状态 1增加 -1消耗 */
+	@ApiModelProperty("状态 1增加 -1消耗")
+	private Integer status;
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/ClassGradeUser.java

@@ -54,5 +54,7 @@ private static final long serialVersionUID=1L;
     private Integer learnStatus;
     /** 学时变为待审核时间 */
     private Long periodWaitTime;
+    /** 是否已换班 0没有 1已换去新班 */
+    private Integer changeGrade;
 }
 

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/StudyCountLog.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.grade.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;
+
+/**
+ * 学习次数使用记录对象 study_count_log
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("study_count_log")
+public class StudyCountLog implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 学员ID */
+    private Long userId;
+    /** 班级id */
+    private Long gradeId;
+    /** $column.columnComment */
+    private Long orderGoodsId;
+    /** 学习次数 */
+    private Long studyCount;
+    /** 状态 1增加 -1消耗 */
+    private Integer status;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/StudyCountLogMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.grade.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.grade.domain.StudyCountLog;
+
+/**
+ * 学习次数使用记录Mapper接口
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+public interface StudyCountLogMapper extends BaseMapper<StudyCountLog> {
+
+}

+ 3 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -1,11 +1,8 @@
 package com.zhongzheng.modules.grade.service;
 
-import com.zhongzheng.modules.grade.bo.UserPeriodQueryBo;
+import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
 import com.zhongzheng.modules.grade.vo.*;
-import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
-import com.zhongzheng.modules.grade.bo.ClassGradeUserAddBo;
-import com.zhongzheng.modules.grade.bo.ClassGradeUserEditBo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.user.domain.User;
 
@@ -37,6 +34,8 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 	 */
 	Boolean insertByAddBo(ClassGradeUserAddBo bo);
 
+	Boolean changeGrade(ClassGradeUserChangeBo bo);
+
 	/**
 	 * 根据编辑业务对象修改学员记录
 	 * @param bo 学员记录编辑业务对象

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IStudyCountLogService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.grade.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.grade.bo.StudyCountLogAddBo;
+import com.zhongzheng.modules.grade.bo.StudyCountLogEditBo;
+import com.zhongzheng.modules.grade.bo.StudyCountLogQueryBo;
+import com.zhongzheng.modules.grade.domain.StudyCountLog;
+import com.zhongzheng.modules.grade.vo.StudyCountLogVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 学习次数使用记录Service接口
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+public interface IStudyCountLogService extends IService<StudyCountLog> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	StudyCountLogVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<StudyCountLogVo> queryList(StudyCountLogQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入学习次数使用记录
+	 * @param bo 学习次数使用记录新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(StudyCountLogAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改学习次数使用记录
+	 * @param bo 学习次数使用记录编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(StudyCountLogEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 61 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -2,11 +2,21 @@ package com.zhongzheng.modules.grade.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.modules.grade.bo.UserPeriodQueryBo;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.grade.bo.*;
+import com.zhongzheng.modules.grade.service.IClassGradeService;
 import com.zhongzheng.modules.grade.service.IUserPeriodStatusService;
 import com.zhongzheng.modules.grade.vo.*;
+import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
+import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserPlan;
@@ -22,18 +32,14 @@ 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.grade.bo.ClassGradeUserAddBo;
-import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
-import com.zhongzheng.modules.grade.bo.ClassGradeUserEditBo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
 import com.zhongzheng.modules.grade.mapper.ClassGradeUserMapper;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -54,6 +60,18 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private IUserStudyRecordPhotoService userStudyRecordPhotoService;
 
+    @Autowired
+    private IOrderService iOrderService;
+
+    @Autowired
+    private IOrderGoodsService iOrderGoodsService;
+
+    @Autowired
+    private IClassGradeService iClassGradeService;
+
+    @Autowired
+    private IGoodsService iGoodsService;
+
     @Autowired
     private UserMapper userMapper;
 
@@ -97,6 +115,42 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return this.save(add);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean changeGrade(ClassGradeUserChangeBo bo) {
+        ClassGradeQueryBo classGradeQueryBo = new ClassGradeQueryBo();
+        classGradeQueryBo.setUserId(bo.getUserId());
+        classGradeQueryBo.setGoodsId(bo.getGoodsId());
+        classGradeQueryBo.setPastDue(1L);
+        List<ClassGradeVo> list = iClassGradeService.queryList(classGradeQueryBo);
+        if(list!=null&&list.size()>0){
+            throw new CustomException("包含购买商品班级尚未过期");
+        }
+        OrderGoodsVo orderGoodsVo = iOrderGoodsService.queryById(bo.getOrderGoodsId());
+        if(Validator.isEmpty(orderGoodsVo)||Validator.isEmpty(orderGoodsVo.getStudyCount())||orderGoodsVo.getStudyCount()<1){
+            throw new CustomException("学习次数不够");
+        }
+        GoodsVo goodsVo = iGoodsService.selectDetail(bo.getGoodsId());
+        //分新班
+        if(iOrderService.changeGrade(goodsVo.getGoodsName(),bo.getGoodsId(),bo.getOrderGoodsId(),bo.getGradeId(),bo.getUserId())){
+            //老班修改换班状态
+            ClassGradeUser classGradeUser =  getOne(new LambdaQueryWrapper< ClassGradeUser>().eq(ClassGradeUser::getUserId,bo.getUserId())
+                    .eq(ClassGradeUser::getStatus,1)
+                    .eq(ClassGradeUser::getGradeId,bo.getOldGradeId())
+                    .last("limit 1"));
+            classGradeUser.setChangeGrade(1);
+            classGradeUser.setUpdateTime(DateUtils.getNowTime());
+            updateById(classGradeUser);
+            //消耗学习次数
+            OrderGoods orderGoods = new OrderGoods();
+            orderGoods.setOrderGoodsId(bo.getOrderGoodsId());
+            orderGoods.setStudyCount(orderGoodsVo.getStudyCount()-1);
+            orderGoods.setUpdateTime(DateUtils.getNowTime());
+            iOrderGoodsService.updateById(orderGoods);
+        }
+        return true;
+    }
+
     @Override
     public Boolean updateByEditBo(ClassGradeUserEditBo bo) {
         for (Long aLong : bo.getId()) {

+ 103 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/StudyCountLogServiceImpl.java

@@ -0,0 +1,103 @@
+package com.zhongzheng.modules.grade.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.grade.bo.StudyCountLogAddBo;
+import com.zhongzheng.modules.grade.bo.StudyCountLogEditBo;
+import com.zhongzheng.modules.grade.bo.StudyCountLogQueryBo;
+import com.zhongzheng.modules.grade.domain.StudyCountLog;
+import com.zhongzheng.modules.grade.mapper.StudyCountLogMapper;
+import com.zhongzheng.modules.grade.service.IStudyCountLogService;
+import com.zhongzheng.modules.grade.vo.StudyCountLogVo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 学习次数使用记录Service业务层处理
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+@Service
+public class StudyCountLogServiceImpl extends ServiceImpl<StudyCountLogMapper, StudyCountLog> implements IStudyCountLogService {
+
+    @Override
+    public StudyCountLogVo queryById(Long id){
+        StudyCountLog db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, StudyCountLogVo.class);
+    }
+
+    @Override
+    public List<StudyCountLogVo> queryList(StudyCountLogQueryBo bo) {
+        LambdaQueryWrapper<StudyCountLog> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, StudyCountLog::getUserId, bo.getUserId());
+        lqw.eq(bo.getGradeId() != null, StudyCountLog::getGradeId, bo.getGradeId());
+        lqw.eq(bo.getOrderGoodsId() != null, StudyCountLog::getOrderGoodsId, bo.getOrderGoodsId());
+        lqw.eq(bo.getStudyCount() != null, StudyCountLog::getStudyCount, bo.getStudyCount());
+        lqw.eq(bo.getStatus() != null, StudyCountLog::getStatus, bo.getStatus());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<StudyCountLogVo> entity2Vo(Collection<StudyCountLog> collection) {
+        List<StudyCountLogVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, StudyCountLogVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<StudyCountLog> page = (Page<StudyCountLog>)collection;
+            Page<StudyCountLogVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(StudyCountLogAddBo bo) {
+        StudyCountLog add = BeanUtil.toBean(bo, StudyCountLog.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(StudyCountLogEditBo bo) {
+        StudyCountLog update = BeanUtil.toBean(bo, StudyCountLog.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(StudyCountLog entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java

@@ -66,4 +66,9 @@ public class ClassGradeUserVo {
 	/** 添加时间 */
 	@ApiModelProperty("添加时间")
 	private Long createTime;
+
+	/** 是否已换班 0没有 1已换去新班 */
+	@Excel(name = "是否已换班 0没有 1已换去新班")
+	@ApiModelProperty("是否已换班 0没有 1已换去新班")
+	private Integer changeGrade;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeVo.java

@@ -134,4 +134,7 @@ public class ClassGradeVo {
 	@Excel(name = "学时变为待审核时间")
 	@ApiModelProperty("学时变为待审核时间")
 	private Long periodWaitTime;
+
+	@ApiModelProperty("学时审批状态 0 未通过 1通过 2待审核 -1 不可审核")
+	private Integer periodStatus;
 }

+ 47 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/StudyCountLogVo.java

@@ -0,0 +1,47 @@
+package com.zhongzheng.modules.grade.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 学习次数使用记录视图对象 mall_package
+ *
+ * @author hjl
+ * @date 2022-01-20
+ */
+@Data
+@ApiModel("学习次数使用记录视图对象")
+public class StudyCountLogVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 学员ID */
+	@Excel(name = "学员ID")
+	@ApiModelProperty("学员ID")
+	private Long userId;
+	/** 班级id */
+	@Excel(name = "班级id")
+	@ApiModelProperty("班级id")
+	private Long gradeId;
+	/** $column.columnComment */
+	@Excel(name = "班级id")
+	@ApiModelProperty("$column.columnComment")
+	private Long orderGoodsId;
+	/** 学习次数 */
+	@Excel(name = "学习次数")
+	@ApiModelProperty("学习次数")
+	private Long studyCount;
+	/** 状态 1增加 -1消耗 */
+	@Excel(name = "状态 1增加 -1消耗")
+	@ApiModelProperty("状态 1增加 -1消耗")
+	private Integer status;
+}

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -23,7 +23,7 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
 	 * 查询单个
 	 * @return
 	 */
-	OrderGoodsVo queryById(String orderSn);
+	OrderGoodsVo queryById(Long orderGoodsId);
 
 	OrderGoodsVo selectDetail(OrderGoodsQueryBo bo);
 

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

@@ -25,6 +25,7 @@ public interface IOrderService extends IService<Order> {
 	 */
 	OrderVo queryById(Long orderId);
 
+	boolean changeGrade(String goodsName,Long goodsId,Long orderGoodsId,Long gradeId,Long userId);
 	/**
 	 * 查询列表
 	 */

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -69,8 +69,8 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
     private IClassGradeGoodsService iClassGradeGoodsService;
 
     @Override
-    public OrderGoodsVo queryById(String orderSn){
-        OrderGoods db = this.baseMapper.selectById(orderSn);
+    public OrderGoodsVo queryById(Long orderGoodsId){
+        OrderGoods db = this.baseMapper.selectById(orderGoodsId);
         return BeanUtil.toBean(db, OrderGoodsVo.class);
     }
 

+ 82 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -563,7 +563,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             throw new CustomException("该学员已在此商品有效期内的班级,无法加入新的有效期班级,请查看该学员此商品下的班级");
         }*/
         //指定班级
-        System.out.println("指定班级"+gradeId);
         if(gradeId!=null&&gradeId>0){
             ClassGradeVo classGradeVo = iClassGradeService.queryById(gradeId);
             if(classGradeVo==null){
@@ -637,6 +636,88 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return true;
     }
 
+    //选择新的班级
+    @Override
+    public boolean changeGrade(String goodsName,Long goodsId,Long orderGoodsId,Long gradeId,Long userId){
+        //查询该学员有没有有效期内同商品班级 有就不允许添加
+       /* Integer classNum = baseMapper.selectUserClass(goodsId,userId);
+        if (classNum > 0){
+            throw new CustomException("该学员已在此商品有效期内的班级,无法加入新的有效期班级,请查看该学员此商品下的班级");
+        }*/
+        //指定班级
+        if(gradeId!=null&&gradeId>0){
+            ClassGradeVo classGradeVo = iClassGradeService.queryById(gradeId);
+            if(classGradeVo==null){
+                throw new CustomException("班级不存在");
+            }
+            if(classGradeVo.getStatus()!=1){
+                throw new CustomException("班级已失效");
+            }
+            ClassGradeGoods gradeGoods = iClassGradeGoodsService.getOne(new LambdaQueryWrapper<ClassGradeGoods>().eq(ClassGradeGoods::getGradeId,gradeId)
+                    .eq(ClassGradeGoods::getGoodsId,goodsId));
+            if(gradeGoods==null){
+                throw new CustomException("该班级不支持该商品使用");
+            }
+            LambdaQueryWrapper<ClassGradeUser> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(ClassGradeUser::getGradeId,gradeId);
+            lqw.eq(ClassGradeUser::getStatus,1);
+            int studentNum = iClassGradeUserService.count(lqw);
+            //临时锁定的班级学员数量
+            LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
+            lqwLock.eq(ClassGradeUserTemp::getGradeId,gradeId);
+            lqwLock.eq(ClassGradeUserTemp::getStatus,1);
+            int locakStudentNum = iClassGradeUserTempService.count(lqwLock);
+            //预留0空位避免超人数
+            if((classGradeVo.getStudentUpper()-studentNum-locakStudentNum)>0){
+                //班级还有剩位,直接加入班级
+                return joinGrade(orderGoodsId,gradeId,userId);
+            }
+        }
+        //无指定班级或者指定班级已满
+        ClassGradeQueryBo bo = new ClassGradeQueryBo();
+        bo.setGoodsId(goodsId);
+        bo.setPastDue(1L);
+        bo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
+        List<ClassGradeVo> classGradeVoList =  iClassGradeService.queryList(bo);
+        for(int i = 0; i < classGradeVoList.size(); i++){
+            ClassGradeVo classGradeVo = classGradeVoList.get(i);
+            //临时锁定的班级学员数量
+            LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
+            lqwLock.eq(ClassGradeUserTemp::getGradeId,gradeId);
+            lqwLock.eq(ClassGradeUserTemp::getStatus,1);
+            int locakStudentNum = iClassGradeUserTempService.count(lqwLock);
+            //预留0空位避免超人数
+            if((classGradeVo.getStudentUpper()-classGradeVo.getStudentNum()-locakStudentNum)>0){
+                //有空位则进入班级
+                gradeId = classGradeVo.getGradeId();
+                //班级还有剩位,直接加入班级
+                return joinGrade(orderGoodsId,gradeId,userId);
+            }
+        }
+
+        //创建新班级
+        ClassGrade classGrade = new ClassGrade();
+        classGrade.setStudentUpper(ClassGrade.INIT_UPPER); //上限300
+        classGrade.setCreateTime(DateUtils.getNowTime());
+        classGrade.setLearningStatus(2);//待定
+        classGrade.setUpdateTime(DateUtils.getNowTime());
+        classGrade.setStatus(1);
+        String gradeCode = ServletUtils.getEncoded("BJ");
+        classGrade.setGradeCode(gradeCode);
+        classGrade.setClassName(goodsName+gradeCode);
+        boolean save = iClassGradeService.save(classGrade);
+        //绑定班级商品
+        ClassGradeGoods classGradeGoods = new ClassGradeGoods();
+        classGradeGoods.setGradeId(classGrade.getGradeId());
+        classGradeGoods.setGoodsId(goodsId);
+        classGradeGoods.setCreateTime(DateUtils.getNowTime());
+        classGradeGoods.setUpdateTime(DateUtils.getNowTime());
+        iClassGradeGoodsService.save(classGradeGoods);
+        //加入班级
+        joinGrade(orderGoodsId,classGrade.getGradeId(),userId);
+        return true;
+    }
+
     /**
      * 锁定班级
      * @param orderGoodsId

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

@@ -229,6 +229,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                 List<InformRemindVo> list = iInformRemindService.queryList(informRemindQueryBo);
                 CourseQueryBo courseQueryBo = new CourseQueryBo();
                 courseQueryBo.setGoodsId(bo.getGoodsId());
+                courseQueryBo.setUserId(bo.getUserId());
                 GoodsVo goodsVo = iGoodsService.selectUserDetail(courseQueryBo);
                 if (!CollectionUtils.isEmpty(list)){
                     InformRemindVo informRemindVo = list.get(0);

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -34,7 +34,9 @@ import com.zhongzheng.modules.exam.service.IExamNoteService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUserTemp;
+import com.zhongzheng.modules.grade.domain.StudyCountLog;
 import com.zhongzheng.modules.grade.service.IClassGradeUserTempService;
+import com.zhongzheng.modules.grade.service.IStudyCountLogService;
 import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
@@ -149,6 +151,9 @@ public class WxPayServiceImpl  implements IWxPayService {
     @Autowired
     private IGoodsService iGoodsService;
 
+    @Autowired
+    private IStudyCountLogService iStudyCountLogService;
+
 
 
 
@@ -421,6 +426,16 @@ public class WxPayServiceImpl  implements IWxPayService {
             iClassGradeUserTempService.updateById(classGradeUserTemp);//关闭锁定状态
             iOrderService.joinGrade(orderGoodsId,classGradeUserTemp.getGradeId(),classGradeUserTemp.getUserId());
         }
+        //记录消耗一次学习机会
+        StudyCountLog studyCountLog = new StudyCountLog();
+        studyCountLog.setGradeId(classGradeUserTemp.getGradeId());
+        studyCountLog.setStatus(-1);
+        studyCountLog.setOrderGoodsId(orderGoodsId);
+        studyCountLog.setStudyCount(1L);
+        studyCountLog.setUserId(classGradeUserTemp.getUserId());
+        studyCountLog.setCreateTime(DateUtils.getNowTime());
+        studyCountLog.setUpdateTime(DateUtils.getNowTime());
+        iStudyCountLogService.save(studyCountLog);
         return true;
     }
 

+ 10 - 4
zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterSectionMapper.xml

@@ -124,13 +124,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             e.exam_id as type_id,
             #{gradeId} as grade_id,
             2 as type,
-            ubr.report_status,
-            ubr.performance
+            ubr1.report_status,
+            ubr1.performance
         FROM
             exam e
                 LEFT JOIN course_menu_exam cme ON cme.exam_id = e.exam_id
-                LEFT JOIN user_bank_record ubr on e.exam_id = ubr.exam_id and  ubr.user_id = #{userId}
-                and ubr.chapter_id = #{userId}
+                LEFT JOIN (SELECT
+                               any_value ( ubr.report_status ) report_status,
+                               any_value ( ubr.performance ) performance,
+                               ubr.exam_id
+                           FROM
+                               ( SELECT record_id, report_status, exam_id, performance FROM user_bank_record WHERE user_id = #{userId} AND grade_id = #{gradeId} ORDER BY record_id DESC LIMIT 9999 ) ubr
+                           GROUP BY
+                               ubr.exam_id)ubr1 on e.exam_id = ubr1.exam_id
         where 1=1
           and cme.chapter_id = #{chapterId}
           and cme.course_id = #{courseId}

+ 35 - 2
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -169,6 +169,32 @@
         <result property="applyName" column="apply_name"/>
         <result property="beforeName" column="before_name"/>
         <result property="courseNum" column="course_num"/>
+        <result property="orderGoodsId" column="order_goods_id"/>
+    </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.grade.vo.ClassGradeVo" id="ClassGradeVoResult">
+        <result property="gradeId" column="grade_id"/>
+        <result property="classStatus" column="class_status"/>
+        <result property="officialName" column="official_name"/>
+        <result property="className" column="class_name"/>
+        <result property="studentUpper" column="student_upper"/>
+        <result property="learningTimeStart" column="learning_time_start"/>
+        <result property="learningStatus" column="learning_status"/>
+        <result property="status" column="status"/>
+        <result property="classStartTime" column="class_start_time"/>
+        <result property="classEndTime" column="class_end_time"/>
+        <result property="examineId" column="examine_id"/>
+        <result property="areasId" column="areas_id"/>
+        <result property="sysUserId" column="sys_user_id"/>
+        <result property="interfacePushId" column="interface_push_id"/>
+        <result property="remark" column="remark"/>
+        <result property="interfaceAccountId" column="interface_account_id"/>
+        <result property="interfacePeriodId" column="interface_period_id"/>
+        <result property="interfaceAccountName" column="interface_account_name"/>
+        <result property="interfacePeriodName" column="interface_period_name"/>
+        <result property="interfacePushName" column="interface_push_name"/>
+        <result property="studentNum" column="student_num"/>
+        <result property="periodStatus" column="period_status"/>
     </resultMap>
 
 
@@ -407,6 +433,8 @@
         SELECT
         g.*,
         o.user_id,
+        og.study_count,
+        og.order_goods_id,
         (SELECT cet.education_name FROM  course_education_type cet  where cet.id = g.education_type_id) as education_name,
         (SELECT cet.project_name FROM  course_project_type cet where cet.id = g.project_id) as project_name,
         (SELECT cet.business_name FROM  course_business cet  where cet.id = g.business_id) as business_name,
@@ -454,9 +482,14 @@
           AND ups.`status` = 0
           AND ups.period_status = 1
     </select>
-    <select id="gradeIdSelect" parameterType="map"  resultType="Long">
+    <select id="gradeIdSelect" parameterType="map"  resultMap="ClassGradeVoResult">
         SELECT
-            cgu.grade_id
+            cgu.grade_id,
+            cg.class_start_time,
+            cg.class_end_time,
+            cg.status,
+            cg.learning_status,
+            cgu.period_status
         FROM
             class_grade_user cgu
                 LEFT JOIN class_grade cg on cgu.grade_id = cg.grade_id

+ 3 - 6
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -143,10 +143,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             GROUP BY
             gc.goods_id) gs  on g.goods_id = gs.goods_id
         </if>
-        <if test="goodsType ==1 and subjectId >0">
-            LEFT JOIN goods_course gc ON gc.goods_id = g.goods_id
-            LEFT JOIN course c ON gc.course_id = c.course_id
-        </if>
+
 
         WHERE
         1 = 1
@@ -199,8 +196,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND (#{validityStartTime} BETWEEN g.validity_start_time and g.validity_end_time or #{validityEndTime} BETWEEN g.validity_start_time and g.validity_end_time)
         </if>
         <if test="goodsType ==1 and subjectId >0">
-            AND c.`status` = 1
-            AND c.subject_id = #{subjectId}
+            AND (SELECT count(*) from goods_course gc LEFT JOIN course c ON gc.course_id = c.course_id where gc.goods_id = g.goods_id and c.`status` = 1
+            AND c.subject_id = #{subjectId}) >0
         </if>
         <if test="goodsType ==2 and subjectId >0">
             AND g.goods_id in(

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

@@ -14,6 +14,7 @@
         <result property="fromType" column="from_type"/>
         <result property="orderGoodsId" column="order_goods_id"/>
         <result property="periodWaitTime" column="period_wait_time"/>
+        <result property="changeGrade" column="change_grade"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.grade.vo.ClassGradeUserVo" id="ClassGradeUserVoResult">
@@ -26,6 +27,7 @@
         <result property="idCard" column="id_card"/>
         <result property="createBy" column="create_by"/>
         <result property="telPhone" column="telphone"/>
+        <result property="changeGrade" column="change_grade"/>
     </resultMap>
 
 

+ 19 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/StudyCountLogMapper.xml

@@ -0,0 +1,19 @@
+<?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.grade.mapper.StudyCountLogMapper">
+
+    <resultMap type="com.zhongzheng.modules.grade.domain.StudyCountLog" id="StudyCountLogResult">
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="gradeId" column="grade_id"/>
+        <result property="orderGoodsId" column="order_goods_id"/>
+        <result property="studyCount" column="study_count"/>
+        <result property="status" column="status"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>