|
@@ -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>
|