|
@@ -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();
|
|
|
|