Переглянути джерело

Merge branch 'dev-v5.2' into dev

he2802 3 роки тому
батько
коміт
9a7afd3678

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

@@ -48,4 +48,6 @@ public interface CourseMapper extends BaseMapper<Course> {
     ClassGradeVo gradeIdSelect(@Param("userId") Long userId, @Param("goodsId") Long goodsId, @Param("gradeId") Long gradeId);
 
     Long goodsRebuildStatus(CourseQueryBo bo);
+
+    Long checkCourseHaveStudy(@Param("courseId") Long courseId);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -213,6 +213,11 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                 throw new CustomException("该课程已被绑定,不允许修改发布状态为未发布");
             }
         }
+        if(entity.getCourseId()!=null){
+            if(baseMapper.checkCourseHaveStudy(entity.getCourseId()).longValue()>0){
+                throw new CustomException("该课程绑定的商品已有学习数据,无法操作");
+            }
+        }
     }
 
     @Override

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

@@ -325,10 +325,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 Long gradeId = null;
                 //判断是否购买历史班级都过期
                 canRepeatBuy = this.canBuyRepeatGoods(g.getGoodsId(), bo.getUserId());
+                //判断是否有购买过,服务期是否过期
+                Long oldOrderGoodsId = getHaveBuyGoods(g.getGoodsId(), bo.getUserId());
                 if (g.getGoodsInputData() != null) {
                     gradeId = g.getGoodsInputData().getGradeId();
-                    //判断是否有购买过
-                    Long oldOrderGoodsId = getHaveBuyGoods(g.getGoodsId(), bo.getUserId());
                     if (Validator.isNotEmpty(oldOrderGoodsId)) {
                         //有指定选班模板且视频商品班级已过期,记录复购状态
                         orderGoods.setRebuyOrderGoodsId(oldOrderGoodsId);
@@ -1027,7 +1027,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return payResult;
     }
 
-    //判断视频商品是否购买过
+    //判断视频商品是否购买过且服务期是否过期
     public Long getHaveBuyGoods(Long goodsId, Long userId) {
         OrderGoodsQueryBo orderGoodsQueryBo = new OrderGoodsQueryBo();
         orderGoodsQueryBo.setUserId(userId);
@@ -1040,15 +1040,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         List<Integer> payStatusList = new ArrayList<>();
         payStatusList.add(2);
         payStatusList.add(3);
+        payStatusList.add(4);
         orderGoodsQueryBo.setPayStatusList(payStatusList);
         List<OrderGoodsVo> list1 = iOrderGoodsService.selectList(orderGoodsQueryBo);
+        for(OrderGoodsVo goodsVo : list1){
+            if(Validator.isNotEmpty(goodsVo.getServiceEndTime())&&(goodsVo.getServiceEndTime().longValue()>(System.currentTimeMillis()/1000))){
+                throw new CustomException("存在已购买【班级学习服务期未过期】的商品,不可以重复购买商品", 511);
+            }
+        }
         if (list1 != null && list1.size() > 0) {
             return list1.get(0).getOrderGoodsId();
         }
         return null;
     }
 
-    //检查是否允许重复购买商品
+    //检查是否允许重复购买视频商品
     public boolean canBuyRepeatGoods(Long goodsId, Long userId) {
         //判断是否还有未过期的班级
         ClassGradeQueryBo bo = new ClassGradeQueryBo();
@@ -1080,7 +1086,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         Long num = iOrderGoodsService.getBuyGoodsHistory(bo);
         if (num.longValue() > 0) {
             if (goodsType.equals(2)) {
-                throw new CustomException("不可以重复购买题库商品", 511);
+                throw new CustomException("存在已购买的题库商品,不可以重复购买商品", 511);
             }
             throw new CustomException("不可以重复购买商品", 511);
         }

+ 11 - 4
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -397,11 +397,7 @@
             cgu.grade_id,
             IFNULL(ge.exam_num,0) exam_num,
             (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr LEFT JOIN class_grade_goods cgg on cgg.goods_id = ubr.goods_id where ubr.`status`=1 and ubr.report_status =1 and ubr.user_id =cgu.user_id and ubr.grade_id = cg.grade_id and ubr.current_status = 1) as record_num,
-            (SELECT COUNT(up.id) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id where
-                ups.`status` =1 and ups.period_status = 1 and up.goods_id=g.goods_id and up.user_id = cgu.user_id and up.type = 1) as pass,
 
-             (select COUNT(up.id) from user_period up LEFT JOIN user_period_status ups on up.id=ups.period_id where up.goods_id = (SELECT cgg.goods_id FROM class_grade_goods cgg where cg.grade_id=cgg.grade_id) and up.grade_id = cgu.grade_id and up.user_id = cgu.user_id
-             and ups.period_status=0 and ups.`status`=0 and (SELECT COUNT(upss.id) from user_period_status upss where upss.id = ups.id and upss.period_status = 1 and upss.`status` = 2) > 0 ) as rebuildNum,
             (SELECT
                  COUNT(up.id) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id where ups.`status`
                 =0 and ups.period_status = 1 and up.goods_id=g.goods_id and up.user_id = cgu.user_id and up.type = 1) as cheat,
@@ -613,4 +609,15 @@
           and cg.`status` =1 and cgg.goods_id = #{goodsId} and cgu.change_grade = 0 and cgu.user_id=#{userId}
         order by cg.create_time desc LIMIT 1
     </select>
+
+
+    <select id="checkCourseHaveStudy" parameterType="Long"  resultType="Long">
+        SELECT
+            count(*)
+        FROM
+            goods_course gc
+                LEFT JOIN user_period up ON gc.goods_id = up.goods_id
+        WHERE
+            gc.course_id = #{courseId}
+    </select>
 </mapper>