|
@@ -998,4 +998,74 @@
|
|
|
</foreach>
|
|
|
GROUP BY cssp.user_id_
|
|
|
</select>
|
|
|
+ <resultMap id="ExportVipStudentCourseManageDto" type="com.ym.mec.biz.dal.dto.ExportVipStudentCourseManageDto">
|
|
|
+ <result property="username" column="student_name_"/>
|
|
|
+ <result property="userId" column="id_"/>
|
|
|
+ <result property="totalClassNum" column="total_times_"/>
|
|
|
+ <result property="eduName" column="eduName"/>
|
|
|
+ <result property="eduId" column="eduId"/>
|
|
|
+ <result property="teacherName" column="teacherName"/>
|
|
|
+ <result property="teacherId" column="teacherId"/>
|
|
|
+ <result property="organName" column="organ_name_"/>
|
|
|
+ <result property="courseType" column="course_type_"/>
|
|
|
+ <result property="activeFlag" column="activeFlag"/>
|
|
|
+ <result property="completedTimes" column="completed_times_"/>
|
|
|
+ <result property="consumerTimes" column="consumerTimes"/>
|
|
|
+ <result property="lastCourseTime" column="last_course_time_"/>
|
|
|
+ <result property="remaindTimes" column="remaind_times_"/>
|
|
|
+ <result property="subjectTeacherName" column="subjectTeacherName"/>
|
|
|
+ <result property="subjectTeacherId" column="subjectTeacherId"/>
|
|
|
+ </resultMap>
|
|
|
+ <select id="queryVipStudentCourseManage" resultMap="ExportVipStudentCourseManageDto">
|
|
|
+ SELECT a.organ_name_ ,a.student_name_, a.id_,a.course_type_,a.total_times_,
|
|
|
+ a.completed_times_, a.remaind_times_, a.last_course_time_,
|
|
|
+ ifnull(b.vip_teacher_name_,a.teacher_name_) teacherName,ifnull(b.actual_teacher_id_,a.teacher_id_) teacherId,
|
|
|
+ ifnull(b.edu_teacher_name_,a.edu_teacher_name_) eduName,ifnull(b.educational_teacher_id_,a.edu_teacher_id_) eduId,
|
|
|
+ c.real_name_ subjectTeacherName,c.actual_teacher_id_ subjectTeacherId,ifnull(d.month_count_,0) consumerTimes,
|
|
|
+ CASE WHEN d.month_count_ > 2 THEN '是' ELSE '否' END activeFlag FROM
|
|
|
+ (
|
|
|
+ SELECT o.`name_` organ_name_,u.`username_` student_name_,vgc.`name_` course_type_,u.`id_` ,
|
|
|
+ count(vg.`online_classes_num_` + vg.`offline_classes_num_` ) total_times_,
|
|
|
+ sum(case when cs.`status_` != 'NOT_START' then 1 else 0 end) completed_times_,
|
|
|
+ sum(case when cs.`status_` = 'NOT_START' then 1 else 0 end) remaind_times_,
|
|
|
+ max(case when cs.`status_` != 'NOT_START' then cs.`class_date_` end) last_course_time_ ,
|
|
|
+ vg.`vip_group_category_id_` ,tu.id_ teacher_id_ ,tu.`real_name_` teacher_name_,edu.`id_` edu_teacher_id_,edu.`real_name_` edu_teacher_name_
|
|
|
+ FROM `course_schedule_student_payment` cssp
|
|
|
+ LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
|
|
|
+ LEFT JOIN `vip_group` vg on vg.`id_` = cssp.`music_group_id_` AND cssp.`group_type_` = 'VIP'
|
|
|
+ LEFT JOIN `vip_group_category` vgc on vgc.`id_` = vg.`vip_group_category_id_`
|
|
|
+ LEFT JOIN `sys_user` u on u.`id_` = cssp.`user_id_`
|
|
|
+ LEFT JOIN `sys_user` tu on tu.`id_` = vg.`user_id_`
|
|
|
+ LEFT JOIN `sys_user` edu on edu.`id_` = vg.`educational_teacher_id_`
|
|
|
+ LEFT JOIN `organization` o on o.`id_` = u.`organ_id_`
|
|
|
+ WHERE cssp.`group_type_` = 'VIP' AND cs.`del_flag_` != 1 AND cs.`is_lock_` != 1
|
|
|
+ AND u.`organ_id_` not in (38,43,56,36) AND vg.`group_status_` in (2, 4) AND u.tenant_id_ = #{tenantId}
|
|
|
+ <if test="organId != null and organId != ''">
|
|
|
+ AND FIND_IN_SET(u.`organ_id_`,#{organId})
|
|
|
+ </if>
|
|
|
+ GROUP BY cssp.`user_id_` ,vg.`vip_group_category_id_`
|
|
|
+ ) a LEFT JOIN
|
|
|
+ (
|
|
|
+ SELECT cssp.`user_id_` ,cs.`actual_teacher_id_`,tu.`real_name_` vip_teacher_name_,vg.`educational_teacher_id_` ,edu.`real_name_` edu_teacher_name_,vg.`vip_group_category_id_` FROM `course_schedule_student_payment` cssp LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
|
|
|
+ LEFT JOIN `sys_user` tu on tu.`id_` = cs.`actual_teacher_id_`
|
|
|
+ LEFT JOIN `vip_group` vg on vg.`id_` = cssp.`music_group_id_`
|
|
|
+ LEFT JOIN `sys_user` edu on edu.`id_` = vg.`educational_teacher_id_`
|
|
|
+ WHERE cs.`status_` = 'OVER' AND cssp.`group_type_` = 'VIP'
|
|
|
+ GROUP BY cssp.`user_id_`,vg.`vip_group_category_id_`
|
|
|
+ ) b on a.id_ = b.user_id_ and a.vip_group_category_id_ = b.vip_group_category_id_
|
|
|
+ LEFT JOIN
|
|
|
+ (
|
|
|
+ SELECT cssp.`user_id_` ,cs.`actual_teacher_id_`,tu.`real_name_` FROM `course_schedule_student_payment` cssp LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
|
|
|
+ LEFT JOIN `sys_user` tu on tu.`id_` = cs.`actual_teacher_id_`
|
|
|
+ WHERE cs.`status_` = 'OVER' and cs.`type_` = 'SINGLE'
|
|
|
+ GROUP BY cssp.`user_id_`
|
|
|
+ ) c on b.user_id_ = c.user_id_
|
|
|
+ LEFT JOIN
|
|
|
+ (
|
|
|
+ SELECT cssp.`user_id_` ,vg.`vip_group_category_id_` ,ifnull(count(cssp.`id_`),0) month_count_ FROM `course_schedule_student_payment` cssp LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
|
|
|
+ LEFT JOIN `vip_group` vg on vg.`id_` = cssp.`music_group_id_`
|
|
|
+ WHERE cs.`status_` = 'OVER' and cssp.`group_type_` = 'VIP' AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) < cs.`class_date_`
|
|
|
+ GROUP BY cssp.`user_id_` ,vg.`vip_group_category_id_`
|
|
|
+ ) d on b.user_id_ = d.user_id_ and a.vip_group_category_id_ = d.vip_group_category_id_
|
|
|
+ </select>
|
|
|
</mapper>
|