he2802 3 tahun lalu
induk
melakukan
fbc086e4eb
22 mengubah file dengan 149 tambahan dan 51 penghapusan
  1. 1 6
      run-pre.sh
  2. 2 2
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassStudentController.java
  3. 0 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseController.java
  4. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  5. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsAttachedVo.java
  6. 4 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserVo.java
  7. 34 9
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  8. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  9. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodUserVo.java
  10. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/UserPeriodExportVo.java
  11. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java
  12. 22 8
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  13. 4 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  14. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java
  15. 7 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  16. 18 15
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  17. 2 1
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterSectionMapper.xml
  18. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  19. 20 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml
  20. 8 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  21. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml
  22. 2 1
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

+ 1 - 6
run-pre.sh

@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 # 定义应用组名
-group_name='zhongzheng'
+group_name='zhongzheng-pre'
 # 定义应用名称
 app_name='zhongzheng-saas-api-pre'
 # 定义应用版本
@@ -33,11 +33,6 @@ echo "开始等待20秒..."
 sleep 5
 echo "等待后继续"
 
-#!/usr/bin/env bash
-# 定义应用组名
-group_admin_name='zhongzheng'
-# 定义应用名称
-app_admin_name='zhongzheng-saas-pre'
 
 #!/usr/bin/env bash
 # 定义应用组名

+ 2 - 2
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassStudentController.java

@@ -194,8 +194,8 @@ public class ClassStudentController extends BaseController {
     @ApiOperation("更新用户学时状态")
     @PreAuthorize("@ss.hasPermi('app:user:edit')")
     @PostMapping("/updateUserPeriodStatus")
-    public AjaxResult<Void> updateUserPeriodStatus(@RequestBody ClassGradeUserQueryBo  bo) {
-        return toAjax(iClassGradeUserService.updateUserPeriodStatus(bo));
+    public AjaxResult updateUserPeriodStatus(@RequestBody ClassGradeUserQueryBo  bo) {
+        return AjaxResult.success(iClassGradeUserService.updateUserPeriodStatus(bo));
     }
 
     /**

+ 0 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -84,7 +84,6 @@ public class CourseController extends BaseController {
     @ApiOperation("查询用户商品重修状态")
     @GetMapping("/goodsRebuildStatus")
     public AjaxResult<Long> goodsRebuildStatus(CourseQueryBo bo) {
-        startPage();
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
         return AjaxResult.success(iCourseService.goodsRebuildStatus(bo));

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

@@ -74,6 +74,9 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Override
     public GoodsVo queryById(Long goodsId){
         Goods db = this.baseMapper.selectById(goodsId);
+        if(Validator.isEmpty(db)){
+            return null;
+        }
         GoodsVo goodsVo = BeanUtil.toBean(db, GoodsVo.class);
         //试听配置
         if(db.getGoodsAuditionConfig()!=null){

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsAttachedVo.java

@@ -73,5 +73,9 @@ public class GoodsAttachedVo {
 	private Integer recordStatus;
 	@ApiModelProperty("做卷类型  1练习 2考试")
 	private Integer doType;
+	@ApiModelProperty("做题数量")
+	private Integer doNum;
+	@ApiModelProperty("试卷可以做次数")
+	private Integer answerNum;
 
 }

+ 4 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserVo.java

@@ -245,11 +245,11 @@ public class GoodsUserVo {
 	private Long secAllNum;
 
 	/** 学习进度 */
-	@ApiModelProperty("0无预约考试 1有预约考试")
+	@ApiModelProperty("商品关联考试安排状态")
 	private Long applyStatus;
 
 	/** 学习进度 */
-	@ApiModelProperty("0无刷题 1有刷题")
+	@ApiModelProperty("商品关联前培状态")
 	private Long beforeStatus;
 
 	/** 学习进度 */
@@ -322,5 +322,7 @@ public class GoodsUserVo {
 	@Excel(name = "开班状态 0未开班 1开班")
 	@ApiModelProperty("开班状态 0未开班 1开班")
 	private Integer classStatus;
+	@ApiModelProperty("预约ID")
+	private Integer subscribeId;
 
 }

+ 34 - 9
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -279,6 +279,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                     studyCountLog.setUpdateTime(DateUtils.getNowTime());
                     studyCountLog.setOldGradeId(item.getUserId());
                     iStudyCountLogService.save(studyCountLog);
+                    //老班学习记录去掉
+
                 }
             }
         }
