|
@@ -762,6 +762,288 @@
|
|
|
AND DATEDIFF(MAX(cto.end_time_),NOW()) = #{pushMemberRenew}
|
|
|
</select>
|
|
|
|
|
|
+ <select id="getOrganStudentNum" resultType="int">
|
|
|
+ SELECT COUNT(DISTINCT user_id_)
|
|
|
+ FROM ((SELECT sr.user_id_
|
|
|
+ FROM student_registration sr
|
|
|
+ LEFT JOIN sys_user su ON sr.user_id_=su.id_
|
|
|
+ WHERE su.del_flag_=0
|
|
|
+ AND sr.music_group_status_='NORMAL'
|
|
|
+ AND su.organ_id_ = #{organId})
|
|
|
+ UNION ALL
|
|
|
+ (SELECT
|
|
|
+ cssp.user_id_
|
|
|
+ FROM
|
|
|
+ course_schedule_student_payment cssp
|
|
|
+ LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
|
|
|
+ LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
|
|
|
+ WHERE
|
|
|
+ cssp.group_type_ IN ('VIP', 'PRACTICE')
|
|
|
+ AND cs.status_='NOT_START'
|
|
|
+ AND su.del_flag_ = 0
|
|
|
+ AND su.organ_id_ = #{organId})) t
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrgansTotalStudentNum" resultType="int">
|
|
|
+ SELECT COUNT(DISTINCT user_id_)
|
|
|
+ FROM ((SELECT sr.user_id_
|
|
|
+ FROM student_registration sr
|
|
|
+ LEFT JOIN sys_user su ON sr.user_id_=su.id_
|
|
|
+ WHERE su.del_flag_=0
|
|
|
+ AND sr.music_group_status_='NORMAL'
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>)
|
|
|
+ UNION ALL
|
|
|
+ (SELECT
|
|
|
+ cssp.user_id_
|
|
|
+ FROM
|
|
|
+ course_schedule_student_payment cssp
|
|
|
+ LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
|
|
|
+ LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
|
|
|
+ WHERE
|
|
|
+ cssp.group_type_ IN ('VIP', 'PRACTICE')
|
|
|
+ AND cs.status_='NOT_START'
|
|
|
+ AND su.del_flag_ = 0
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>)) t
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrgansStudentNum" resultType="map">
|
|
|
+ SELECT t.organ_id_ 'key',COUNT(DISTINCT user_id_) 'value'
|
|
|
+ FROM ((SELECT su.organ_id_,sr.user_id_
|
|
|
+ FROM student_registration sr
|
|
|
+ LEFT JOIN sys_user su ON sr.user_id_=su.id_
|
|
|
+ WHERE su.del_flag_=0
|
|
|
+ AND sr.music_group_status_='NORMAL')
|
|
|
+ UNION ALL
|
|
|
+ (SELECT
|
|
|
+ su.organ_id_,cssp.user_id_
|
|
|
+ FROM
|
|
|
+ course_schedule_student_payment cssp
|
|
|
+ LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
|
|
|
+ LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
|
|
|
+ WHERE
|
|
|
+ cssp.group_type_ IN ('VIP', 'PRACTICE')
|
|
|
+ AND cs.status_='NOT_START'
|
|
|
+ AND su.del_flag_ = 0)) t
|
|
|
+ WHERE 1=1
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND t.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY t.organ_id_
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getCloudStudyStudentNum" resultType="int">
|
|
|
+ SELECT
|
|
|
+ COUNT(DISTINCT smcr.user_id_)
|
|
|
+ FROM sys_music_compare_record smcr
|
|
|
+ LEFT JOIN sys_user su ON smcr.user_id_=su.id_
|
|
|
+ LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL AND su.organ_id_=#{organId};
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrgansTotalCloudStudyStudentNum" resultType="int">
|
|
|
+ SELECT
|
|
|
+ COUNT(DISTINCT smcr.user_id_)
|
|
|
+ FROM sys_music_compare_record smcr
|
|
|
+ LEFT JOIN sys_user su ON smcr.user_id_=su.id_
|
|
|
+ LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrgansTodayTotalCloudStudyStudentNum" resultType="int">
|
|
|
+ SELECT
|
|
|
+ COUNT(DISTINCT smcr.user_id_)
|
|
|
+ FROM sys_music_compare_record smcr
|
|
|
+ LEFT JOIN sys_user su ON smcr.user_id_=su.id_
|
|
|
+ LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrganCloudStudyStudentNum" resultType="map">
|
|
|
+ SELECT
|
|
|
+ su.organ_id_ 'key',
|
|
|
+ COUNT(DISTINCT smcr.user_id_) 'value'
|
|
|
+ FROM sys_music_compare_record smcr
|
|
|
+ LEFT JOIN sys_user su ON smcr.user_id_=su.id_
|
|
|
+ LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY su.organ_id_
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getCloudStudyLivelyStudentNum" resultType="int">
|
|
|
+ SELECT COUNT(user_id_)
|
|
|
+ FROM (SELECT
|
|
|
+ smcr.user_id_,
|
|
|
+ COUNT(DISTINCT(CASE WHEN DATEDIFF(NOW(), smcr.create_time_)<=15 THEN DATE_FORMAT(smcr.create_time_, '%Y-%m-%d') ELSE NULL END)) days
|
|
|
+ FROM sys_music_compare_record smcr
|
|
|
+ LEFT JOIN sys_user su ON smcr.user_id_=su.id_
|
|
|
+ LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL AND su.organ_id_=#{organId}
|
|
|
+ GROUP BY smcr.user_id_) t WHERE t.days>=5
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrganTotalCloudStudyLivelyStudentNum" resultType="int">
|
|
|
+ SELECT COUNT(user_id_)
|
|
|
+ FROM (SELECT
|
|
|
+ smcr.user_id_,
|
|
|
+ COUNT(DISTINCT(CASE WHEN DATEDIFF(NOW(), smcr.create_time_)<=15 THEN DATE_FORMAT(smcr.create_time_, '%Y-%m-%d') ELSE NULL END)) days
|
|
|
+ FROM sys_music_compare_record smcr
|
|
|
+ LEFT JOIN sys_user su ON smcr.user_id_=su.id_
|
|
|
+ LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY smcr.user_id_) t WHERE t.days>=5
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrganCloudStudyLivelyStudentNum" resultType="map">
|
|
|
+ SELECT
|
|
|
+ t.organ_id_ 'key',
|
|
|
+ COUNT(user_id_) 'value'
|
|
|
+ FROM (SELECT
|
|
|
+ su.organ_id_,
|
|
|
+ smcr.user_id_,
|
|
|
+ COUNT(DISTINCT(CASE WHEN DATEDIFF(NOW(), smcr.create_time_)<=15 THEN DATE_FORMAT(smcr.create_time_, '%Y-%m-%d') ELSE NULL END)) days
|
|
|
+ FROM sys_music_compare_record smcr
|
|
|
+ LEFT JOIN sys_user su ON smcr.user_id_=su.id_
|
|
|
+ LEFT JOIN student stu ON smcr.user_id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.user_id_ IS NOT NULL
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY smcr.user_id_) t WHERE t.days>=5
|
|
|
+ GROUP BY t.organ_id_
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <sql id="queryCloudStudyStudentDataCondition">
|
|
|
+ <where>
|
|
|
+ su.del_flag_=0
|
|
|
+ <if test="organId!=null">
|
|
|
+ AND su.organ_id_=#{organId}
|
|
|
+ </if>
|
|
|
+ <if test="search!=null and search!=''">
|
|
|
+ AND (stu.user_id_=#{search} OR su.username_ LIKE CONCAT('%', #{search}, '%'))
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <select id="queryCloudStudyStudentData" resultType="com.ym.mec.biz.dal.dto.EduOrganStudentListDto">
|
|
|
+ SELECT
|
|
|
+ stu.user_id_ studentId,
|
|
|
+ su.username_ studentName,
|
|
|
+ stu.teacher_id_ teacherId,
|
|
|
+ tea.real_name_ teacherName,
|
|
|
+ sub.name_ subjectName,
|
|
|
+ stu.cloud_study_sequence_days_ cloudStudyRunningDays,
|
|
|
+ COUNT(DISTINCT smcr.behavior_id_) cloudStudyUseNum,
|
|
|
+ SUM(CASE WHEN smcr.play_time_ IS NULL THEN 0 ELSE play_time_ END) cloudStudyUseTime,
|
|
|
+ DATE_FORMAT(stu.membership_end_time_, '%Y-%m-%d') membershipEndTime
|
|
|
+ FROM student stu
|
|
|
+ LEFT JOIN sys_user su ON stu.user_id_=su.id_
|
|
|
+ LEFT JOIN sys_user tea ON stu.teacher_id_=tea.id_
|
|
|
+ LEFT JOIN `subject` sub ON stu.subject_id_list_ = sub.id_
|
|
|
+ LEFT JOIN sys_music_compare_record smcr ON stu.user_id_ = smcr.user_id_
|
|
|
+ <include refid="queryCloudStudyStudentDataCondition" />
|
|
|
+ GROUP BY stu.user_id_
|
|
|
+ <trim prefix="ORDER BY " suffixOverrides=",">
|
|
|
+ <if test="cloudStudyUseTime==null and cloudStudyRunningDays==null">
|
|
|
+ stu.user_id_,
|
|
|
+ </if>
|
|
|
+ <if test="cloudStudyUseTime!=null">
|
|
|
+ cloudStudyUseTime ${cloudStudyUseTime},
|
|
|
+ </if>
|
|
|
+ <if test="cloudStudyRunningDays!=null">
|
|
|
+ cloudStudyRunningDays ${cloudStudyRunningDays}
|
|
|
+ </if>
|
|
|
+ </trim>
|
|
|
+ <include refid="global.limit"></include>
|
|
|
+ </select>
|
|
|
+ <select id="countCloudStudyStudentData" resultType="int">
|
|
|
+ SELECT
|
|
|
+ COUNT(stu.user_id_)
|
|
|
+ FROM student stu
|
|
|
+ LEFT JOIN sys_user su ON stu.user_id_=su.id_
|
|
|
+ <include refid="queryCloudStudyStudentDataCondition" />
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrganEVipStudentNum" resultType="int">
|
|
|
+ SELECT COUNT(DISTINCT stu.user_id_)
|
|
|
+ FROM student stu
|
|
|
+ LEFT JOIN cloud_teacher_order cto ON stu.user_id_=cto.student_id_
|
|
|
+ LEFT JOIN sys_user su ON su.id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND su.organ_id_=#{organId} AND stu.experience_member_rank_setting_id_ IS NOT NULL
|
|
|
+ AND NOT EXISTS (SELECT student_id_ FROM cloud_teacher_order WHERE student_id_=stu.user_id_ AND status_ IN (1,2))
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrgansTotalEVipStudentNum" resultType="int">
|
|
|
+ SELECT COUNT(DISTINCT stu.user_id_)
|
|
|
+ FROM student stu
|
|
|
+ LEFT JOIN cloud_teacher_order cto ON stu.user_id_=cto.student_id_
|
|
|
+ LEFT JOIN sys_user su ON su.id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.experience_member_rank_setting_id_ IS NOT NULL AND (cto.id_ IS NULL OR cto.status_ NOT IN (1, 2))
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getOrgansEVipStudentNum" resultType="map">
|
|
|
+ SELECT
|
|
|
+ su.organ_id_ 'key',
|
|
|
+ COUNT(DISTINCT stu.user_id_) 'value'
|
|
|
+ FROM student stu
|
|
|
+ LEFT JOIN cloud_teacher_order cto ON stu.user_id_=cto.student_id_
|
|
|
+ LEFT JOIN sys_user su ON su.id_=stu.user_id_
|
|
|
+ WHERE su.del_flag_=0 AND stu.experience_member_rank_setting_id_ IS NOT NULL
|
|
|
+ AND NOT IN (SELECT DISTINCT student_id_ FROM cloud_teacher_order WHERE status_ IN (1,2))
|
|
|
+ <if test="organIds!=null and organIds.size()>0">
|
|
|
+ AND su.organ_id_ IN
|
|
|
+ <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
|
|
|
+ #{organId}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY su.organ_id_
|
|
|
+ </select>
|
|
|
+
|
|
|
<update id="updateGrade"><![CDATA[
|
|
|
UPDATE student SET current_grade_num_=current_grade_num_+1
|
|
|
WHERE current_grade_num_>=1
|
|
@@ -784,4 +1066,16 @@
|
|
|
UPDATE student SET member_rank_setting_id_ = NULL,membership_start_time_ = NULL,membership_end_time_ = NULL
|
|
|
WHERE user_id_ = #{userId}
|
|
|
</update>
|
|
|
+
|
|
|
+ <update id="addStudentCloudStudySequenceDays">
|
|
|
+ UPDATE student SET cloud_study_sequence_days_=cloud_study_sequence_days_+1,cloud_study_use_last_day_=curdate() WHERE user_id_=#{userId} AND (cloud_study_use_last_day_ IS NULL OR cloud_study_use_last_day_=date_sub(curdate(), interval 1 day))
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <update id="updateStudentsCloudStudySequenceDays">
|
|
|
+ UPDATE student SET cloud_study_sequence_days_=#{days} WHERE user_id_=#{userId}
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <update id="cleanStudentCloudStudySequenceDays">
|
|
|
+ UPDATE student SET cloud_study_sequence_days_=0,cloud_study_use_last_day_=date_sub(curdate(), interval 1 day) WHERE cloud_study_use_last_day_<date_sub(curdate(), interval 1 day)
|
|
|
+ </update>
|
|
|
</mapper>
|