Browse Source

feat:教务端学员云教练数据统计

Joburgess 3 years ago
parent
commit
ce00909123

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherDao.java

@@ -18,4 +18,6 @@ public interface CloudTeacherDao extends BaseDAO<Long, CloudTeacher> {
      */
     CloudTeacher getByStudentId(@Param("studentId") Integer studentId);
 
-}
+    int getOrganVipStudentNum(@Param("organId") Integer organId);
+
+}

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

@@ -249,7 +249,7 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @param organId:
      * @return com.ym.mec.biz.dal.dto.EduOrganStudentDataDto
      */
-    EduOrganStudentDataDto getOrganStudentVipData(@Param("organId") Integer organId);
+    int getOrganStudentNum(@Param("organId") Integer organId);
 
     /**
      * @describe 统计云教练试用人数
@@ -300,4 +300,13 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @return int
      */
     int cleanStudentCloudStudySequenceDays();
+
+    /**
+     * @describe 获取分部下试用会员数
+     * @author Joburgess
+     * @date 2021/8/17 0017
+     * @param organId:
+     * @return int
+     */
+    int getOrganEVipStudentNum(@Param("organId") Integer organId);
 }

+ 11 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -19,7 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import sun.nio.cs.ext.Big5;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,6 +47,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Autowired
     private SysMusicCompareRecordDao sysMusicCompareRecordDao;
 
+    @Autowired
+    private CloudTeacherDao cloudTeacherDao;
+
     @Override
     public BaseDAO<Integer, Student> getDAO() {
         return studentDao;
@@ -399,11 +405,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
 
         StatDto result = new StatDto();
         if(queryInfo.getPage()==1){
-            EduOrganStudentDataDto organStudentVipData = studentDao.getOrganStudentVipData(queryInfo.getOrganId());
+            EduOrganStudentDataDto organStudentVipData = new EduOrganStudentDataDto();
+            organStudentVipData.setTotalStudentNum(studentDao.getOrganStudentNum(queryInfo.getOrganId()));
+            organStudentVipData.setVipStudentNum(cloudTeacherDao.getOrganVipStudentNum(queryInfo.getOrganId()));
+            organStudentVipData.seteVipStudentNum(studentDao.getOrganEVipStudentNum(queryInfo.getOrganId()));
             organStudentVipData.setCloudStudyUseStudentNum(studentDao.getCloudStudyStudentNum(queryInfo.getOrganId()));
             organStudentVipData.setCloudStudyLivelyStudentNum(studentDao.getCloudStudyLivelyStudentNum(queryInfo.getOrganId()));
             if(organStudentVipData.getVipStudentNum()>0&&organStudentVipData.getTotalStudentNum()>0){
-                organStudentVipData.setVipStudentDuty(organStudentVipData.getVipStudentNum()/organStudentVipData.getTotalStudentNum());
+                organStudentVipData.setVipStudentDuty(new BigDecimal(organStudentVipData.getVipStudentNum()).divide(new BigDecimal(organStudentVipData.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
             }
             result.setHead(organStudentVipData);
         }

+ 8 - 1
mec-biz/src/main/resources/config/mybatis/CloudTeacherMapper.xml

@@ -79,4 +79,11 @@
         FROM cloud_teacher
         WHERE student_id_ = #{studentId}
     </select>
-</mapper>
+
+    <select id="getOrganVipStudentNum" resultType="int">
+        SELECT COUNT(DISTINCT cto.student_id_)
+        FROM cloud_teacher_order cto
+            LEFT JOIN sys_user su ON cto.student_id_=su.id_
+        WHERE su.del_flag_=0 AND cto.status_ IN (1,2) AND su.organ_id_=#{organId}
+    </select>
+</mapper>

+ 10 - 2
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -762,12 +762,12 @@
         AND DATEDIFF(MAX(cto.end_time_),NOW()) = #{pushMemberRenew}
     </select>
 
-    <select id="getOrganStudentVipData" resultType="com.ym.mec.biz.dal.dto.EduOrganStudentDataDto">
+    <select id="getOrganStudentNum" resultType="int">
         SELECT COUNT(stu.user_id_) totalStudentNum,
                SUM(CASE WHEN stu.member_rank_setting_id_ IS NULL THEN 0 ELSE 1 END) vipStudentNum,
                SUM(CASE WHEN stu.experience_member_rank_setting_id_ IS NULL THEN 0 ELSE 1 END) eVipStudentNum
         FROM student stu
-                 LEFT JOIN sys_user su ON stu.user_id_=su.id_
+            LEFT JOIN sys_user su ON stu.user_id_=su.id_
         WHERE su.del_flag_=0
         <if test="organId!=null">
             AND su.organ_id_=#{organId}
@@ -845,6 +845,14 @@
         <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 (cto.id_ IS NULL OR cto.status_ NOT IN (1, 2))
+    </select>
+
     <update id="updateGrade"><![CDATA[
         UPDATE student SET current_grade_num_=current_grade_num_+1
         WHERE current_grade_num_>=1