Browse Source

fix 同步公共课程

he2802 2 years ago
parent
commit
69d7a9333e

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -419,6 +419,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         if (Validator.isEmpty(bo.getGradeId())) {
             throw new CustomException("参数错误");
         }
+        if (Validator.isEmpty(bo.getOrderGoodsId())) {
+            throw new CustomException("参数错误");
+        }
         ClassGradeUserQueryBo queryBo = new ClassGradeUserQueryBo();
         queryBo.setGradeId(bo.getGradeId());
         queryBo.setUserId(bo.getUserId());
@@ -430,6 +433,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         subjectStudyRecordQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
         subjectStudyRecordQueryBo.setUserId(bo.getUserId());
         subjectStudyRecordQueryBo.setGradeId(bo.getGradeId());
+        subjectStudyRecordQueryBo.setOrderGoodsId(bo.getOrderGoodsId());
         List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
         for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
             secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
@@ -448,6 +452,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         classGradeUserQueryBo.setGradeId(bo.getGradeId());
         classGradeUserQueryBo.setUserId(bo.getUserId());
         classGradeUserQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
+        classGradeUserQueryBo.setOrderGoodsId(bo.getOrderGoodsId());
         List<ClassPeriodUserVo> classPeriodUserVos1 = baseMapper.listPeriod(classGradeUserQueryBo);
         ClassPeriodUserVo classPeriodUserVos = classPeriodUserVos1.get(0);
         classPeriodUserVos.setPending(classPeriodStudentVo.getSecAllNum() - classPeriodUserVos.getPass() - classPeriodUserVos.getCheat());

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

@@ -288,6 +288,13 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
         classGradeUserQueryBo.setUserId(userPeriodVo.getUserId());
         classGradeUserQueryBo.setGradeId(userPeriodVo.getGradeId());
         classGradeUserQueryBo.setGoodsId(userPeriodVo.getGoodsId());
+        if(Validator.isNotEmpty(userPeriodVo.getOrderGoodsId())){
+            classGradeUserQueryBo.setOrderGoodsId(userPeriodVo.getOrderGoodsId());
+        }else{
+            //非七大员
+            ClassGradeUser classGradeUser =iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getGradeId, userPeriodVo.getGradeId()).eq(ClassGradeUser::getUserId, userPeriodVo.getUserId()).last("limit 1"));
+            classGradeUserQueryBo.setOrderGoodsId(classGradeUser.getOrderGoodsId());
+        }
         Integer gradePeriodStatus = iClassGradeUserService.updateUserPeriodStatus(classGradeUserQueryBo);
         //发送审核不通过消息
         bo.setStatus(gradePeriodStatus);
@@ -326,6 +333,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean editPeriodAll(UserPeriodEditBo bo) {
+        Long orderGoodsId = null;
         CourseBusiness business = null;
         for (Long id : bo.getIds()) {
             UserPeriodStatusVo oldData = userPeriodStatusService.queryById(id);
@@ -337,6 +345,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
             }else {
                 goodsId = period.getGoodsId();
             }
+            orderGoodsId = period.getOrderGoodsId();
             //获取业务学时审核数据
             Goods goods = iGoodsService.getById(goodsId);
             business = iCourseBusinessService.getById(goods.getBusinessId());
@@ -396,6 +405,13 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
         classGradeUserQueryBo.setUserId(bo.getUserId());
         classGradeUserQueryBo.setGradeId(bo.getGradeId());
         classGradeUserQueryBo.setGoodsId(bo.getGoodsId());
+        if(Validator.isNotEmpty(orderGoodsId)){
+            classGradeUserQueryBo.setOrderGoodsId(orderGoodsId);
+        }else{
+            //非七大员
+            ClassGradeUser classGradeUser =iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getGradeId, bo.getGradeId()).eq(ClassGradeUser::getUserId, bo.getUserId()).last("limit 1"));
+            classGradeUserQueryBo.setOrderGoodsId(classGradeUser.getOrderGoodsId());
+        }
         Integer gradePeriodStatus = iClassGradeUserService.updateUserPeriodStatus(classGradeUserQueryBo);
         //发送审核不通过消息
         if (gradePeriodStatus == 0) {

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

@@ -63,4 +63,7 @@ public class UserPeriodVo {
 	/** 班级ID */
 	@ApiModelProperty("班级ID")
 	private Long gradeId;
+
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 }

+ 12 - 9
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -824,26 +824,26 @@
         cgu.order_goods_id,
         (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 in (1,3) ) 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.`type` in (1,3) 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,
+        (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id, ubr.exam_id) FROM user_bank_record ubr  where ubr.`status` = 1 and ubr.`type` in (1,3) and ubr.report_status =1 and ubr.user_id=#{userId} and ubr.grade_id=cgu.grade_id and ubr.order_goods_id=cgu.order_goods_id and ubr.current_status=1) as record_num,
         (SELECT 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` =1 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.user_id = #{userId} and up.grade_id = cgu.grade_id and up.`type` = 1) as pass,
+        ups.`status` =1 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.user_id = #{userId} and up.grade_id = cgu.grade_id and up.order_goods_id=cgu.order_goods_id and up.`type` = 1) as pass,
         (SELECT 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 up.grade_id = cg.grade_id  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` = 1) as pending,
+        ups.`status` =2 and up.grade_id = cg.grade_id  and ups.period_status = 1 and up.goods_id=#{goodsId} and up.grade_id = cg.grade_id and up.order_goods_id=cgu.order_goods_id and up.user_id = #{userId} and up.`type` = 1) as pending,
         (SELECT
         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`
-        =0 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` = 1) as cheat,
+        =0 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.grade_id = cg.grade_id and up.order_goods_id=cgu.order_goods_id and  up.user_id = #{userId} and up.`type` = 1) as cheat,
         (SELECT 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` =1 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.user_id = #{userId} and up.grade_id = cg.grade_id and up.`type` in (2,3)) as exam_pass,
+        ups.`status` =1 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.user_id = #{userId} and up.order_goods_id=cgu.order_goods_id and up.grade_id = cg.grade_id and up.`type` in (2,3)) as exam_pass,
         (SELECT
         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`
-        =0 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`  in (2,3)) as exam_cheat,
+        =0 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.grade_id = cg.grade_id and up.order_goods_id=cgu.order_goods_id and up.user_id = #{userId} and up.`type`  in (2,3)) as exam_cheat,
         (SELECT
         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`  in (2,3)) as exam_pending,
+        =2 and ups.period_status = 1 and up.goods_id=#{goodsId} and up.grade_id = cg.grade_id and up.order_goods_id=cgu.order_goods_id and up.user_id = #{userId} and up.`type`  in (2,3)) as exam_pending,
         (SELECT up.key_value FROM user_profile up where up.goods_id = #{goodsId} and up.user_id =#{userId} and up.order_goods_id = cgu.order_goods_id and up.current_status = 1 and up.`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
+            ,(SELECT MIN(first_start_time) from user_study_record where user_id = #{userId} and grade_id = #{gradeId} and order_goods_id=#{orderGoodsId}) as study_start_time,
+            (SELECT MAX(end_time) from user_study_record where user_id = #{userId} and grade_id = #{gradeId} and order_goods_id=#{orderGoodsId}) as study_end_time
         </if>
         FROM
         class_grade_user cgu
@@ -861,6 +861,9 @@
         <if test="periodStatus != null and periodStatus !='' ">
             and cgu.period_status = #{periodStatus}
         </if>
+        <if test="orderGoodsId != null and orderGoodsId !='' ">
+            and cgu.order_goods_id = #{orderGoodsId}
+        </if>
         LIMIT 1
     </select>