|  | @@ -28,6 +28,42 @@
 | 
	
		
			
				|  |  |          <result property="courseBalance" column="course_balance_"/>
 | 
	
		
			
				|  |  |      </resultMap>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    <resultMap id="StudentListCourseDto" type="com.ym.mec.biz.dal.dto.StudentListCourseDto">
 | 
	
		
			
				|  |  | +        <result property="userId" column="userId"/>
 | 
	
		
			
				|  |  | +        <result property="remainCourseNum" column="remainCourseNum"/>
 | 
	
		
			
				|  |  | +        <result property="remainPracticeNum" column="remainPracticeNum"/>
 | 
	
		
			
				|  |  | +    </resultMap>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    <resultMap id="studentManageListDto" type="com.ym.mec.biz.dal.dto.StudentManageListDto">
 | 
	
		
			
				|  |  | +        <result property="userId" column="user_id_"/>
 | 
	
		
			
				|  |  | +        <result property="realName" column="real_name_"/>
 | 
	
		
			
				|  |  | +        <result property="nation" column="nation_"/>
 | 
	
		
			
				|  |  | +        <result property="parentsPhone" column="parents_phone_"/>
 | 
	
		
			
				|  |  | +        <result property="parentsName" column="real_name_"/>
 | 
	
		
			
				|  |  | +        <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | +        <result property="username" column="username_"/>
 | 
	
		
			
				|  |  | +        <result property="birthdate" column="birthdate_"/>
 | 
	
		
			
				|  |  | +        <result property="currentGrade" column="current_grade_"/>
 | 
	
		
			
				|  |  | +        <result property="currentClass" column="current_class_"/>
 | 
	
		
			
				|  |  | +        <result property="isActive" column="isActive_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | +        <result property="hasCourse" column="hasCourse_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | +        <result property="hasPracticeCourse" column="hasPracticeCourse_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | +        <result property="musicGroupName" column="music_group_name_"/>
 | 
	
		
			
				|  |  | +        <result property="musicGroupStatus" column="music_group_status_"/>
 | 
	
		
			
				|  |  | +        <result property="vipGroupName" column="vip_group_name_"/>
 | 
	
		
			
				|  |  | +        <result property="vipGroupStatus" column="vip_group_status_"/>
 | 
	
		
			
				|  |  | +        <result property="organName" column="organ_name_"/>
 | 
	
		
			
				|  |  | +        <result property="organId" column="organ_id_"/>
 | 
	
		
			
				|  |  | +        <result property="subjectName" column="music_group_subject_"/>
 | 
	
		
			
				|  |  | +        <result property="courseBalance" column="course_balance_"/>
 | 
	
		
			
				|  |  | +        <result property="balance" column="balance_"/>
 | 
	
		
			
				|  |  | +        <result property="serviceTag" column="service_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | +        <result property="operatingTag" column="operating_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | +        <result property="teacherName" column="teacher_name_"/>
 | 
	
		
			
				|  |  | +        <result property="teacherId" column="teacher_id_"/>
 | 
	
		
			
				|  |  | +        <result property="subjectIdList" column="subject_id_list_"/>
 | 
	
		
			
				|  |  | +    </resultMap>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      <sql id="queryCondition">
 | 
	
		
			
				|  |  |          <where>
 | 
	
		
			
				|  |  |              cgsm.user_id_ IS NOT NULL
 | 
	
	
		
			
				|  | @@ -112,21 +148,20 @@
 | 
	
		
			
				|  |  |      </update>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      <select id="findStudentsByOrganId" resultMap="studentManageListDto">
 | 
	
		
			
				|  |  | -        SELECT su.id_ user_id_,su.username_,su.gender_,su.phone_ parents_phone_,su.real_name_,
 | 
	
		
			
				|  |  | -        su.birthdate_,su.nation_,su.organ_id_,
 | 
	
		
			
				|  |  | -        CASE WHEN su.password_ IS NULL THEN 0 ELSE 1 END isActive_,
 | 
	
		
			
				|  |  | -        IF(st.service_tag_=2,0,st.service_tag_) service_tag_,st.operating_tag_,tu.real_name_ teacher_name_,st.teacher_id_,st.subject_id_list_,suca.balance_
 | 
	
		
			
				|  |  | -        FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN student st ON st.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        LEFT JOIN sys_user tu ON tu.id_ = st.teacher_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN sys_user_cash_account suca ON su.id_ = suca.user_id_
 | 
	
		
			
				|  |  | +        SELECT o.`name_` organ_name_,s.`user_id_` ,su.`username_` ,su.`phone_` parents_phone_,su.`real_name_` ,su.`gender_` , su.organ_id_,
 | 
	
		
			
				|  |  | +		tu.`username_` teacher_name_,s.`service_tag_` ,s.`operating_tag_` , suca.`course_balance_` ,sub.`name_` music_group_subject_ ,su.birthdate_,s.subject_id_list_,s.teacher_id_
 | 
	
		
			
				|  |  | +		FROM `student` s LEFT JOIN `sys_user` su on s.`user_id_` = su.`id_`
 | 
	
		
			
				|  |  | +		LEFT JOIN `organization` o on o.`id_` = su.`organ_id_`
 | 
	
		
			
				|  |  | +		LEFT JOIN `sys_user` tu on tu.`id_` = s.`teacher_id_` 
 | 
	
		
			
				|  |  | +		LEFT JOIN `sys_user_cash_account` suca on suca.`user_id_` = s.`user_id_`
 | 
	
		
			
				|  |  | +		LEFT JOIN `subject` sub on sub.id_ = s.`subject_id_list_`
 | 
	
		
			
				|  |  |          <include refid="findStudentsByOrganIdSql"/>
 | 
	
		
			
				|  |  |          ORDER BY su.create_time_ DESC
 | 
	
		
			
				|  |  |          <include refid="global.limit"/>
 | 
	
		
			
				|  |  |      </select>
 | 
	
		
			
				|  |  |      <sql id="findStudentsByOrganIdSql">
 | 
	
		
			
				|  |  |          <where>
 | 
	
		
			
				|  |  | -                su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
 | 
	
		
			
				|  |  | +                su.del_flag_ = 0
 | 
	
		
			
				|  |  |              <if test="organId != null and organId != ''">
 | 
	
		
			
				|  |  |                  AND FIND_IN_SET(su.organ_id_,#{organId})
 | 
	
		
			
				|  |  |              </if>
 | 
	
	
		
			
				|  | @@ -140,31 +175,21 @@
 | 
	
		
			
				|  |  |                  AND su.password_ is null
 | 
	
		
			
				|  |  |              </if>
 | 
	
		
			
				|  |  |              <if test="operatingTag != null">
 | 
	
		
			
				|  |  | -                AND st.operating_tag_ = #{operatingTag}
 | 
	
		
			
				|  |  | +                AND s.operating_tag_ = #{operatingTag}
 | 
	
		
			
				|  |  |              </if>
 | 
	
		
			
				|  |  |              <if test="serviceTag != null">
 | 
	
		
			
				|  |  | -                AND st.service_tag_ = #{serviceTag}
 | 
	
		
			
				|  |  | +                AND s.service_tag_ = #{serviceTag}
 | 
	
		
			
				|  |  |              </if>
 | 
	
		
			
				|  |  |              <if test="teacherId != null">
 | 
	
		
			
				|  |  | -                AND st.teacher_id_ = #{teacherId}
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="userIds != null">
 | 
	
		
			
				|  |  | -                AND su.id_ IN
 | 
	
		
			
				|  |  | -                <foreach collection="userIds" open="(" close=")" separator="," item="item">
 | 
	
		
			
				|  |  | -                    #{item}
 | 
	
		
			
				|  |  | -                </foreach>
 | 
	
		
			
				|  |  | +                AND s.teacher_id_ = #{teacherId}
 | 
	
		
			
				|  |  |              </if>
 | 
	
		
			
				|  |  |          </where>
 | 
	
		
			
				|  |  |      </sql>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      <select id="countStudentByOrganId" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  |          SELECT COUNT(DISTINCT su.id_)
 | 
	
		
			
				|  |  | -        FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN student_registration sr ON su.id_ = sr.user_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN practice_lesson_apply pla ON su.id_ = pla.user_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN student st ON st.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        WHERE su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
 | 
	
		
			
				|  |  | -        <include refid="queryHasCourseSql"/>
 | 
	
		
			
				|  |  | +        FROM `student` s LEFT JOIN `sys_user` su on s.`user_id_` = su.`id_`
 | 
	
		
			
				|  |  | +       <include refid="findStudentsByOrganIdSql"/>
 | 
	
		
			
				|  |  |      </select>
 | 
	
		
			
				|  |  |      <select id="findStudentBaseInfoByUserID" resultMap="studentManageListDto">
 | 
	
		
			
				|  |  |          SELECT su.username_,su.gender_,su.birthdate_,su.real_name_,su.id_ user_id_,
 | 
	
	
		
			
				|  | @@ -610,98 +635,6 @@
 | 
	
		
			
				|  |  |              AND st.teacher_id_ = #{teacherId}
 | 
	
		
			
				|  |  |          </if>
 | 
	
		
			
				|  |  |      </sql>
 | 
	
		
			
				|  |  | -    <select id="queryHasCourse" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  | -        SELECT su.id_ FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN practice_lesson_apply pla ON su.id_ = pla.user_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN student st ON st.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.status_ != 'OVER' AND su.del_flag_ = 0
 | 
	
		
			
				|  |  | -        <include refid="queryHasCourseSql"/>
 | 
	
		
			
				|  |  | -        GROUP BY su.id_
 | 
	
		
			
				|  |  | -        ORDER BY su.create_time_ DESC
 | 
	
		
			
				|  |  | -        <include refid="global.limit"/>
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  | -    <select id="countHasCourse" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  | -        SELECT COUNT(DISTINCT su.id_) FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN practice_lesson_apply pla ON su.id_ = pla.user_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN student st ON st.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        WHERE su.user_type_ LIKE '%STUDENT%' AND cs.status_ != 'OVER' AND su.del_flag_ = 0
 | 
	
		
			
				|  |  | -        <include refid="queryHasCourseSql"/>
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  | -    <select id="queryNotCourse" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  | -        SELECT su.id_ FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.status_ != 'OVER'
 | 
	
		
			
				|  |  | -        LEFT JOIN practice_lesson_apply pla ON su.id_ = pla.user_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN student st ON st.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        <include refid="queryNotCourseSql"/>
 | 
	
		
			
				|  |  | -        GROUP BY su.id_
 | 
	
		
			
				|  |  | -        HAVING COUNT(cs.id_) = 0
 | 
	
		
			
				|  |  | -        ORDER BY su.create_time_ DESC
 | 
	
		
			
				|  |  | -        <include refid="global.limit"/>
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  | -    <select id="countNotCourse" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  | -        SELECT COUNT(e.id_) FROM (SELECT su.id_ FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.status_ != 'OVER'
 | 
	
		
			
				|  |  | -        LEFT JOIN practice_lesson_apply pla ON su.id_ = pla.user_id_
 | 
	
		
			
				|  |  | -        LEFT JOIN student st ON st.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        <include refid="queryNotCourseSql"/>
 | 
	
		
			
				|  |  | -        GROUP BY su.id_
 | 
	
		
			
				|  |  | -        HAVING COUNT(cs.id_) = 0)e
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  | -    <sql id="queryNotCourseSql">
 | 
	
		
			
				|  |  | -        <where>
 | 
	
		
			
				|  |  | -                su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
 | 
	
		
			
				|  |  | -            <if test="userIds != null">
 | 
	
		
			
				|  |  | -                AND su.id_ IN
 | 
	
		
			
				|  |  | -                <foreach collection="userIds" open="(" close=")" separator="," item="item">
 | 
	
		
			
				|  |  | -                    #{item}
 | 
	
		
			
				|  |  | -                </foreach>
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="organId != null">
 | 
	
		
			
				|  |  | -                AND FIND_IN_SET(su.organ_id_,#{organId})
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="search != null and search != ''">
 | 
	
		
			
				|  |  | -                AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_ LIKE CONCAT('%',#{search},'%'))
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="isActive != null and isActive == true">
 | 
	
		
			
				|  |  | -                and su.password_ is not null
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="isActive != null and isActive == false">
 | 
	
		
			
				|  |  | -                and su.password_ is null
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="isMake != null and isMake == true">
 | 
	
		
			
				|  |  | -                and pla.id_ IS NOT NULL
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="isMake != null and isMake == false">
 | 
	
		
			
				|  |  | -                and pla.id_ IS NULL
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="operatingTag != null">
 | 
	
		
			
				|  |  | -                AND st.operating_tag_ = #{operatingTag}
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -            <if test="serviceTag != null">
 | 
	
		
			
				|  |  | -                AND st.service_tag_ = #{serviceTag}
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -        </where>
 | 
	
		
			
				|  |  | -    </sql>
 | 
	
		
			
				|  |  | -    <select id="queryStudentHasCourse" resultType="java.util.Map">
 | 
	
		
			
				|  |  | -        SELECT cssp.user_id_ 'key',CASE WHEN COUNT(cssp.id_ AND cs.status_ != 'OVER') = 0 THEN 0 ELSE 1 END 'value'
 | 
	
		
			
				|  |  | -        FROM course_schedule_student_payment cssp
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 | 
	
		
			
				|  |  | -        <where>
 | 
	
		
			
				|  |  | -            <if test="userIds != null">
 | 
	
		
			
				|  |  | -                cssp.user_id_ IN
 | 
	
		
			
				|  |  | -                <foreach collection="userIds" open="(" close=")" separator="," item="item">
 | 
	
		
			
				|  |  | -                    #{item}
 | 
	
		
			
				|  |  | -                </foreach>
 | 
	
		
			
				|  |  | -            </if>
 | 
	
		
			
				|  |  | -        </where>
 | 
	
		
			
				|  |  | -        GROUP BY cssp.user_id_
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  |      <resultMap id="StudentHasCourseDtoMap" type="com.ym.mec.biz.dal.dto.StudentHasCourseDto">
 | 
	
		
			
				|  |  |          <result property="userName" column="username_"/>
 | 
	
		
			
				|  |  |          <result property="musicGroupName" column="music_group_name_"/>
 | 
	
	
		
			
				|  | @@ -712,47 +645,7 @@
 | 
	
		
			
				|  |  |          <result property="isActive" column="is_active_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  |          <result property="isMake" column="is_make_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  |      </resultMap>
 | 
	
		
			
				|  |  | -    <select id="queryCourseStudent" resultMap="StudentHasCourseDtoMap">
 | 
	
		
			
				|  |  | -        SELECT su.id_,su.username_,o.name_ organ_name_,
 | 
	
		
			
				|  |  | -        CASE WHEN su.password_ IS NULL THEN 0 ELSE 1 END is_active_,
 | 
	
		
			
				|  |  | -        CASE WHEN pla.id_ IS NULL THEN 0 ELSE 1 END is_make_
 | 
	
		
			
				|  |  | -        FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN organization o ON su.organ_id_ = o.id_
 | 
	
		
			
				|  |  | -        LEFT JOIN practice_lesson_apply pla ON pla.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        WHERE su.id_ IN
 | 
	
		
			
				|  |  | -        <foreach collection="userIds" separator="," open="(" close=")" item="item">
 | 
	
		
			
				|  |  | -            #{item}
 | 
	
		
			
				|  |  | -        </foreach>
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  | -    <resultMap id="studentManageListDto" type="com.ym.mec.biz.dal.dto.StudentManageListDto">
 | 
	
		
			
				|  |  | -        <result property="userId" column="user_id_"/>
 | 
	
		
			
				|  |  | -        <result property="realName" column="real_name_"/>
 | 
	
		
			
				|  |  | -        <result property="nation" column="nation_"/>
 | 
	
		
			
				|  |  | -        <result property="parentsPhone" column="parents_phone_"/>
 | 
	
		
			
				|  |  | -        <result property="parentsName" column="real_name_"/>
 | 
	
		
			
				|  |  | -        <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | -        <result property="username" column="username_"/>
 | 
	
		
			
				|  |  | -        <result property="birthdate" column="birthdate_"/>
 | 
	
		
			
				|  |  | -        <result property="currentGrade" column="current_grade_"/>
 | 
	
		
			
				|  |  | -        <result property="currentClass" column="current_class_"/>
 | 
	
		
			
				|  |  | -        <result property="isActive" column="isActive_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | -        <result property="hasCourse" column="hasCourse_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | -        <result property="hasPracticeCourse" column="hasPracticeCourse_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | -        <result property="musicGroupName" column="music_group_name_"/>
 | 
	
		
			
				|  |  | -        <result property="musicGroupStatus" column="music_group_status_"/>
 | 
	
		
			
				|  |  | -        <result property="vipGroupName" column="vip_group_name_"/>
 | 
	
		
			
				|  |  | -        <result property="vipGroupStatus" column="vip_group_status_"/>
 | 
	
		
			
				|  |  | -        <result property="organName" column="organ_name_"/>
 | 
	
		
			
				|  |  | -        <result property="organId" column="organ_id_"/>
 | 
	
		
			
				|  |  | -        <result property="subjectName" column="music_group_subject_"/>
 | 
	
		
			
				|  |  | -        <result property="courseBalance" column="course_balance_"/>
 | 
	
		
			
				|  |  | -        <result property="balance" column="balance_"/>
 | 
	
		
			
				|  |  | -        <result property="serviceTag" column="service_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | -        <result property="operatingTag" column="operating_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  | -        <result property="teacherName" column="teacher_name_"/>
 | 
	
		
			
				|  |  | -        <result property="teacherId" column="teacher_id_"/>
 | 
	
		
			
				|  |  | -        <result property="subjectIdList" column="subject_id_list_"/>
 | 
	
		
			
				|  |  | -    </resultMap>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      <select id="queryHasCourseStudent" resultMap="studentManageListDto">
 | 
	
		
			
				|  |  |          SELECT su.id_ user_id_,su.username_,su.gender_,GROUP_CONCAT(DISTINCT sr.parents_name_)parents_name_,
 | 
	
		
			
				|  |  |          GROUP_CONCAT(DISTINCT sr.parents_phone_)parents_phone_,
 | 
	
	
		
			
				|  | @@ -818,12 +711,6 @@
 | 
	
		
			
				|  |  |          </if>
 | 
	
		
			
				|  |  |          GROUP BY su.id_
 | 
	
		
			
				|  |  |      </select>
 | 
	
		
			
				|  |  | -    <select id="getHasCourse" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  | -        SELECT COUNT(DISTINCT su.id_) FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 | 
	
		
			
				|  |  | -        WHERE cs.status_ != 'OVER' AND su.id_ = #{userId}
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  |      <select id="countStudentSignInNum" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  |          SELECT COUNT(id_) FROM student_attendance WHERE course_schedule_id_ = #{courseScheduleId} AND status_ = #{status}
 | 
	
		
			
				|  |  |      </select>
 | 
	
	
		
			
				|  | @@ -848,19 +735,6 @@
 | 
	
		
			
				|  |  |              AND su.password_ IS NULL
 | 
	
		
			
				|  |  |          </if>
 | 
	
		
			
				|  |  |      </sql>
 | 
	
		
			
				|  |  | -    <select id="queryHasPracticeCourse" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  | -        SELECT DISTINCT su.id_ FROM sys_user su
 | 
	
		
			
				|  |  | -        LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 | 
	
		
			
				|  |  | -        WHERE su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0 AND cssp.group_type_ = 'PRACTICE'
 | 
	
		
			
				|  |  | -        <include refid="queryHasPracticeCourseSql"/>
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  | -    <select id="queryNotPracticeCourse" resultType="java.lang.Integer">
 | 
	
		
			
				|  |  | -        SELECT DISTINCT su.id_ FROM sys_user su
 | 
	
		
			
				|  |  | -        WHERE su.id_ NOT IN
 | 
	
		
			
				|  |  | -        (SELECT DISTINCT cssp.user_id_ FROM course_schedule_student_payment cssp WHERE cssp.group_type_ = 'PRACTICE')
 | 
	
		
			
				|  |  | -        AND su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
 | 
	
		
			
				|  |  | -        <include refid="queryHasPracticeCourseSql"/>
 | 
	
		
			
				|  |  | -    </select>
 | 
	
		
			
				|  |  |      <select id="getHasPracticeCourse" resultType="java.util.Map">
 | 
	
		
			
				|  |  |          SELECT cssp.user_id_ 'key',COUNT(DISTINCT cssp.user_id_) 'value' FROM course_schedule_student_payment cssp
 | 
	
		
			
				|  |  |          WHERE cssp.group_type_ = 'PRACTICE' AND cssp.user_id_ IN
 | 
	
	
		
			
				|  | @@ -914,5 +788,15 @@
 | 
	
		
			
				|  |  |          </foreach>
 | 
	
		
			
				|  |  |          GROUP BY su.id_
 | 
	
		
			
				|  |  |      </select>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    <select id="queryStudentRemianCourse" resultMap="StudentListCourseDto">
 | 
	
		
			
				|  |  | +    	SELECT cssp.`user_id_` userId,count(cssp.`id_`) remainCourseNum,sum(case when cs.`group_type_` = 'PRACTICE' then 1 else 0 end) remainPracticeNum  
 | 
	
		
			
				|  |  | +    	FROM `course_schedule_student_payment` cssp LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
 | 
	
		
			
				|  |  | +		WHERE cs.`status_` = 'NOT_START' AND cssp.`user_id_` IN
 | 
	
		
			
				|  |  | +        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
 | 
	
		
			
				|  |  | +            #{userId}
 | 
	
		
			
				|  |  | +        </foreach>
 | 
	
		
			
				|  |  | +		GROUP BY cssp.`user_id_`
 | 
	
		
			
				|  |  | +    </select>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  </mapper>
 |