@@ -300,14 +302,14 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         }
         ClassGradeUserQueryBo queryBo = new ClassGradeUserQueryBo();
         queryBo.setGradeId(bo.getGradeId());
-        queryBo.setGoodsId(bo.getGoodsId());
+        queryBo.setUserId(bo.getUserId());
         ClassPeriodStudentVo classPeriodStudentVo = baseMapper.userPeriodStatus(queryBo);
         Long secLong = 0L;
         Long studyLong = 0L;
 
         SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
         subjectStudyRecordQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
-        subjectStudyRecordQueryBo.setUserId(classPeriodStudentVo.getUserId());
+        subjectStudyRecordQueryBo.setUserId(bo.getUserId());
         subjectStudyRecordQueryBo.setGradeId(bo.getGradeId());
         List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
         for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
@@ -325,7 +327,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         //总的审核状态按照策划规则
         ClassGradeUserQueryBo classGradeUserQueryBo = new ClassGradeUserQueryBo();
         classGradeUserQueryBo.setGradeId(bo.getGradeId());
-        classGradeUserQueryBo.setUserId(classPeriodStudentVo.getUserId());
+        classGradeUserQueryBo.setUserId(bo.getUserId());
         classGradeUserQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
         List<ClassPeriodUserVo> classPeriodUserVos1 = baseMapper.listPeriod(classGradeUserQueryBo);
         ClassPeriodUserVo classPeriodUserVos = classPeriodUserVos1.get(0);
@@ -338,6 +340,10 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             classPeriodStudentVo.setAllStatus(-1);
             gradePeriodStatus = -1;
         }else{
+            if(classPeriodStudentVo.getStuAllNum().equals(classPeriodStudentVo.getSecAllNum())){
+            }
+            if(classPeriodStudentVo.getExamNum().equals(classPeriodStudentVo.getRecordNum())){
+            }
             if (classPeriodStudentVo.getStuAllNum().equals(classPeriodStudentVo.getSecAllNum()) && classPeriodStudentVo.getExamNum().equals(classPeriodStudentVo.getRecordNum())){
                 if (classPeriodUserVos.getPending() != 0 || classPeriodUserVos.getExamPending() != 0){
                     classPeriodStudentVo.setAllStatus(0);
@@ -376,6 +382,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                 }
             }
         }
+
         classGradeUser1.setUpdateTime(DateUtils.getNowTime());
         iClassGradeUserService.update(classGradeUser1, classGradeUser);
         return gradePeriodStatus;
@@ -836,8 +843,6 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                 studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
 
             }
-            //BigDecimal divide = new BigDecimal(studyLong.toString()).divide(new BigDecimal(secLong.toString()),2,BigDecimal.ROUND_HALF_UP);
-            //classGradeStudentVo.setStudyNum(divide.multiply(new BigDecimal("100")).longValue());
             //总节数
             classPeriodStudentVo.setSecAllNum(secLong);
             //学习节数
@@ -854,7 +859,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             classPeriodUserVos.setExamPending(classPeriodUserVos.getExamNum()-classPeriodUserVos.getExamPass()-classPeriodUserVos.getExamCheat());
             //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过
             Integer gradePeriodStatus = 0; //班级里的审核状态字段,保持一致 0 未通过 1通过 2待审核 -1 不可审核
