|
@@ -872,26 +872,19 @@
|
|
|
</if>
|
|
|
</select>
|
|
|
<select id="countMusicMemberList" resultType="java.lang.Integer">
|
|
|
- SELECT COUNT(c.user_id_) FROM
|
|
|
- (SELECT sr.user_id_ FROM student_registration sr
|
|
|
+ SELECT COUNT(DISTINCT sr.user_id_)
|
|
|
+ FROM student_registration sr
|
|
|
LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
|
|
|
- LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_ AND cto.status_ IN (1,2)
|
|
|
LEFT JOIN sys_user su ON su.id_ = sr.user_id_
|
|
|
LEFT JOIN organization o ON o.id_ = mg.organ_id_
|
|
|
LEFT JOIN student_visit sv ON sv.student_id_ = sr.user_id_ AND sv.purpose_ = '会员续费'
|
|
|
- <include refid="queryMusicMemberListSql"/>
|
|
|
- GROUP BY sr.user_id_ HAVING (MAX(cto.id_) IS NULL OR MIN(cto.status_) > 1)
|
|
|
<if test="hasMember != null">
|
|
|
- <if test="hasMember == 0">
|
|
|
- AND (MAX(cto.id_) IS NULL OR DATEDIFF(MAX(cto.end_time_),NOW()) < 0)
|
|
|
- </if>
|
|
|
- <if test="hasMember == 1">
|
|
|
- AND DATEDIFF(MAX(cto.end_time_),NOW()) <= #{memberEndAutoQuitMusic} AND DATEDIFF(MAX(cto.end_time_),NOW()) >= 0
|
|
|
+ <if test="hasMember == 2">
|
|
|
+ LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_
|
|
|
</if>
|
|
|
</if>
|
|
|
- <if test="visitStartTime != null">
|
|
|
- AND MAX(sv.visit_time_) BETWEEN #{visitStartTime} AND #{visitEndTime}
|
|
|
- </if>) c
|
|
|
+ WHERE sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2 AND mg.status_ = 'PROGRESS'
|
|
|
+ <include refid="queryMusicMemberListSql"/>
|
|
|
</select>
|
|
|
<resultMap id="MusicMemberDto" type="com.ym.mec.biz.dal.entity.MusicMemberDto">
|
|
|
<result property="organName" column="organ_name_"/>
|
|
@@ -903,28 +896,25 @@
|
|
|
<result property="visitTime" column="visit_time_"/>
|
|
|
<result property="phone" column="phone_"/>
|
|
|
<result property="courseViewType" column="course_view_type_"/>
|
|
|
+ <result property="membershipEndTime" column="membership_end_time_"/>
|
|
|
</resultMap>
|
|
|
<select id="queryMusicMemberList" resultMap="MusicMemberDto">
|
|
|
SELECT sr.user_id_,su.username_,su.phone_,o.name_ organ_name_,mg.name_ music_group_name_,mg.course_view_type_,
|
|
|
- DATEDIFF(MAX(cto.end_time_),NOW()) member_day_,sr.music_group_id_,MAX(sv.visit_time_) visit_time_ FROM student_registration sr
|
|
|
+ DATEDIFF(sr.membership_end_time_,NOW()) member_day_,sr.music_group_id_,MAX(sv.visit_time_) visit_time_,sr.membership_end_time_
|
|
|
+ FROM student_registration sr
|
|
|
LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
|
|
|
- LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_ AND cto.status_ IN (1,2)
|
|
|
LEFT JOIN sys_user su ON su.id_ = sr.user_id_
|
|
|
LEFT JOIN organization o ON o.id_ = mg.organ_id_
|
|
|
LEFT JOIN student_visit sv ON sv.student_id_ = sr.user_id_ AND sv.purpose_ = '会员续费'
|
|
|
- <include refid="queryMusicMemberListSql"/>
|
|
|
- GROUP BY sr.user_id_ HAVING (MAX(cto.id_) IS NULL OR MIN(cto.status_) > 1)
|
|
|
<if test="hasMember != null">
|
|
|
- <if test="hasMember == 0">
|
|
|
- AND (MAX(cto.id_) IS NULL OR DATEDIFF(MAX(cto.end_time_),NOW()) < 0)
|
|
|
+ <if test="hasMember == 2">
|
|
|
+ LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_
|
|
|
</if>
|
|
|
- <if test="hasMember == 1">
|
|
|
- AND DATEDIFF(MAX(cto.end_time_),NOW()) <= #{memberEndAutoQuitMusic} AND DATEDIFF(MAX(cto.end_time_),NOW()) >= 0
|
|
|
- </if>
|
|
|
- </if>
|
|
|
- <if test="visitStartTime != null">
|
|
|
- AND MAX(sv.visit_time_) BETWEEN #{visitStartTime} AND #{visitEndTime}
|
|
|
</if>
|
|
|
+ WHERE sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2 AND mg.status_ = 'PROGRESS'
|
|
|
+ <include refid="queryMusicMemberListSql"/>
|
|
|
+ GROUP BY sr.user_id_
|
|
|
+ ORDER BY member_day_
|
|
|
<include refid="global.limit"/>
|
|
|
</select>
|
|
|
<sql id="queryMusicMemberListSql">
|
|
@@ -932,7 +922,8 @@
|
|
|
sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2
|
|
|
AND mg.status_ = 'PROGRESS'
|
|
|
<if test="search != null and search != ''">
|
|
|
- AND (mg.name_ LIKE CONCAT('%',#{search},'%') OR mg.id_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_ = #{search})
|
|
|
+ AND (mg.name_ LIKE CONCAT('%',#{search},'%') OR mg.id_ LIKE CONCAT('%',#{search},'%')
|
|
|
+ OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_ = #{search})
|
|
|
</if>
|
|
|
<if test="organId != null and organId != ''">
|
|
|
AND FIND_IN_SET(mg.organ_id_,#{organId})
|
|
@@ -940,6 +931,20 @@
|
|
|
<if test="educationUserId != null">
|
|
|
AND mg.educational_teacher_id_ = #{educationUserId}
|
|
|
</if>
|
|
|
+ <if test="hasMember != null">
|
|
|
+ <if test="hasMember == 0">
|
|
|
+ AND (sr.membership_end_time_ IS NULL OR sr.membership_end_time_ < NOW())
|
|
|
+ </if>
|
|
|
+ <if test="hasMember == 1">
|
|
|
+ AND DATEDIFF(sr.membership_end_time_,NOW()) <= #{memberEndAutoQuitMusic} AND sr.membership_end_time_ > NOW()
|
|
|
+ </if>
|
|
|
+ <if test="hasMember == 2">
|
|
|
+ AND cto.status_ = 1 AND cto.music_group_id_ IS NOT NULL
|
|
|
+ </if>
|
|
|
+ </if>
|
|
|
+ <if test="visitStartTime != null">
|
|
|
+ AND MAX(sv.visit_time_) BETWEEN #{visitStartTime} AND #{visitEndTime}
|
|
|
+ </if>
|
|
|
</where>
|
|
|
</sql>
|
|
|
|