Explorar el Código

老师端训练统计

zouxuan hace 3 años
padre
commit
805c22cfbf

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -372,4 +372,11 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @return java.util.Set<java.lang.Integer>
      */
     Set<Integer> getValidVipStudentIds();
+
+    /**
+     * 获取老师关联的有课的学员列表
+     * @param teacherId
+     * @return
+     */
+    List<Integer> getStudentByHasCourse(Integer teacherId);
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -245,6 +245,12 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //云教练试用时间最晚截止时间
     String EXPERIENCE_MEMBERSHIP_END_TIME = "experience_membership_end_time";
 
+    //云教练训练时长小于80分钟需要回访
+    String STUDENT_CLOUD_TEACHER_TOTAL_PLAY_TIME = "student_cloud_teacher_total_play_time";
+
+    //云教练训练次数小于4次需要回访
+    String STUDENT_CLOUD_TEACHER_TRAIN_NUM = "student_cloud_teacher_train_num";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -345,6 +345,12 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		MapUtil.populateMap(params, queryInfo);
 		Integer visitFlag = 0;
 		if(queryInfo.getVisitFlag() != null && queryInfo.getVisitFlag()){
+			//获取乐团在读,有vip网管课的学员列表
+			List<Integer> hasCourseUserIds = studentDao.getStudentByHasCourse(queryInfo.getTeacherId());
+			if(hasCourseUserIds == null || hasCourseUserIds.size() == 0){
+				return pageInfo;
+			}
+			params.put("hasCourseUserIds",hasCourseUserIds);
 			//获取所选时间段下一周的日期
 			Date addDays1 = DateUtil.addDays(DateUtil.toDate(queryInfo.getEndTime()), 1);
 			Date addDays3 = DateUtil.addDays(DateUtil.toDate(queryInfo.getEndTime()), 5);
@@ -361,6 +367,16 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 			}
 			params.put("having",1);
 		}
+		String totalTime = sysConfigDao.findConfigValue(SysConfigService.STUDENT_CLOUD_TEACHER_TOTAL_PLAY_TIME);
+		if(StringUtils.isEmpty(totalTime)){
+			totalTime = "80";
+		}
+		params.put("totalTime",Integer.parseInt(totalTime));
+		String trainNum = sysConfigDao.findConfigValue(SysConfigService.STUDENT_CLOUD_TEACHER_TRAIN_NUM);
+		if(StringUtils.isEmpty(trainNum)){
+			trainNum = "4";
+		}
+		params.put("trainNum",Integer.parseInt(trainNum));
 		int count = sysMusicCompareRecordDao.queryStudentTrain(params).size();
 		List<CountStudentTrainDataDto> dataList = new ArrayList<>();
 		if(count > 0){

+ 15 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1220,6 +1220,21 @@
     <select id="getValidVipStudentIds" resultType="java.lang.Integer">
         SELECT user_id_ FROM student WHERE member_rank_setting_id_ IS NOT NULl OR experience_member_rank_setting_id_ IS NOT NULL
     </select>
+    <select id="getStudentByHasCourse" resultType="java.lang.Integer">
+        SELECT s.user_id_ FROM student s WHERE s.teacher_id_ = #{teacherId} AND s.user_id_ IN (SELECT t.user_id_ FROM (
+        (SELECT sr.user_id_
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
+        WHERE mg.status_='PROGRESS'
+        AND sr.music_group_status_='NORMAL')
+        UNION ALL
+        (SELECT
+        cssp.user_id_
+        FROM course_schedule_student_payment cssp
+        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+        WHERE cssp.group_type_ IN ('VIP', 'PRACTICE')
+        AND cs.status_='NOT_START'))t)
+    </select>
 
     <update id="updateGrade"><![CDATA[
         UPDATE student SET current_grade_num_=current_grade_num_+1

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -280,9 +280,15 @@
 				#{userId}
 			</foreach>
 		</if>
+		<if test="hasCourseUserIds != null and hasCourseUserIds.size > 0">
+			AND s.user_id_ IN
+			<foreach collection="hasCourseUserIds" open="(" close=")" item="userId" separator=",">
+				#{userId}
+			</foreach>
+		</if>
 		GROUP BY s.user_id_
 		<if test="having == 1">
-			HAVING total_play_time_ &lt; 80 OR train_num_ &lt; 4
+			HAVING total_play_time_ &lt; ${totalTime} OR train_num_ &lt; ${trainNum}
 		</if>
 		ORDER BY
 		<if test="sort != null and sort != ''">