yonge 3 年 前
コミット
746c63833e

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -262,7 +262,9 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @return com.ym.mec.biz.dal.dto.EduOrganStudentDataDto
      */
     int getOrganStudentNum(@Param("organId") Integer organId);
-    int getOrgansTotalStudentNum(@Param("organIds") List<Integer> organIds);
+    
+    IndexCloudStudyListDto getOrgansCloudTeacherStudent(@Param("organIds") List<Integer> organIds);
+    
     List<Map<Integer, Integer>> getOrgansStudentNum(@Param("organIds") List<Integer> organIds);
 
     List<Map<Integer, Integer>> getOrganTeacherStudentNum(@Param("teacherIds") List<Integer> teacherIds,
@@ -301,6 +303,8 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     List<IndexCloudStudyListDto> getCloudStudyStudentOverViewList(@Param("organIds") List<Integer> organIds);
     
     List<Mapper> getOrganActiveCloudStudyStudentNum(@Param("organIds") List<Integer> organIds, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+    
+    List<Mapper> getOrganCloudTeacherStudentNum(@Param("organIds") List<Integer> organIds);
 
     /**
      * @describe 查询云教练学员列表数据

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CloudStudyStudentDataDto.java

@@ -18,6 +18,10 @@ public class CloudStudyStudentDataDto {
 
     @ApiModelProperty("付费会员数")
     private int vipStudentNum;
+    
+	private Integer effectiveVipStudentNum;
+	
+	private Integer waitActivateVipStudentNum;
 
     @ApiModelProperty("试用会员数")
     private int eVipStudentNum;
@@ -127,4 +131,20 @@ public class CloudStudyStudentDataDto {
     public void setNewCloudStudyStudentNum(int newCloudStudyStudentNum) {
         this.newCloudStudyStudentNum = newCloudStudyStudentNum;
     }
+
+	public Integer getEffectiveVipStudentNum() {
+		return effectiveVipStudentNum;
+	}
+
+	public void setEffectiveVipStudentNum(Integer effectiveVipStudentNum) {
+		this.effectiveVipStudentNum = effectiveVipStudentNum;
+	}
+
+	public Integer getWaitActivateVipStudentNum() {
+		return waitActivateVipStudentNum;
+	}
+
+	public void setWaitActivateVipStudentNum(Integer waitActivateVipStudentNum) {
+		this.waitActivateVipStudentNum = waitActivateVipStudentNum;
+	}
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/IndexCloudStudyListDto.java

@@ -10,6 +10,10 @@ public class IndexCloudStudyListDto {
 	
 	private Integer vipStudentNum;
 	
+	private Integer effectiveVipStudentNum;
+	
+	private Integer waitActivateVipStudentNum;
+	
 	private Integer activeStudentNum;
 
 	public Integer getOrganId() {
@@ -44,6 +48,22 @@ public class IndexCloudStudyListDto {
 		this.vipStudentNum = vipStudentNum;
 	}
 
+	public Integer getEffectiveVipStudentNum() {
+		return effectiveVipStudentNum;
+	}
+
+	public void setEffectiveVipStudentNum(Integer effectiveVipStudentNum) {
+		this.effectiveVipStudentNum = effectiveVipStudentNum;
+	}
+
+	public Integer getWaitActivateVipStudentNum() {
+		return waitActivateVipStudentNum;
+	}
+
+	public void setWaitActivateVipStudentNum(Integer waitActivateVipStudentNum) {
+		this.waitActivateVipStudentNum = waitActivateVipStudentNum;
+	}
+
 	public Integer getActiveStudentNum() {
 		return activeStudentNum;
 	}

+ 14 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1035,7 +1035,11 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     public CloudStudyStudentDataDto getCloudStudyStudentOverView(List<Integer> organIds) {
         CloudStudyStudentDataDto result = new CloudStudyStudentDataDto();
-        result.setTotalStudentNum(studentDao.getOrgansTotalStudentNum(organIds));
+        
+        IndexCloudStudyListDto dto = studentDao.getOrgansCloudTeacherStudent(organIds);
+        result.setTotalStudentNum(dto.getTotalStudentNum());
+        result.setEffectiveVipStudentNum(dto.getEffectiveVipStudentNum());
+        result.setWaitActivateVipStudentNum(dto.getWaitActivateVipStudentNum());
         result.setVipStudentNum(cloudTeacherDao.getOrgansTotalVipStudentNum(organIds));
 //        result.seteVipStudentNum(studentDao.getOrgansTotalEVipStudentNum(organIds));
         result.setCloudStudyUseStudentNum(studentDao.getOrgansTotalCloudStudyStudentNum(organIds));
@@ -1043,7 +1047,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         
         Calendar cal = Calendar.getInstance();    
         cal.setTime(new Date());    
-        cal.add(Calendar.WEEK_OF_YEAR, -1);// 一周    
+        //cal.add(Calendar.WEEK_OF_YEAR, -1);// 一周    
         cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
         Date endTime = cal.getTime();
         
@@ -1080,11 +1084,18 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         
         Map<Integer, Integer> organActiveNum = new HashMap<Integer, Integer>();
         for(Mapper mapper : mapperList){
-        	organActiveNum.put((Integer)mapper.getKey(), (Integer)mapper.getValue());
+        	organActiveNum.put(Integer.parseInt(mapper.getKey().toString()), Integer.parseInt(mapper.getValue().toString()));
+        }
+        
+        List<Mapper> organCloudTeacherStudentNum = studentDao.getOrganCloudTeacherStudentNum(organIds);
+        Map<Integer, Integer> organCloudTeacherStudentNumMap = new HashMap<Integer, Integer>();
+        for(Mapper mapper : organCloudTeacherStudentNum){
+        	organCloudTeacherStudentNumMap.put(Integer.parseInt(mapper.getKey().toString()), Integer.parseInt(mapper.getValue().toString()));
         }
         
         for(IndexCloudStudyListDto ics : list){
         	ics.setActiveStudentNum(organActiveNum.get(ics.getOrganId()));
+        	ics.setVipStudentNum(organCloudTeacherStudentNumMap.get(ics.getOrganId()));
         }
         
 		return list;

+ 31 - 9
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -812,14 +812,36 @@
         WHERE t.user_id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29')
     </select>
 
-    <select id="getOrgansTotalStudentNum" resultType="int">
-        SELECT count(s.`user_id_`)  FROM student s 
+    <select id="getOrgansCloudTeacherStudent" resultType="com.ym.mec.biz.dal.dto.IndexCloudStudyListDto">
+        SELECT count(s.`user_id_`) totalStudentNum,
+        sum(case when cto.student_id_ IS NULL then 0 else 1 end) waitActivateVipStudentNum,
+        sum(case when s.`membership_end_time_` > now() then 1 else 0 end) effectiveVipStudentNum 
+        FROM student s LEFT JOIN (
+		SELECT distinct cto.`student_id_`  FROM `cloud_teacher_order` cto WHERE cto.`status_` = 1
+		) cto on s.user_id_ = cto.student_id_
 		LEFT JOIN `sys_user` u on s.`user_id_` = u.`id_`
 		WHERE u.`del_flag_` = 0 
-            AND u.organ_id_ IN
+        <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="getOrganCloudTeacherStudentNum" resultType="com.ym.mec.biz.dal.dto.Mapper">
+        SELECT u.organ_id_ `key`,sum(case when a.user_id_ IS NULL then 0 else 1 end) `value`  FROM student s 
+		LEFT JOIN (
+		SELECT s.`user_id_`  FROM `student` s WHERE s.`membership_end_time_` > now()
+		union
+		SELECT cto.`student_id_`  FROM `cloud_teacher_order` cto WHERE cto.`status_` = 1
+		) a on a.user_id_ = s.`user_id_` 
+		LEFT JOIN `sys_user` u on s.`user_id_` = u.`id_`
+		WHERE u.`del_flag_` = 0 AND u.`organ_id_` IN
+        <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+            #{organId}
+        </foreach>
+		GROUP BY u.`organ_id_` 
     </select>
 
     <select id="getOrgansStudentNum" resultType="map">
@@ -996,12 +1018,12 @@
     </select>
 
     <select id="getCloudStudyStudentOverViewList" resultType="com.ym.mec.biz.dal.dto.IndexCloudStudyListDto">
-        SELECT o.`name_` organName,o.`id_` organId,count(s.`user_id_`) totalStudentNum,sum(case when a.user_id_ IS NULL then 0 else 1 end) vipStudentNum  FROM student s 
-		LEFT JOIN (
-		SELECT s.`user_id_`  FROM `student` s WHERE s.`membership_end_time_` > now()
-		union
-		SELECT cto.`student_id_`  FROM `cloud_teacher_order` cto WHERE cto.`status_` = 1
-		) a on a.user_id_ = s.`user_id_` 
+        SELECT o.`name_` organName,o.`id_` organId,count(s.`user_id_`) totalStudentNum,
+        sum(case when cto.student_id_ IS NULL then 0 else 1 end) waitActivateVipStudentNum,
+        sum(case when s.`membership_end_time_` > now() then 1 else 0 end) effectiveVipStudentNum 
+        FROM student s LEFT JOIN (
+		SELECT distinct cto.`student_id_`  FROM `cloud_teacher_order` cto WHERE cto.`status_` = 1
+		) cto on s.user_id_ = cto.student_id_
 		LEFT JOIN `sys_user` u on s.`user_id_` = u.`id_`
 		LEFT JOIN `organization` o on o.`id_` = u.`organ_id_` 
 		WHERE u.`del_flag_` = 0 AND u.`organ_id_` IN