-            if(Validator.isEmpty(classPeriodStudentVo.getSecAllNum())||classPeriodStudentVo.getSecAllNum()==0){
+            /*if(Validator.isEmpty(classPeriodStudentVo.getSecAllNum())||classPeriodStudentVo.getSecAllNum()==0){
                 //空课程
                 classPeriodStudentVo.setAllStatus(-1);
                 gradePeriodStatus = -1;
@@ -874,7 +879,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                     classPeriodStudentVo.setAllStatus(-1);
                     gradePeriodStatus = -1;
                 }
-            }
+            }*/
+            classPeriodStudentVo.setAllStatus(changePeriodStatus(classPeriodStudentVo.getPeriodStatus()));
 
             //更新班级学时状态l
             /*if(!gradePeriodStatus.equals(classPeriodStudentVo.getPeriodStatus())){
@@ -934,6 +940,24 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return classPeriodStudentVos;
     }
 
+    private Integer changePeriodStatus(Long gradePeriodStatus){
+        //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过
+        //班级里的审核状态字段,保持一致 0 未通过 1通过 2待审核 -1 不可审核
+        if(gradePeriodStatus==0){
+            return 1;
+        }
+        else if(gradePeriodStatus==1){
+            return 2;
+        }
+        else if(gradePeriodStatus==2){
+            return 0;
+        }
+        else if(gradePeriodStatus==-1){
+            return -1;
+        }
+        return -100;
+    }
+
     @Override
     public List<UserPeriodExportVo> listUserStudyRecord(ClassGradeUserQueryBo bo) {
         //学习记录
@@ -1169,8 +1193,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             classPeriodUserVo.setSecAllNum(secLong);
             //学习节数
             classPeriodUserVo.setStuAllNum(studyLong);
-    //        classPeriodUserVo.setPending(classPeriodUserVo.getSecAllNum()-classPeriodUserVo.getPass()-classPeriodUserVo.getCheat());
-    //        classPeriodUserVo.setExamPending(classPeriodUserVo.getExamNum()-classPeriodUserVo.getExamPass()-classPeriodUserVo.getExamCheat());
+            classPeriodUserVo.setPending(classPeriodUserVo.getSecAllNum()-classPeriodUserVo.getPass()-classPeriodUserVo.getCheat());
+            classPeriodUserVo.setExamPending(classPeriodUserVo.getExamNum()-classPeriodUserVo.getExamPass()-classPeriodUserVo.getExamCheat());
                 //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过
             if (classPeriodUserVo.getStuAllNum().equals(classPeriodUserVo.getSecAllNum()) && classPeriodUserVo.getExamNum().equals(classPeriodUserVo.getRecordNum())){
                 if (classPeriodUserVo.getPending() != 0 || classPeriodUserVo.getExamPending() != 0){
@@ -1183,6 +1207,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             }else {
                 classPeriodUserVo.setAllStatus(-1);
             }
+        //    classPeriodUserVo.setAllStatus(changePeriodStatus(new Long(classPeriodUserVo.getPeriodStatus())));
         }
         return classPeriodUserVos;
     }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -173,6 +173,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
         }
         //通过或者不通过才发送消息
         if(gradePeriodStatus==1||gradePeriodStatus==0){
+            bo.setStatus(gradePeriodStatus);
             sendPeriodSMS(bo);
             sendPeriodSevenSMS(bo);
         }
@@ -312,6 +313,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
         }
         //发送消息
         if(gradePeriodStatus==1||gradePeriodStatus==0){
+            bo.setStatus(gradePeriodStatus);
             sendPeriodSMS(bo);
             sendPeriodSevenSMS(bo);
         }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodUserVo.java

@@ -115,4 +115,12 @@ public class ClassPeriodUserVo {
 
 	@ApiModelProperty("审核资料")
 	private String keyValue;
+
+	@ApiModelProperty("学时状态")
+	private Integer periodStatus;
+
+	@ApiModelProperty("节时长(秒)")
+	private Long studyStartTime;
+	@ApiModelProperty("节时长(秒)")
+	private Long studyEndTime;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/UserPeriodExportVo.java

@@ -50,4 +50,5 @@ public class UserPeriodExportVo {
 	@ApiModelProperty("测试成绩")
 	private BigDecimal score;
 
+
 }

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

@@ -146,6 +146,7 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
             UserStudyRecordQueryBo userStudyRecordQueryBo = new UserStudyRecordQueryBo();
             userStudyRecordQueryBo.setGoodsId(goods.getGoodsId());
             userStudyRecordQueryBo.setUserId(order.getUserId());
+            userStudyRecordQueryBo.setGradeId(orderGoods.getGradeId());
             Long userSeeTime = iUserStudyRecordService.getUserSeeTime(userStudyRecordQueryBo);
             if(userSeeTime.longValue()>=(30*60)){ //超30分钟不满足退款
                 throw new CustomException("不满足退款");
@@ -231,7 +232,7 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
             lqw.eq( ClassGradeUser::getUserId, userId);
             iClassGradeUserService.remove(lqw);
             //清除课程所有历史
-            iUserStudyRecordService.delUserCourseHistory(userId,goodsId);
+            iUserStudyRecordService.delUserCourseHistory(userId,goodsId,gradeId,orderGoodsId);
         }
         if(goodsType==2){
             //删除题库历史

+ 22 - 8
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -12,6 +12,8 @@ import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.service.IShoppingCartService;
+import com.zhongzheng.modules.course.service.ICourseBusinessService;
+import com.zhongzheng.modules.course.vo.CourseBusinessVo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.grade.bo.ClassGradeQueryBo;
@@ -95,6 +97,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IShoppingCartService iShoppingCartService;
 
+    @Autowired
+    private ICourseBusinessService iCourseBusinessService;
+
     @Autowired
     private RedisCache redisCache;
 
@@ -263,7 +268,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
                 redisLockEntity.setRequestId(requestId);
                 if(redisCache.lock(redisLockEntity)){
-                    arrangeGrade(goods.getGoodsName(),goods.getGoodsId(),orderGoods.getOrderGoodsId(),gradeId,add.getUserId(),out_trade_no);
+                    arrangeGrade(goods.getGoodsName(),goods.getGoodsId(),orderGoods.getOrderGoodsId(),gradeId,add.getUserId(),out_trade_no,goods.getBusinessId());
                     redisCache.unlockLua(redisLockEntity);
                 }
                 iOrderGoodsService.updateById(orderGoods);
@@ -362,7 +367,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
                 redisLockEntity.setRequestId(requestId);
                 if(redisCache.lock(redisLockEntity)){
-                    arrangeGrade(goods.getGoodsName(),goods.getGoodsId(),orderGoods.getOrderGoodsId(),gradeId,add.getUserId(),out_trade_no);
+                    arrangeGrade(goods.getGoodsName(),goods.getGoodsId(),orderGoods.getOrderGoodsId(),gradeId,add.getUserId(),out_trade_no,goods.getBusinessId());
                     redisCache.unlockLua(redisLockEntity);
                 }
                 iOrderGoodsService.updateById(orderGoods);
@@ -520,7 +525,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         bo.setPastDue(1L);
         List<ClassGradeVo> list = iClassGradeService.queryList(bo);
         if(list!=null&&list.size()>0){
-            throw new CustomException("存在已购买【班级有效期未过期】的商品,不可以重复购买商品");
+            throw new CustomException("存在已购买【班级有效期未过期】的商品,不可以重复购买商品",511);
         }
         //判断是否有锁定的班级
         ClassGradeUserTempQueryBo gradeUserTempQueryBo = new ClassGradeUserTempQueryBo();
@@ -529,7 +534,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         gradeUserTempQueryBo.setStatus(ClassGradeUserTemp.STATUS_LOCK);
         List<ClassGradeUserTempVo> list1 = iClassGradeUserTempService.queryList(gradeUserTempQueryBo);
         if(list1!=null&&list1.size()>0){
-            throw new CustomException("购买商品尚有订单未支付");
+            throw new CustomException("购买商品尚有订单未支付",510);
         }
         return true;
     }
@@ -542,11 +547,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         bo.setGoodsId(goodsId);
         Long num = iOrderGoodsService.getBuyGoodsHistory(bo);
         if(num.longValue()>0){
-            throw new CustomException("不可以重复购买商品");
+            throw new CustomException("无法重复购买商品",511);
         }
         Long num1 = iOrderGoodsService.getBuyGoodsReadyPay(bo);
         if(num1.longValue()>0){
-            throw new CustomException("购买商品尚有订单未支付");
+            throw new CustomException("购买商品尚有订单未支付",510);
         }
         return false;
     }
@@ -557,7 +562,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
      * @param gradeId
      * @return
      */
-    public boolean arrangeGrade(String goodsName,Long goodsId,Long orderGoodsId,Long gradeId,Long userId,String orderSn){
+    public boolean arrangeGrade(String goodsName,Long goodsId,Long orderGoodsId,Long gradeId,Long userId,String orderSn,Long businessId){
         //查询该学员有没有有效期内同商品班级 有就不允许添加
        /* Integer classNum = baseMapper.selectUserClass(goodsId,userId);
         if (classNum > 0){
@@ -615,10 +620,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         }
 
         //创建新班级
+        CourseBusinessVo businessVo = iCourseBusinessService.queryById(businessId);
+        boolean isConfigTp = false; //商品是否有配置选班模板
+        if(Validator.isNotEmpty(businessVo)&&Validator.isNotEmpty(businessVo.getTemplateStatus())&&businessVo.getTemplateStatus()==1){
+            isConfigTp = true;
+        }
         ClassGrade classGrade = new ClassGrade();
         classGrade.setStudentUpper(ClassGrade.INIT_UPPER); //上限300
         classGrade.setCreateTime(DateUtils.getNowTime());
-        classGrade.setLearningStatus(2);//待定
+        if(isConfigTp){
+            classGrade.setLearningStatus(2);//待定
+        }else{
+            classGrade.setLearningStatus(1);//即刻
+        }
         classGrade.setUpdateTime(DateUtils.getNowTime());
         classGrade.setStatus(1);
         String gradeCode = ServletUtils.getEncoded("BJ");

+ 4 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -265,15 +265,16 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
                     informUserAddBo.setCreateTime(DateUtils.getNowTime());
                     informUserAddBo.setUpdateTime(DateUtils.getNowTime());
                     informUserAddBo.setGradeId(goodsVo.getGradeId());
-                    informUserAddBo.setRemindId(1L);
+                    informUserAddBo.setRemindId(2L);
                     informUserAddBo.setSystemStatus(3);
-                    informUserAddBo.setRemind("商品开通提醒");
+                    informUserAddBo.setRemind("完善报名资料通知");
                     informUserAddBo.setGoodsId(goodsVo.getGoodsId());
                     GoodsVo goodsVo1 = iGoodsService.queryById(goodsVo.getGoodsId());
-                    informUserAddBo.setText("尊敬的用户:您购买的" + goodsVo1.getGoodsName() + "已经开通,请尽快去学习吧。");
+                    informUserAddBo.setText("尊敬的用户:已为您开通了" + goodsVo1.getGoodsName() + "课程,本课程需完善信息方可学习,请尽快去完善资料吧");
                     UserVo userVo = iUserService.queryById(goodsVo.getUserId());
                     Map<String, Object> param = new HashMap<>();
                     param.put("goods", goodsVo1.getGoodsName());
+                    param.put("name", "");
                     ResultBean rb = IAliSmsService.sendInformSms(userVo.getTelphone(), JSON.toJSONString(param), informationNotificationCode);
                     if(Validator.isNotEmpty(rb)){
                         iInformUserService.insertByAddBo(informUserAddBo);

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java

@@ -29,7 +29,7 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
 
 	UserStudyRecordVo queryLast(UserStudyRecordQueryBo bo);
 
-	Boolean delUserCourseHistory(Long userId,Long goodsId);
+	Boolean delUserCourseHistory(Long userId,Long goodsId, Long gradeId,Long orderGoodsId);
 
 	/**
 	 * 查询列表

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

@@ -166,28 +166,33 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     }
 
     @Override
-    public Boolean delUserCourseHistory(Long userId, Long goodsId) {
+    public Boolean delUserCourseHistory(Long userId, Long goodsId, Long gradeId,Long orderGoodsId) {
         //删除看视频历史历史
         LambdaQueryWrapper<UserStudyRecord> lqw = Wrappers.lambdaQuery();
         lqw.eq(UserStudyRecord::getGoodsId, goodsId);
         lqw.eq( UserStudyRecord::getUserId, userId);
+        lqw.eq( UserStudyRecord::getGradeId, gradeId);
         remove(lqw);
         //清除拍照历史
         LambdaQueryWrapper<CoursePhotoLog> lqw1 = Wrappers.lambdaQuery();
         lqw1.eq(CoursePhotoLog::getGoodsId, goodsId);
         lqw1.eq( CoursePhotoLog::getUserId, userId);
+        lqw1.eq( CoursePhotoLog::getGradeId, gradeId);
         iCoursePhotoLogService.remove(lqw1);
         //清除章卷历史
         LambdaQueryWrapper<UserBankRecord> lqw2 = Wrappers.lambdaQuery();
         lqw2.eq(UserBankRecord::getGoodsId, goodsId);
         lqw2.eq( UserBankRecord::getUserId, userId);
+        lqw2.eq( UserBankRecord::getGradeId, gradeId);
         iUserBankRecordService.remove(lqw2);
         //清除学时历史
         LambdaQueryWrapper<UserPeriod> lqw3 = Wrappers.lambdaQuery();
         lqw3.eq(UserPeriod::getGoodsId, goodsId);
         lqw3.eq( UserPeriod::getUserId, userId);
+        lqw3.eq( UserPeriod::getGradeId, gradeId);
         iUserPeriodService.remove(lqw3);
         //清除报考数据
+        //产品确定报考数据不考虑复购
         LambdaQueryWrapper<UserSubscribe> lqw4 = Wrappers.lambdaQuery();
         lqw4.eq(UserSubscribe::getGoodsId, goodsId);
         lqw4.eq( UserSubscribe::getUserId, userId);
@@ -196,6 +201,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         LambdaQueryWrapper<UserExamGoods> lqw5 = Wrappers.lambdaQuery();
         lqw5.eq(UserExamGoods::getGoodsId, goodsId);
         lqw5.eq( UserExamGoods::getUserId, userId);
+        lqw5.eq( UserExamGoods::getOrderGoodsId, orderGoodsId);
         iUserExamGoodsService.remove(lqw5);
         return null;
     }

+ 18 - 15
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -217,21 +217,24 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         if (System.currentTimeMillis()/1000 > time){
             throw new CustomException("当前选择的考试时间已过期,请重新预约,选择未过期考试时间");
         }
-        ExamApplyQueryBo queryTimeBo = new ExamApplyQueryBo();
-        queryTimeBo.setApplyId(bo.getApplyId());
-        queryTimeBo.setStartTime(bo.getApplySiteStartTime().replace("-", ":"));
-        queryTimeBo.setEndTime(bo.getApplySiteEndTime().replace("-", ":"));
-        queryTimeBo.setExamTime(bo.getApplySiteExamTime());
-        queryTimeBo.setApplySiteAddress(bo.getApplySiteAddress());
-        //考点已申报人数
-        Long sitePeopleNum = examApplyMapper.sitePeopleNum(queryTimeBo);
-        String siteTimeJson = examApplyMapper.siteTimeJson(queryTimeBo);
-        if (Validator.isEmpty(siteTimeJson)) {
-            throw new CustomException("考点数据错误");
-        }
-        int num = findPeopleNum(queryTimeBo,siteTimeJson);
-        if(num==-1||num<=sitePeopleNum){
-            throw new CustomException("考点人数已满");
+        //要求非必填考点
+        if(Validator.isNotEmpty(bo.getApplySiteAddress())){
+            ExamApplyQueryBo queryTimeBo = new ExamApplyQueryBo();
+            queryTimeBo.setApplyId(bo.getApplyId());
+            queryTimeBo.setStartTime(bo.getApplySiteStartTime().replace("-", ":"));
+            queryTimeBo.setEndTime(bo.getApplySiteEndTime().replace("-", ":"));
+            queryTimeBo.setExamTime(bo.getApplySiteExamTime());
+            queryTimeBo.setApplySiteAddress(bo.getApplySiteAddress());
+            //考点已申报人数
+            Long sitePeopleNum = examApplyMapper.sitePeopleNum(queryTimeBo);
+            String siteTimeJson = examApplyMapper.siteTimeJson(queryTimeBo);
+            if (Validator.isEmpty(siteTimeJson)) {
+                throw new CustomException("考点数据错误");
+            }
+            int num = findPeopleNum(queryTimeBo,siteTimeJson);
+            if(num==-1||num<=sitePeopleNum){
+                throw new CustomException("考点人数已满");
+            }
         }
         validEntityBeforeSave(add);
         add.setSubscribeStatus(1);

+ 2 - 1
zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterSectionMapper.xml

@@ -204,7 +204,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="learningExamCheck" parameterType="map"  resultType="integer">
         SELECT
-            IFNULL(ubr.report_status,-1)
+            IFNULL(MAX(ubr.report_status),-1)
         FROM
             user_bank_record ubr
         WHERE
@@ -214,6 +214,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND ubr.course_id=#{courseId}
           AND ubr.chapter_id = #{chapterId}
           AND ubr.exam_id = #{examId}
+          AND ubr.current_status = 1
         ORDER BY
             ubr.record_id DESC
             LIMIT 1

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

@@ -180,6 +180,7 @@
         <result property="subApplySiteEndTime" column="sub_apply_site_end_time"/>
         <result property="subApplySiteExamTime" column="sub_apply_site_exam_time"/>
         <result property="gradeId" column="grade_id"/>
+        <result property="subscribeId" column="subscribe_id"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.grade.vo.ClassGradeVo" id="ClassGradeVoResult">
@@ -473,6 +474,7 @@
         (SELECT exam_status from user_subscribe where user_id = #{userId} and goods_id = g.goods_id and subscribe_status = 1 ORDER BY subscribe_id desc limit 1)as sub_exam_status,
         (SELECT performance from user_subscribe where user_id = #{userId}and goods_id = g.goods_id and subscribe_status = 1 ORDER BY subscribe_id desc limit 1)as sub_performance,
         (SELECT `result` from user_subscribe where user_id = #{userId} and goods_id = g.goods_id and subscribe_status = 1 ORDER BY subscribe_id desc limit 1)as sub_result,
+        (SELECT subscribe_id from user_subscribe where user_id = #{userId} and goods_id = g.goods_id and subscribe_status = 1 ORDER BY subscribe_id desc limit 1)as subscribe_id,
         (SELECT apply_site_start_time from user_subscribe where user_id = #{userId} and goods_id = g.goods_id and subscribe_status = 1 ORDER BY subscribe_id desc limit 1)as sub_apply_site_start_time,
         (SELECT apply_site_end_time from user_subscribe where user_id = #{userId} and goods_id = g.goods_id and subscribe_status = 1 ORDER BY subscribe_id desc limit 1)as sub_apply_site_end_time,
         (SELECT apply_site_exam_time from user_subscribe where user_id = #{userId} and goods_id = g.goods_id and subscribe_status = 1 ORDER BY subscribe_id desc limit 1)as sub_apply_site_exam_time

+ 20 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml

@@ -32,6 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="recordStatus" column="record_status"/>
 		<result property="recordId" column="record_id"/>
 		<result property="doType" column="do_type"/>
+		<result property="doNum" column="do_num"/>
+		<result property="answerNum" column="answer_num"/>
     </resultMap>
 
     <select id="selectList" parameterType="com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo" resultMap="GoodsAttachedResultVo">
@@ -101,6 +103,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 				WHEN ga.type = 3 THEN
 				ifnull( (select record_id from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and ga.goods_id =uer.goods_id ORDER BY uer.record_id desc limit 1),-1)
 				END record_id
+				,
+				CASE
+				WHEN ga.type = 1 THEN
+				-1
+				WHEN ga.type = 2 THEN
+				-1
+				WHEN ga.type = 3 THEN
+				e.answer_num
+				END answer_num
+				,
+				CASE
+				WHEN ga.type = 1 THEN
+				-1
+				WHEN ga.type = 2 THEN
+				-1
+				WHEN ga.type = 3 THEN
+				(select count(*) from user_exam_record uer where uer.exam_id = ga.major_id and uer.user_id = #{userId} and ga.goods_id =uer.goods_id )
+				END do_num
 			</if>
 		FROM
 			goods_attached ga

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

@@ -116,6 +116,9 @@
         <result property="examPending" column="exam_pending"/>
         <result property="examCheat" column="exam_cheat"/>
         <result property="keyValue" column="key_value"/>
+        <result property="periodStatus" column="period_status"/>
+        <result property="studyStartTime" column="study_start_time"/>
+        <result property="studyEndTime" column="study_end_time"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.grade.vo.ClassPeriodVo" id="ClassPeriodVo">
@@ -420,6 +423,7 @@
         u.one_inch_photos,
         u.id_card_img1,
         u.id_card_img2,
+        cgu.period_status,
         (SELECT COUNT(m.id) FROM course_menu_exam m LEFT JOIN goods_course c on m.course_id=c.course_id LEFT JOIN
         class_grade_goods cgg on cgg.goods_id = c.goods_id where cg.grade_id=cgg.grade_id and m.type = 1 ) as exam_num,
         (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id, ubr.exam_id) FROM user_bank_record ubr  where ubr.`status`=1 and ubr.report_status =1 and ubr.user_id=#{userId} and ubr.grade_id=cgu.grade_id and ubr.current_status=1) as record_num,
@@ -439,6 +443,10 @@
         COUNT(DISTINCT up.course_id,up.module_id,up.chapter_id,up.section_id) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id where ups.`status`
         =2 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.grade_id = cg.grade_id and up.user_id = #{userId} and up.type = 2) as exam_pending,
         (SELECT up.key_value FROM user_profile up where up.goods_id = #{goodsId} and up.user_id =#{userId} and up.current_status = 1 and up.type_status =1 LIMIT 1) as key_value
+        <if test="userId != null and userId !='' ">
+            ,(SELECT MIN(first_start_time) from user_study_record where user_id = #{userId} and grade_id = #{gradeId}) as study_start_time,
+            (SELECT MAX(end_time) from user_study_record where user_id = #{userId} and grade_id = #{gradeId}) as study_end_time
+        </if>
         FROM
         class_grade_user cgu
         LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

@@ -255,9 +255,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
             user_period up
                 LEFT JOIN user_period_status ups ON ups.period_id = up.id
+                LEFT JOIN class_grade_user cgu on up.grade_id = cgu.grade_id and up.user_id = cgu.user_id
         WHERE
             up.user_id = #{userId}
           and ups.period_status =1
+          and cgu.change_grade = 0
           and ups.`status` in (0,3)
     </select>
     <select id="subscribeSum" parameterType="Long" resultType="Long">

+ 2 - 1
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -158,7 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         u.grade_id,
         u.user_id,
         (SELECT i.business_name FROM course_business i where i.id = g.business_id) as business_name,
-        (SELECT p.project_name FROM course_project_type p where p.id = g.business_id) as project_name,
+        (SELECT p.project_name FROM course_project_type p where p.id = g.project_id) as project_name,
         (SELECT s.school_name FROM school s  where s.id = g.school_id) as school_name,
         (SELECT e.education_name FROM course_education_type e  where e.id = g.education_type_id) as education_name,
         (SELECT r.start_time FROM user_study_record r  where 1=1  and r.user_id = #{userId} AND g.goods_id=r.goods_id ORDER BY r.start_time ASC LIMIT 1) as start_time,
@@ -1036,6 +1036,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 WHERE
                     usr.user_id = #{userId}
                   AND usr.goods_id = #{goodsId}
+                  AND usr.grade_id = #{gradeId}
                 GROUP BY
                     usr.section_id
             )a