Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
zouxuan 5 years ago
parent
commit
6c30a3bb08

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseReviewDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.PracticeGroupType;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -36,6 +37,8 @@ public class CourseReviewDto {
     @ApiModelProperty(value = "购买月数",required = false)
     private Integer BuyMonths;
 
+    private PracticeGroupType practiceGroupType;
+
     @ApiModelProperty(value = "评论id",required = false)
     private Integer reviewId;
 
@@ -127,6 +130,14 @@ public class CourseReviewDto {
     @ApiModelProperty(value = "考勤Str",required = false)
     private String attendanceStr;
 
+    public PracticeGroupType getPracticeGroupType() {
+        return practiceGroupType;
+    }
+
+    public void setPracticeGroupType(PracticeGroupType practiceGroupType) {
+        this.practiceGroupType = practiceGroupType;
+    }
+
     public String getAssignHomeworkStr() {
         return assignHomeworkStr;
     }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.PracticeGroupType;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -89,6 +90,17 @@ public class TeacherClassGroupDto {
     @ApiModelProperty(value = "购买月数")
     private Integer buyMonths;
 
+    @ApiModelProperty(value = "网管课课程组类型")
+    private PracticeGroupType practiceGroupType;
+
+    public PracticeGroupType getPracticeGroupType() {
+        return practiceGroupType;
+    }
+
+    public void setPracticeGroupType(PracticeGroupType practiceGroupType) {
+        this.practiceGroupType = practiceGroupType;
+    }
+
     public Date getCourseStartDate() {
         return courseStartDate;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseReviewQueryInfo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.enums.PracticeGroupType;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -23,6 +24,8 @@ public class CourseReviewQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "是否免费 1-免费 0收费",required = false)
     private Integer isFree;
 
+    private PracticeGroupType practiceGroupType;
+
     @ApiModelProperty(value = "学生评价",required = false)
     private Integer studentReview;
 
@@ -56,6 +59,14 @@ public class CourseReviewQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "作业是否回复",required = false)
     private Integer homeWorkReplied;
 
+    public PracticeGroupType getPracticeGroupType() {
+        return practiceGroupType;
+    }
+
+    public void setPracticeGroupType(PracticeGroupType practiceGroupType) {
+        this.practiceGroupType = practiceGroupType;
+    }
+
     public Integer getAssignHomework() {
         return assignHomework;
     }

+ 0 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java

@@ -1,7 +1,5 @@
 package com.ym.mec.biz.dal.page;
 
-import com.ym.mec.biz.dal.enums.GroupStatusEnum;
-import com.ym.mec.biz.dal.enums.PracticeGroupType;
 import com.ym.mec.common.page.QueryInfo;
 
 /**

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java

@@ -263,7 +263,6 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 */
 	void pushStudyReport(Date expiredDate,String pushType);
 
-
 	/**
 	 * 获取陪练课列表
 	 * @param queryInfo

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1082,7 +1082,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     }else {
                         teacherClassGroupDto.setStudyReportUrl(studyReportUrl + teacherClassGroupDto.getClassGroupId());
                     }
-                }else if(teacherClassGroupDto.getBuyMonths() == null && classGroupNoStartClassTimes.intValue()==0 && classGroupTeacherMap.get(teacherClassGroupDto.getClassGroupId().intValue()).equals(user.getId())){
+                }else if(PracticeGroupType.FREE.equals(teacherClassGroupDto.getPracticeGroupType()) && classGroupNoStartClassTimes.intValue()==0 && classGroupTeacherMap.get(teacherClassGroupDto.getClassGroupId().intValue()).equals(user.getId())){
                    String studyReportUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_STUDY_REPORT_URL);
                    teacherClassGroupDto.setStudyReportUrl(studyReportUrl+teacherClassGroupDto.getClassGroupId());
                }

+ 4 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -47,7 +47,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import static com.ym.mec.biz.dal.enums.PracticeGroupType.TRIAL;
+import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
 import static com.ym.mec.biz.dal.enums.SignInStatusEnum.*;
 
 @Service
@@ -492,7 +492,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 							PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
 							if(practiceGroup == null){
 								throw new BizException("课程组不存在");
-							}else if (practiceGroup.getBuyMonths() == null){
+							}else if (FREE.equals(practiceGroup.getType())){
 								SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
 								BigDecimal teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
 								courseScheduleTeacherSalary.setExpectSalary(teacherSalary);
@@ -3830,7 +3830,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(oldCourseSchedule.getMusicGroupId()));
 		if(practiceGroup.getType() != TRIAL){
-			if(Objects.nonNull(practiceGroup.getBuyMonths())){
+			if(practiceGroup.getType() == FREE){
 				List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
 				if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
 					throw new BizException("请设置老师默认课酬");
@@ -3849,7 +3849,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				}
 			}
 		}
-
         teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         courseScheduleModifyLogDao.insert(scheduleModifyLog);
 
@@ -3933,7 +3932,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         courseScheduleDao.batchUpdate(courseSchedules);
         Set<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toSet());
 		if(practiceGroup.getType() != TRIAL){
-			if(Objects.nonNull(practiceGroup.getBuyMonths())){
+			if(CHARGE == practiceGroup.getType()){
 				List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
 				if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
 					throw new BizException("请设置老师默认课酬");
@@ -3954,7 +3953,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				}
 			}
 		}
-
         teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         courseScheduleModifyLogDao.batchInsert(scheduleModifyLogs);
 

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java

@@ -276,6 +276,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         practiceGroupBuyParams.setSingleClassMinutes(practiceCourseMinutes);
         practiceGroupBuyParams.setGroupStatus(GroupStatusEnum.LOCK);
         practiceGroupBuyParams.setMemo(operatorInfo+",教务代买");
+        practiceGroupBuyParams.setType(PracticeGroupType.CHARGE);
         practiceGroupDao.insert(practiceGroupBuyParams);
 
         //创建班级信息

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -3425,7 +3425,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         Map<String, Object> result=new HashMap<>();
         if(Objects.nonNull(groupId)){
             PracticeGroup practiceGroup = practiceGroupDao.get(groupId);
-            if(Objects.isNull(practiceGroup)||!practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)||Objects.isNull(practiceGroup.getBuyMonths())){
+            if(Objects.isNull(practiceGroup)||!practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)||PracticeGroupType.FREE.equals(practiceGroup.getType())){
                 result.put("existWaitPayOrder",0);
                 return result;
             }

+ 4 - 2
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -498,6 +498,7 @@
         <result property="courseStartDate" column="courses_start_date_"/>
         <result property="classMode" column="class_mode_"/>
         <result property="buyMonths" column="buy_months_"/>
+        <result property="practiceGroupType" column="practice_group_type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <select id="findTeacherMusicClassGroup" resultMap="TeacherClassGroupDto">
@@ -543,7 +544,8 @@
             pg.id_ music_group_id_,
             pg.name_ music_group_name_,
 						1 class_mode_,
-            pg.buy_months_
+            pg.buy_months_,
+            pg.type_ practice_group_type_
         FROM
             practice_group pg
             LEFT JOIN class_group cg ON pg.id_=cg.music_group_id_ AND cg.group_type_='PRACTICE'
@@ -822,7 +824,7 @@
         cg.current_class_times_,cg.total_class_times_,pg.single_class_minutes_,
         pg.id_ practice_id_,cg.type_,1 class_mode_,pg.courses_start_date_,
         pg.courses_expire_date_,
-        IF(pg.buy_months_ IS NULL,0,1) practice_type_
+        CASE pg.type_ WHEN 'FREE' THEN 0 WHEN 'CHARGE' THEN 1 END practice_type_
         FROM practice_group pg
         LEFT JOIN class_group cg ON cg.music_group_id_ = pg.id_
         LEFT JOIN sys_user su ON pg.user_id_ = su.id_

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -136,7 +136,7 @@
         FROM practice_group
         WHERE group_status_ != 'LOCK'
           AND group_status_ != 'CANCEL'
-          AND buy_months_ IS NULL
+          AND type_='FREE'
         GROUP BY organ_id_
     </select>
 
@@ -155,7 +155,7 @@
         SELECT pg.organ_id_, count(*) report_nums_
         FROM course_schedule_evaluate cse
                  LEFT JOIN practice_group pg on cse.music_group_id_ = pg.id_
-            AND pg.buy_months_ IS NULL
+            AND pg.type_='FREE'
             AND pg.group_status_ != 'LOCK'
             AND cse.status_ = 1
         GROUP BY pg.organ_id_
@@ -170,7 +170,7 @@
         WHERE cs.group_type_ = 'PRACTICE'
           AND cs.status_ != 'NOT_START'
           AND cs.del_flag_ = 0
-          AND pg.buy_months_ IS NULL
+          AND pg.type='FREE'
           AND pg.group_status_ != 'LOCK'
         GROUP BY cs.class_group_id_, pg.organ_id_
     </select>
@@ -323,7 +323,7 @@
                  LEFT JOIN student s ON s.user_id_ = pg.student_id_
         WHERE pg.group_status_ IN ('NORMAL', 'FINISH')
           AND s.operating_tag_ = 1
-          AND pg.buy_months_ IS NULL
+          AND pg.type_='FREE'
         GROUP BY pg.organ_id_
     </select>
 

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2472,7 +2472,7 @@
         WHERE cs.group_type_ = 'PRACTICE'
           AND cssp.user_id_ = #{userId}
           AND cssp.expect_price_ = 0
-          AND pg.buy_months_ IS NULL
+          AND pg.type_ = 'FREE'
     </select>
     <select id="findTeacherCoursesWithIncludeDateRange" resultMap="CourseSchedule" useCache="false" flushCache="true">
         SELECT cs.id_,

+ 7 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml

@@ -138,6 +138,7 @@
         <result column="teacher_name_" jdbcType="VARCHAR" property="teacherName"/>
         <result column="edu_teacher_name_" jdbcType="VARCHAR" property="eduTeacherName"/>
         <result column="buy_months_" property="BuyMonths"/>
+        <result column="practice_group_type_" property="practiceGroupType"/>
         <result column="review_id_" property="reviewId"/>
         <result column="student_review_" property="studentReview"/>
         <result column="hand_homework_" property="handHomework"/>
@@ -186,7 +187,10 @@
                 AND pg.buy_months_ > 0
             </if>
             <if test='isFree !=null and isFree=="1"'>
-                AND pg.buy_months_ IS NULL
+                AND pg.type_='FREE'
+            </if>
+            <if test="practiceGroupType != null">
+                AND pg.type_=#{practiceGroupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
             <if test="studentReview !=null">
                 AND csc.score_ =#{studentReview}
@@ -247,7 +251,8 @@
         csr.hand_homework_,csr.course_review_,pg.student_id_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
         csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,sa.id_
         attendance_id_,sch.is_replied_ home_work_replied_,
-        CASE WHEN sch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_
+        CASE WHEN sch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_,
+        pg.type_ practice_group_type_
         FROM course_schedule cs
         LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
         LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -384,8 +384,8 @@
 	
 	<select id="queryStudentNotStartCourseTimesOfOnline" resultMap="studentCourseTimesDto">
 		SELECT cssp.`user_id_`,count(*) totalTimes, 
-		sum(case when (pg.buy_months_ > 0) then 1 ELSE 0 END) practiceTmes,
-		sum(case when (pg.buy_months_ IS NULL AND cssp.`group_type_` = 'PRACTICE' ) then 1 ELSE 0 END) freePracticeTimes
+		sum(CASE type_ WHEN 'FREE' THEN 0 WHEN 'CHARGE' THEN 1 END) practiceTmes,
+		sum(case when (pg.type_='FREE' AND cssp.`group_type_` = 'PRACTICE' ) then 1 ELSE 0 END) freePracticeTimes
 		FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs on cssp.course_schedule_id_ = cs.id_
 		LEFT JOIN practice_group pg ON pg.id_ = cs.music_group_id_ AND cs.group_type_ = 'PRACTICE'
 		WHERE cs.`teach_mode_` = 'ONLINE' AND cs.status_ = 'NOT_START'

+ 18 - 15
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -130,7 +130,7 @@
         SELECT *
         FROM practice_group
         WHERE student_id_ = #{userId}
-          AND buy_months_ IS NULL
+          AND type_='FREE'
     </select>
 
     <!-- 分页查询 -->
@@ -155,7 +155,7 @@
         FROM practice_group
         WHERE student_id_ = #{userId}
           AND group_status_ = 'NORMAL'
-          AND buy_months_ IS NULL
+          AND type_='FREE'
           AND create_time_ > '2020-03-25'
     </select>
     <select id="countPracticeGroupByOrgan" resultType="java.lang.Integer">
@@ -180,7 +180,7 @@
         SELECT *
         FROM practice_group
         WHERE student_id_ = #{userId}
-          AND buy_months_ IS NOT NULL
+          AND type_='CHARGE'
         ORDER BY create_time_ DESC
         LIMIT 1;
     </select>
@@ -195,7 +195,7 @@
                  LEFT JOIN `subject` s ON pg.subject_id_ = s.id_
         WHERE student_id_ = #{userId}
           AND (pg.group_status_ = 'NORMAL' OR pg.group_status_ = 'LOCK')
-          AND pg.buy_months_ IS NOT NULL
+          AND pg.type_='CHARGE'
     </select>
 
     <select id="findUserBuyPracticeGroupsWithDate" resultMap="PracticeCourseDto">
@@ -209,7 +209,7 @@
         WHERE student_id_ = #{userId}
           AND courses_start_date_ = #{date}
           AND group_status_ = 'LOCK'
-          AND pg.buy_months_ IS NOT NULL
+          AND pg.type_='CHARGE'
     </select>
     <select id="findUserPracticeGroup" resultMap="PracticeGroup">
         SELECT *
@@ -264,13 +264,16 @@
                 AND pg.educational_teacher_id_=#{educationalTeacherId}
             </if>
             <if test="type != null and type == 1">
-                AND pg.be_renew_group_id_ IS NULL AND pg.buy_months_ IS NOT NULL
+                AND pg.be_renew_group_id_ IS NULL AND pg.type_='CHARGE'
             </if>
             <if test="type != null and type == 0">
-                AND pg.be_renew_group_id_ IS NOT NULL AND pg.buy_months_ IS NOT NULL
+                AND pg.be_renew_group_id_ IS NOT NULL AND pg.type_='CHARGE'
             </if>
             <if test="type != null and type == 2">
-                AND pg.buy_months_ IS NULL
+                AND pg.type_='FREE'
+            </if>
+            <if test="practiceGroupType != null">
+                AND pg.type_=#{practiceGroupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
         </where>
     </sql>
@@ -322,10 +325,10 @@
                 AND pg.courses_expire_date_ >= #{month}
             </if>
             <if test='isFree !=null and isFree=="0"'>
-                AND pg.buy_months_ > 0
+                AND pg.type_='CHARGE'
             </if>
             <if test='isFree !=null and isFree=="1"'>
-                AND pg.buy_months_ IS NULL
+                AND pg.type_='FREE'
             </if>
             <if test='isOver !=null and isOver=="0"'>
                 <![CDATA[AND pg.group_status_ = 'NORMAL'
@@ -412,10 +415,10 @@
         LEFT JOIN (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate FROM
         `practice_group` pg
         LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_` and cs.`group_type_` = 'PRACTICE'
-        WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
+        WHERE pg.type_='FREE' AND cs.`group_type_` = 'PRACTICE'
         GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
-        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP
+        FROM `practice_group` pg WHERE pg.type_='CHARGE' AND pg.`group_status_` in ('NORMAL','FINISH') GROUP
         BY pg.`student_id_` ) c
         on a.student_id_ = c.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
@@ -447,11 +450,11 @@
         LEFT JOIN (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate FROM
         `practice_group` pg
         LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_`
-        WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
+        WHERE pg.type_='FREE' AND cs.`group_type_` = 'PRACTICE'
         GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
         FROM `practice_group` pg
-        WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` IN ('NORMAL','FINISH') GROUP
+        WHERE pg.type_='CHARGE' AND pg.`group_status_` IN ('NORMAL','FINISH') GROUP
         BY pg.`student_id_` ) c ON a.student_id_ = c.student_id_
         LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT su.real_name_) teacher_name_,pg.student_id_,GROUP_CONCAT(DISTINCT suc.real_name_) course_group_teacher_
         FROM `practice_group` pg
@@ -500,7 +503,7 @@
         su.username_ student_name_,
         o.name_ organ_name_,
         MAX(pg.courses_expire_date_) expire_date_,
-        CASE WHEN MAX(pg.buy_months_) IS NULL THEN 0 ELSE 1 END buy_practice_
+        CASE WHEN type_='FREE' THEN 0 ELSE 1 END buy_practice_
         FROM practice_group pg
         LEFT JOIN organization o on o.id_ = pg.organ_id_
         LEFT JOIN sys_user su ON su.id_ = pg.student_id_

+ 3 - 3
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -194,7 +194,7 @@
         LEFT JOIN (
         SELECT cssp.user_id_,
         SUM(case when (cs.group_type_ = 'VIP' AND cs.teach_mode_='ONLINE') then 1 ELSE 0 END) vip_times_,
-        SUM(case when (pg.buy_months_ > 0) then 1 ELSE 0 END) buy_practice_times_
+        SUM(case when (pg.type_='FREE') then 1 ELSE 0 END) buy_practice_times_
         FROM course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
         LEFT JOIN practice_group pg ON pg.`id_` = cs.`music_group_id_` AND cs.`group_type_` = 'PRACTICE'
@@ -204,7 +204,7 @@
         LEFT JOIN (
         SELECT student_id_, count(id_) free_practice_times_
         FROM practice_group
-        WHERE buy_months_ IS NULL
+        WHERE type_='FREE'
         GROUP BY student_id_
         ) p ON p.student_id_ = s.user_id_
         <include refid="student4OperatingQueryCondition"/>
@@ -229,7 +229,7 @@
         LEFT JOIN (
         SELECT student_id_, count(id_) free_practice_times_
         FROM practice_group
-        WHERE buy_months_ IS NULL
+        WHERE type_='FREE'
         GROUP BY student_id_
         ) p ON p.student_id_ = s.user_id_
         <include refid="student4OperatingQueryCondition"/>