|  | @@ -133,4 +133,111 @@
 | 
	
		
			
				|  |  |  			WHERE user_id_ = #{item.userId}
 | 
	
		
			
				|  |  |          </foreach>
 | 
	
		
			
				|  |  |  	</update>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	<resultMap id="student4operating" type="com.ym.mec.biz.dal.dto.Student4operating">
 | 
	
		
			
				|  |  | +		<result column="organ_name_" property="organName"/>
 | 
	
		
			
				|  |  | +		<result column="organ_id_" property="organId"/>
 | 
	
		
			
				|  |  | +		<result column="student_name_" property="studentName"/>
 | 
	
		
			
				|  |  | +		<result column="student_id_" property="studentId"/>
 | 
	
		
			
				|  |  | +		<result column="teacher_id_" property="teacherId"/>
 | 
	
		
			
				|  |  | +		<result column="teacher_name_" property="teacherName"/>
 | 
	
		
			
				|  |  | +		<result column="operating_tag_" property="operatingTag"/>
 | 
	
		
			
				|  |  | +		<result column="vip_times_" property="vipTimes"/>
 | 
	
		
			
				|  |  | +		<result column="free_practice_times_" property="freePracticeTimes"/>
 | 
	
		
			
				|  |  | +		<result column="buy_practice_times_" property="buyPracticeTimes"/>
 | 
	
		
			
				|  |  | +	</resultMap>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	<select id="getOperatingStudents" resultMap="student4operating">
 | 
	
		
			
				|  |  | +		SELECT su.organ_id_,
 | 
	
		
			
				|  |  | +		o.name_ organ_name_,
 | 
	
		
			
				|  |  | +		su.username_   student_name_,
 | 
	
		
			
				|  |  | +		s.user_id_     student_id_,
 | 
	
		
			
				|  |  | +		tsu.id_        teacher_id_,
 | 
	
		
			
				|  |  | +		tsu.real_name_ teacher_name_,
 | 
	
		
			
				|  |  | +		s.operating_tag_,
 | 
	
		
			
				|  |  | +		a.vip_times_,
 | 
	
		
			
				|  |  | +		a.buy_practice_times_,
 | 
	
		
			
				|  |  | +		p.free_practice_times_
 | 
	
		
			
				|  |  | +		FROM student s
 | 
	
		
			
				|  |  | +		LEFT JOIN sys_user su ON s.user_id_ = su.id_
 | 
	
		
			
				|  |  | +		LEFT JOIN sys_user tsu ON tsu.id_ = s.teacher_id_
 | 
	
		
			
				|  |  | +		LEFT JOIN organization o ON o.id_ = su.organ_id_
 | 
	
		
			
				|  |  | +		LEFT JOIN (
 | 
	
		
			
				|  |  | +		SELECT s.user_id_,
 | 
	
		
			
				|  |  | +		SUM(case when (cs.group_type_ = 'VIP') then 1 ELSE 0 END) vip_times_,
 | 
	
		
			
				|  |  | +		SUM(case when (pg.buy_months_ > 0) then 1 ELSE 0 END)     buy_practice_times_
 | 
	
		
			
				|  |  | +		FROM student s
 | 
	
		
			
				|  |  | +		LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = s.user_id_
 | 
	
		
			
				|  |  | +		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'
 | 
	
		
			
				|  |  | +		WHERE cs.status_ = 'NOT_START'
 | 
	
		
			
				|  |  | +		GROUP BY s.user_id_
 | 
	
		
			
				|  |  | +		) a on a.user_id_ = s.user_id_
 | 
	
		
			
				|  |  | +		LEFT JOIN (
 | 
	
		
			
				|  |  | +		SELECT student_id_, count(id_) free_practice_times_
 | 
	
		
			
				|  |  | +		FROM practice_group
 | 
	
		
			
				|  |  | +		WHERE buy_months_ IS NULL
 | 
	
		
			
				|  |  | +		GROUP BY student_id_
 | 
	
		
			
				|  |  | +		) p ON p.student_id_ = s.user_id_
 | 
	
		
			
				|  |  | +		<include refid="student4OperatingQueryCondition"/>
 | 
	
		
			
				|  |  | +		ORDER BY s.user_id_
 | 
	
		
			
				|  |  | +		<include refid="global.limit"/>
 | 
	
		
			
				|  |  | +	</select>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	<select id="countOperatingStudents" resultType="int">
 | 
	
		
			
				|  |  | +		SELECT COUNT(s.user_id_) FROM student s
 | 
	
		
			
				|  |  | +		LEFT JOIN sys_user su ON s.user_id_ = su.id_
 | 
	
		
			
				|  |  | +		LEFT JOIN sys_user tsu ON tsu.id_ = s.teacher_id_
 | 
	
		
			
				|  |  | +		LEFT JOIN (
 | 
	
		
			
				|  |  | +		SELECT s.user_id_,
 | 
	
		
			
				|  |  | +		SUM(case when (cs.group_type_ = 'VIP') then 1 ELSE 0 END) vip_times_,
 | 
	
		
			
				|  |  | +		SUM(case when (pg.buy_months_ > 0) then 1 ELSE 0 END)     buy_practice_times_
 | 
	
		
			
				|  |  | +		FROM student s
 | 
	
		
			
				|  |  | +		LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = s.user_id_
 | 
	
		
			
				|  |  | +		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'
 | 
	
		
			
				|  |  | +		WHERE cs.status_ = 'NOT_START'
 | 
	
		
			
				|  |  | +		GROUP BY s.user_id_
 | 
	
		
			
				|  |  | +		) a on a.user_id_ = s.user_id_
 | 
	
		
			
				|  |  | +		LEFT JOIN (
 | 
	
		
			
				|  |  | +		SELECT student_id_, count(id_) free_practice_times_
 | 
	
		
			
				|  |  | +		FROM practice_group
 | 
	
		
			
				|  |  | +		WHERE buy_months_ IS NULL
 | 
	
		
			
				|  |  | +		GROUP BY student_id_
 | 
	
		
			
				|  |  | +		) p ON p.student_id_ = s.user_id_
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		<include refid="student4OperatingQueryCondition"/>
 | 
	
		
			
				|  |  | +	</select>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	<sql id="student4OperatingQueryCondition">
 | 
	
		
			
				|  |  | +		<where>
 | 
	
		
			
				|  |  | +			<if test="organId != null and organId != ''">
 | 
	
		
			
				|  |  | +				AND FIND_IN_SET(su.organ_id_,#{organId})
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test="teacherId!=null">
 | 
	
		
			
				|  |  | +				AND s.teacher_id_ = #{teacherId}
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test="operatingTag !=null">
 | 
	
		
			
				|  |  | +				AND s.operating_tag_ = #{operatingTag}
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test='hasVip != null and hasVip.toString()=="1".toString()'>
 | 
	
		
			
				|  |  | +				AND a.vip_times_ >=1
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test='hasVip != null and hasVip.toString()=="0".toString()'>
 | 
	
		
			
				|  |  | +				AND (a.vip_times_ =0 OR a.vip_times_ IS NULL)
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test='HasFreePractice != null and HasFreePractice.toString()=="1".toString()'>
 | 
	
		
			
				|  |  | +				AND p.free_practice_times_ >=1
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test='HasFreePractice != null and HasFreePractice.toString()=="0".toString()'>
 | 
	
		
			
				|  |  | +				AND (p.free_practice_times_ =0 OR p.free_practice_times_ IS NULL)
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test='HasBuyPractice != null and HasBuyPractice.toString()=="1".toString()'>
 | 
	
		
			
				|  |  | +				AND a.buy_practice_times_ >=1
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +			<if test='HasBuyPractice != null and HasBuyPractice.toString()=="0".toString()'>
 | 
	
		
			
				|  |  | +				AND (a.buy_practice_times_ =0 OR a.buy_practice_times_ IS NULL)
 | 
	
		
			
				|  |  | +			</if>
 | 
	
		
			
				|  |  | +		</where>
 | 
	
		
			
				|  |  | +	</sql>
 | 
	
		
			
				|  |  |  </mapper>
 |