Joburgess 3 лет назад
Родитель
Сommit
897ac61264

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

@@ -356,4 +356,13 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     List<Map<Integer, String>> getStudentSubjectMapList(@Param("studentIds") List<Integer> studentIds);
 
     List<IndexBaseMonthData> groupOrganId(@Param("organIds") List<Integer> organIds, @Param("userIds") List<Integer> userIds);
+
+    /**
+     * @describe 获取生效中的学员编号
+     * @author Joburgess
+     * @date 2021/8/27 0027
+     * @param :
+     * @return java.util.Set<java.lang.Integer>
+     */
+    Set<Integer> getValidVipStudentIds();
 }

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -186,7 +186,13 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     CHILDREN_DAY_NOTICE_MSG("CHILDREN_DAY_NOTICE_MSG", "技能评测考级报名短信"),
     NO_BUY_CLOUD_TEACHER_MSG("NO_BUY_CLOUD_TEACHER_MSG", "未购买买云教练短信"),
     OA_NOTICE_PUSH("OA_NOTICE_PUSH", "待审批提醒"),
-    OA_CC_NOTICE_PUSH("OA_CC_NOTICE_PUSH", "审批抄送提醒");
+    OA_CC_NOTICE_PUSH("OA_CC_NOTICE_PUSH", "审批抄送提醒"),
+
+    //云教练
+    TRAIN_NO_RANK_STUDENT_PUSH("TRAIN_NO_RANK_STUDENT_PUSH", "云教练训练提醒"),
+    TRAIN_RANK_STUDENT_PUSH("TRAIN_RANK_STUDENT_PUSH", "云教练训练提醒"),
+    NO_TRAIN_STUDENT_PUSH("NO_TRAIN_STUDENT_PUSH", "云教练训练提醒"),
+    ;
 
     MessageTypeEnum(String code, String msg) {
         this.code = code;

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java

@@ -41,6 +41,15 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
     StatDto rankingList(SysMusicCompareRecordQueryInfo queryInfo);
 
     /**
+     * @describe 本周学员训练提醒
+     * @author Joburgess
+     * @date 2021/8/27 0027
+     * @param :
+     * @return void
+     */
+    void curWeekStudentTrainRemind();
+
+    /**
      * @describe 学员训练数据统计
      * @author Joburgess
      * @date 2021/8/12 0012

+ 67 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -3,21 +3,20 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.SysMusicCompareRecordDao;
-import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
-import com.ym.mec.biz.dal.enums.FeatureType;
-import com.ym.mec.biz.dal.enums.IndexDataType;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.models.auth.In;
@@ -43,6 +42,11 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 	private TeacherDao teacherDao;
 	@Autowired
 	private StudentDao studentDao;
+	@Autowired
+	private SysMessageService sysMessageService;
+
+	@Autowired
+	private SysConfigDao sysConfigDao;
 
 	@Override
 	public BaseDAO<Long, SysMusicCompareRecord> getDAO() {
@@ -169,6 +173,63 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 	}
 
 	@Override
+	public void curWeekStudentTrainRemind() {
+		Set<Integer> validVipStudentIds = studentDao.getValidVipStudentIds();
+		LocalDate monday = LocalDate.now().with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+		LocalDate sunday = LocalDate.now().with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
+		List<MusicCompareRankingDto> userTrainStat = sysMusicCompareRecordDao.getUserTrainStat(monday.toString(), sunday.toString(), null);
+
+		Set<Integer> trainStudentIds = new HashSet<>();
+		Set<Integer> ranStudentIds = new HashSet<>();
+
+		if(!CollectionUtils.isEmpty(userTrainStat)){
+			trainStudentIds = userTrainStat.stream().map(MusicCompareRankingDto::getUserId).collect(Collectors.toSet());
+			//时长榜
+			Set<Integer> collect1 = userTrainStat.stream().sorted(Comparator.comparing(MusicCompareRankingDto::getTrainTime, Comparator.reverseOrder())).limit(10).map(MusicCompareRankingDto::getUserId).collect(Collectors.toSet());
+			ranStudentIds.addAll(collect1);
+			Set<Integer> collect2 = userTrainStat.stream().sorted(Comparator.comparing(MusicCompareRankingDto::getTrainDays, Comparator.reverseOrder())).limit(10).map(MusicCompareRankingDto::getUserId).collect(Collectors.toSet());
+			ranStudentIds.addAll(collect2);
+		}
+		List<MusicCompareRankingDto> userTrainStat3 = sysMusicCompareRecordDao.getUserTrainStat(monday.toString(), sunday.toString(), HeardLevelEnum.BEGINNER);
+		if(!CollectionUtils.isEmpty(userTrainStat3)){
+			Set<Integer> collect3 = userTrainStat3.stream().sorted(Comparator.comparing(MusicCompareRankingDto::getScore, Comparator.reverseOrder())).limit(10).map(MusicCompareRankingDto::getUserId).collect(Collectors.toSet());
+			ranStudentIds.addAll(collect3);
+		}
+		List<MusicCompareRankingDto> userTrainStat4 = sysMusicCompareRecordDao.getUserTrainStat(monday.toString(), sunday.toString(), HeardLevelEnum.ADVANCED);
+		if(!CollectionUtils.isEmpty(userTrainStat4)){
+			Set<Integer> collect4 = userTrainStat4.stream().sorted(Comparator.comparing(MusicCompareRankingDto::getScore, Comparator.reverseOrder())).limit(10).map(MusicCompareRankingDto::getUserId).collect(Collectors.toSet());
+			ranStudentIds.addAll(collect4);
+		}
+		List<MusicCompareRankingDto> userTrainStat5 = sysMusicCompareRecordDao.getUserTrainStat(monday.toString(), sunday.toString(), HeardLevelEnum.PERFORMER);
+		if(!CollectionUtils.isEmpty(userTrainStat5)){
+			Set<Integer> collect5 = userTrainStat5.stream().sorted(Comparator.comparing(MusicCompareRankingDto::getScore, Comparator.reverseOrder())).limit(10).map(MusicCompareRankingDto::getUserId).collect(Collectors.toSet());
+			ranStudentIds.addAll(collect5);
+		}
+
+		Map<Integer, String> userMap1 = new HashMap<>();
+		Map<Integer, String> userMap2 = new HashMap<>();
+		Map<Integer, String> userMap3 = new HashMap<>();
+		for (Integer studentId : validVipStudentIds) {
+			if (trainStudentIds.contains(studentId) && !ranStudentIds.contains(studentId)){
+				userMap1.put(studentId, studentId.toString());
+			}
+			if(ranStudentIds.contains(studentId)){
+				userMap2.put(studentId, studentId.toString());
+			}
+			if(!trainStudentIds.contains(studentId)){
+				userMap3.put(studentId, studentId.toString());
+			}
+		}
+		String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_EXTRA_REPLY,userMap1,
+				null, 0, "5?"+baseApiUrl+"/#/cloudRanking", "STUDENT");
+		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TRAIN_RANK_STUDENT_PUSH,userMap2,
+				null, 0, "5?"+baseApiUrl+"/#/cloudRanking", "STUDENT");
+		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.NO_TRAIN_STUDENT_PUSH,userMap3,
+				null, 0, "5?"+baseApiUrl+"/#/cloudRanking", "STUDENT");
+	}
+
+	@Override
 	public Map<String, Object> studentTrainData(SysMusicCompareRecordQueryInfo queryInfo) {
 		StudentTrainOverviewDto userTrainOverView = new StudentTrainOverviewDto();
 

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

@@ -1209,6 +1209,10 @@
         GROUP BY su.organ_id_
     </select>
 
+    <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>
+
     <update id="updateGrade"><![CDATA[
         UPDATE student SET current_grade_num_=current_grade_num_+1
         WHERE current_grade_num_>=1

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -219,4 +219,8 @@ public interface TaskRemoteService {
 	/** 清理学员云教练连续使用天数 */
 	@GetMapping("task/cleanStudentCloudStudySequenceDays")
 	void cleanStudentCloudStudySequenceDays();
+
+	/** 本周学员训练提醒 */
+	@GetMapping("task/curWeekStudentTrainRemind")
+	void curWeekStudentTrainRemind();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -272,4 +272,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void cleanStudentCloudStudySequenceDays() {
 		logger.error("清理学员云教练连续使用天数失败");
 	}
+
+	@Override
+	public void curWeekStudentTrainRemind() {
+		logger.error("本周学员训练提醒失败");
+	}
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/StudentWeekTrainRemindTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class StudentWeekTrainRemindTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.curWeekStudentTrainRemind();
+	}
+}

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -131,6 +131,9 @@ public class TaskController extends BaseController {
 	@Autowired
 	private MusicGroupSchoolTermCourseDetailService musicGroupSchoolTermCourseDetailService;
 
+	@Autowired
+	private SysMusicCompareRecordService sysMusicCompareRecordService;
+
 	@GetMapping(value = "/syncImHistoryMessageTask")
 	// 同步即时通讯聊天记录
 	public void syncImHistoryMessageTask(String date) throws Exception {
@@ -491,4 +494,10 @@ public class TaskController extends BaseController {
 	public void cleanStudentCloudStudySequenceDays(){
 		studentService.cleanStudentCloudStudySequenceDays();
 	}
+
+	@ApiOperation("本周学员训练提醒")
+	@GetMapping(value = "/curWeekStudentTrainRemind")
+	public void curWeekStudentTrainRemind(){
+		sysMusicCompareRecordService.curWeekStudentTrainRemind();
+	}
 }