Browse Source

会员试用

zouxuan 3 years ago
parent
commit
1a8ce05704

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicMemberDto.java

@@ -23,8 +23,28 @@ public class MusicMemberDto {
 
 
 	private Date visitTime;
 	private Date visitTime;
 
 
+	private Date membershipEndTime;
+
 	private Integer courseViewType;
 	private Integer courseViewType;
 
 
+	private Boolean hasNoStartCloudTeacher;
+
+	public Boolean getHasNoStartCloudTeacher() {
+		return hasNoStartCloudTeacher;
+	}
+
+	public void setHasNoStartCloudTeacher(Boolean hasNoStartCloudTeacher) {
+		this.hasNoStartCloudTeacher = hasNoStartCloudTeacher;
+	}
+
+	public Date getMembershipEndTime() {
+		return membershipEndTime;
+	}
+
+	public void setMembershipEndTime(Date membershipEndTime) {
+		this.membershipEndTime = membershipEndTime;
+	}
+
 	public Integer getCourseViewType() {
 	public Integer getCourseViewType() {
 		return courseViewType;
 		return courseViewType;
 	}
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -49,6 +49,17 @@ public class StudentManageQueryInfo extends QueryInfo {
     //是否有会员
     //是否有会员
     private Integer hasMember;
     private Integer hasMember;
 
 
+    //是否有指导老师
+    private Integer hasTeacher;
+
+    public Integer getHasTeacher() {
+        return hasTeacher;
+    }
+
+    public void setHasTeacher(Integer hasTeacher) {
+        this.hasTeacher = hasTeacher;
+    }
+
     public Integer getHasMember() {
     public Integer getHasMember() {
         return hasMember;
         return hasMember;
     }
     }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -3677,7 +3677,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             List<CloudTeacherOrder> studentCloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrders(collect,musicGroupId);
             List<CloudTeacherOrder> studentCloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrders(collect,musicGroupId);
             Map<Integer, List<CloudTeacherOrder>> studentCloudTeacherMap = studentCloudTeacherOrders.stream().collect(Collectors.groupingBy(CloudTeacherOrder::getStudentId));
             Map<Integer, List<CloudTeacherOrder>> studentCloudTeacherMap = studentCloudTeacherOrders.stream().collect(Collectors.groupingBy(CloudTeacherOrder::getStudentId));
             Date date = new Date();
             Date date = new Date();
+            Map<Long,String> cloudMap = MapUtil.convertMybatisMap(cloudTeacherOrderService.queryNoStartByUserIds(new HashSet<>(collect)));
             dataList.forEach(e->{
             dataList.forEach(e->{
+                //如果会员已过期、是否有未生效的会员
+                if(e.getMembershipEndTime() == null || date.after(e.getMembershipEndTime())){
+                    String s = cloudMap.get(e.getUserId().longValue());
+                    if(StringUtils.isNotEmpty(s)){
+                        e.setHasNoStartCloudTeacher(true);
+                    }
+                }
                 if (studentCloudTeacherMap.containsKey(e.getUserId())) {
                 if (studentCloudTeacherMap.containsKey(e.getUserId())) {
                     List<CloudTeacherOrder> cloudTeacherOrders = studentCloudTeacherMap.get(e.getUserId());
                     List<CloudTeacherOrder> cloudTeacherOrders = studentCloudTeacherMap.get(e.getUserId());
                     if(cloudTeacherOrders != null && cloudTeacherOrders.size() > 0){
                     if(cloudTeacherOrders != null && cloudTeacherOrders.size() > 0){

+ 31 - 26
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -872,26 +872,19 @@
         </if>
         </if>
     </select>
     </select>
     <select id="countMusicMemberList" resultType="java.lang.Integer">
     <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 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 sys_user su ON su.id_ = sr.user_id_
         LEFT JOIN organization o ON o.id_ = mg.organ_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_ = '会员续费'
         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 != null">
-            <if test="hasMember == 0">
-                AND (MAX(cto.id_) IS NULL OR DATEDIFF(MAX(cto.end_time_),NOW()) &lt; 0)
-            </if>
-            <if test="hasMember == 1">
-                AND DATEDIFF(MAX(cto.end_time_),NOW()) &lt;= #{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>
         </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>
     </select>
     <resultMap id="MusicMemberDto" type="com.ym.mec.biz.dal.entity.MusicMemberDto">
     <resultMap id="MusicMemberDto" type="com.ym.mec.biz.dal.entity.MusicMemberDto">
         <result property="organName" column="organ_name_"/>
         <result property="organName" column="organ_name_"/>
@@ -903,28 +896,25 @@
         <result property="visitTime" column="visit_time_"/>
         <result property="visitTime" column="visit_time_"/>
         <result property="phone" column="phone_"/>
         <result property="phone" column="phone_"/>
         <result property="courseViewType" column="course_view_type_"/>
         <result property="courseViewType" column="course_view_type_"/>
+        <result property="membershipEndTime" column="membership_end_time_"/>
     </resultMap>
     </resultMap>
     <select id="queryMusicMemberList" resultMap="MusicMemberDto">
     <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_,
         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 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 sys_user su ON su.id_ = sr.user_id_
         LEFT JOIN organization o ON o.id_ = mg.organ_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_ = '会员续费'
         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 != null">
-            <if test="hasMember == 0">
-                AND (MAX(cto.id_) IS NULL OR DATEDIFF(MAX(cto.end_time_),NOW()) &lt; 0)
+            <if test="hasMember == 2">
+                LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_
             </if>
             </if>
-            <if test="hasMember == 1">
-                AND DATEDIFF(MAX(cto.end_time_),NOW()) &lt;= #{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>
         </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"/>
         <include refid="global.limit"/>
     </select>
     </select>
     <sql id="queryMusicMemberListSql">
     <sql id="queryMusicMemberListSql">
@@ -932,7 +922,8 @@
             sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2
             sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2
             AND mg.status_ = 'PROGRESS'
             AND mg.status_ = 'PROGRESS'
             <if test="search != null and search != ''">
             <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>
             <if test="organId != null and organId != ''">
             <if test="organId != null and organId != ''">
                 AND FIND_IN_SET(mg.organ_id_,#{organId})
                 AND FIND_IN_SET(mg.organ_id_,#{organId})
@@ -940,6 +931,20 @@
             <if test="educationUserId != null">
             <if test="educationUserId != null">
                 AND mg.educational_teacher_id_ = #{educationUserId}
                 AND mg.educational_teacher_id_ = #{educationUserId}
             </if>
             </if>
+            <if test="hasMember != null">
+                <if test="hasMember == 0">
+                    AND (sr.membership_end_time_ IS NULL OR sr.membership_end_time_ &lt; NOW())
+                </if>
+                <if test="hasMember == 1">
+                    AND DATEDIFF(sr.membership_end_time_,NOW()) &lt;= #{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>
         </where>
     </sql>
     </sql>
     
     

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -217,6 +217,14 @@
                     AND s.service_tag_ = 1
                     AND s.service_tag_ = 1
                 </if>
                 </if>
             </if>
             </if>
+            <if test="hasTeacher != null">
+                <if test="hasTeacher == 0">
+                    AND s.teacher_id_ IS NULL
+                </if>
+                <if test="hasTeacher == 1">
+                    AND s.teacher_id_ IS NOT NULL
+                </if>
+            </if>
             <if test="hasMember != null">
             <if test="hasMember != null">
                 <if test="hasMember == 0">
                 <if test="hasMember == 0">
                     AND s.member_rank_setting_id_ IS NULL
                     AND s.member_rank_setting_id_ IS NULL

+ 5 - 6
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1570,22 +1570,21 @@
     <select id="queryMemberEndAutoQuitMusic" resultMap="StudentRegistration">
     <select id="queryMemberEndAutoQuitMusic" resultMap="StudentRegistration">
         SELECT sr.music_group_id_,sr.user_id_ FROM student_registration sr
         SELECT sr.music_group_id_,sr.user_id_ FROM student_registration sr
         LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
         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)
-        WHERE sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2
-        AND mg.status_ = 'PROGRESS'
+        LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_ AND cto.status_ = 1
+        WHERE sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2 AND mg.status_ = 'PROGRESS'
         <if test="educationUserId != null">
         <if test="educationUserId != null">
             AND mg.educational_teacher_id_ = #{educationUserId}
             AND mg.educational_teacher_id_ = #{educationUserId}
         </if>
         </if>
         <if test="organIds != null and organIds != ''">
         <if test="organIds != null and organIds != ''">
             AND FIND_IN_SET(mg.organ_id_,#{organIds})
             AND FIND_IN_SET(mg.organ_id_,#{organIds})
         </if>
         </if>
-        GROUP BY sr.user_id_ HAVING (MAX(cto.id_) IS NULL OR MIN(cto.status_) > 1)
         <if test="memberEndAutoQuitMusic != null">
         <if test="memberEndAutoQuitMusic != null">
-            AND DATEDIFF(MAX(cto.end_time_),NOW()) &lt;= #{memberEndAutoQuitMusic} AND DATEDIFF(MAX(cto.end_time_),NOW()) >= 0
+            AND DATEDIFF(sr.membership_end_time_,NOW()) &lt;= #{memberEndAutoQuitMusic} AND sr.membership_end_time_ > NOW()
         </if>
         </if>
         <if test="memberEndAutoQuitMusic == null">
         <if test="memberEndAutoQuitMusic == null">
-            AND (MAX(cto.id_) IS NULL OR DATEDIFF(MAX(cto.end_time_),NOW()) &lt; 0)
+            AND cto.id_ IS NULL AND sr.membership_end_time_ &lt; NOW()
         </if>
         </if>
+        GROUP BY sr.user_id_
     </select>
     </select>
     
     
     <select id="countStudentWithSubjectByMusicGroupId" resultMap="Mapper">
     <select id="countStudentWithSubjectByMusicGroupId" resultMap="Mapper">