Browse Source

fix 分班

he2802 3 years ago
parent
commit
4b6c2e5a9d

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsPeriodVo.java

@@ -125,4 +125,22 @@ public class GoodsPeriodVo {
 	@Excel(name = "班级有效期结束时间")
 	@ApiModelProperty("班级有效期结束时间")
 	private Long classEndTime;
+	/** 开班状态 0未开班 1开班 */
+	@Excel(name = "开班状态 0未开班 1开班")
+	@ApiModelProperty("开班状态 0未开班 1开班")
+	private Integer classStatus;
+	/** 开放学习时间 */
+	@Excel(name = "开放学习时间")
+	@ApiModelProperty("开放学习时间")
+	private Long learningTimeStart;
+	/** 即刻 1  待定2  日期3 */
+	@Excel(name = "即刻 1  待定2  日期3")
+	@ApiModelProperty("即刻 1  待定2  日期3")
+	private Integer learningStatus;
+	/** 官方信息推送接口 */
+	@Excel(name = "官方信息推送接口")
+	@ApiModelProperty("官方信息推送接口")
+	private Long interfacePushId;
+	@ApiModelProperty("官方信息推送状态 1是 0否")
+	private Long officialStatus;
 }

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

@@ -176,7 +176,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         update.setGoodsInputData(JSON.toJSONString(bo.getGoodsInputData()));
         OrderGoods db = this.baseMapper.selectById(bo.getOrderGoodsId());
         //新的班级ID变化
-        if (bo.getGradeId() != null && db.getGradeId() != bo.getGradeId()) {
+        /*if (bo.getGradeId() != null && db.getGradeId() != bo.getGradeId()) {
             //修改班级
             Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, bo.getGoodsId()));
             //视频商品安排班级
@@ -197,7 +197,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
             } else {
                 throw new CustomException("非视频课程无法修改班级");
             }
-        }
+        }*/
         return this.updateById(update);
     }
 

+ 26 - 19
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -1200,20 +1200,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             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) {
-                //班级还有剩位,直接加入班级
-                joinGrade(orderGoodsId, gradeId, userId);
-                return gradeId;
+            //判断用户是否在此班过
+            ClassGradeUser gradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getUserId,userId).eq(ClassGradeUser::getGradeId,gradeId).last("limit 1"));
+            if(Validator.isEmpty(gradeUser)){
+                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) {
+                    //班级还有剩位,直接加入班级
+                    joinGrade(orderGoodsId, gradeId, userId);
+                    return gradeId;
+                }
             }
         }
         //无指定班级或者指定班级已满
@@ -1233,18 +1237,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             if ((classGradeVo.getStudentUpper() - classGradeVo.getStudentNum() - locakStudentNum) > 0) {
                 //有空位则进入班级
                 gradeId = classGradeVo.getGradeId();
-                //班级还有剩位,直接加入班级
-                joinGrade(orderGoodsId, gradeId, userId);
-                return gradeId;
+                //判断用户是否在此班过
+                ClassGradeUser gradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getUserId,userId).eq(ClassGradeUser::getGradeId,gradeId).last("limit 1"));
+                if(Validator.isEmpty(gradeUser)){
+                    //班级还有剩位,直接加入班级
+                    joinGrade(orderGoodsId, gradeId, userId);
+                    return gradeId;
+                }
             }
         }
-
         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();
         if (isConfigTp) {
             classGrade.setLearningStatus(2);//待定

+ 12 - 1
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -108,6 +108,12 @@
         <result property="serviceEndTime" column="service_end_time"/>
         <result property="classStartTime" column="class_start_time"/>
         <result property="classEndTime" column="class_end_time"/>
+
+        <result property="learningStatus" column="learn_status"/>
+        <result property="classStatus" column="class_status"/>
+        <result property="learningTimeStart" column="learning_time_start"/>
+        <result property="interfacePushId" column="interface_push_id"/>
+        <result property="officialStatus" column="official_status"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo" id="GoodsPeriodStatusVo">
@@ -403,7 +409,12 @@
             og.service_start_time,
             og.service_end_time,
             cg.class_start_time,
-            cg.class_end_time
+            cg.class_end_time,
+            cgu.learn_status,
+            cgu.official_status,
+            cg.learning_time_start,
+            cg.class_status,
+            cg.interface_push_id
         FROM
             class_grade_user cgu
                 LEFT JOIN class_grade_goods cgg ON cgu.grade_id = cgg.grade_id