You've already forked FrameTour-BE
缓存统计信息
This commit is contained in:
71
src/main/java/com/ycwl/basic/task/ScenicStatsTask.java
Normal file
71
src/main/java/com/ycwl/basic/task/ScenicStatsTask.java
Normal file
@ -0,0 +1,71 @@
|
||||
package com.ycwl.basic.task;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ycwl.basic.mapper.ScenicDeviceStatsMapper;
|
||||
import com.ycwl.basic.mapper.ScenicMapper;
|
||||
import com.ycwl.basic.mapper.StatisticsMapper;
|
||||
import com.ycwl.basic.model.mobile.statistic.req.CommonQueryReq;
|
||||
import com.ycwl.basic.model.mobile.statistic.resp.AppStatisticsFunnelVO;
|
||||
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
||||
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
|
||||
import com.ycwl.basic.model.pc.scenicDeviceStats.entity.ScenicDeviceStatsEntity;
|
||||
import com.ycwl.basic.service.mobile.AppStatisticsService;
|
||||
import com.ycwl.basic.utils.ApiResponse;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@EnableScheduling
|
||||
public class ScenicStatsTask {
|
||||
@Autowired
|
||||
private ScenicDeviceStatsMapper mapper;
|
||||
@Autowired
|
||||
private StatisticsMapper statisticsMapper;
|
||||
@Autowired
|
||||
private AppStatisticsService statisticsService;
|
||||
@Autowired
|
||||
private ScenicMapper scenicMapper;
|
||||
@Scheduled(cron = "0 10 0 * * *")
|
||||
public void countDeviceStats() {
|
||||
Date yesterdayStart = DateUtil.beginOfDay(DateUtil.yesterday());
|
||||
Date yesterdayEnd = DateUtil.endOfDay(yesterdayStart);
|
||||
Date twoDaysBeforeStart = DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.yesterday(), -1));
|
||||
Date twoDaysBeforeEnd = DateUtil.endOfDay(twoDaysBeforeStart);
|
||||
// 前天的数据
|
||||
List<ScenicDeviceStatsEntity> list = mapper.countDeviceStats(twoDaysBeforeStart, twoDaysBeforeEnd);
|
||||
if (!list.isEmpty()) {
|
||||
list.forEach(stats -> {
|
||||
stats.setDate(twoDaysBeforeStart);
|
||||
mapper.insert(stats);
|
||||
});
|
||||
}
|
||||
list = mapper.countDeviceStats(yesterdayStart, yesterdayEnd);
|
||||
if (!list.isEmpty()) {
|
||||
list.forEach(stats -> {
|
||||
stats.setDate(yesterdayStart);
|
||||
mapper.insert(stats);
|
||||
});
|
||||
}
|
||||
}
|
||||
@Scheduled(cron = "0 20 0 * * *")
|
||||
public void countScenicStats() {
|
||||
Date yesterdayStart = DateUtil.beginOfDay(DateUtil.yesterday());
|
||||
Date yesterdayEnd = DateUtil.endOfDay(yesterdayStart);
|
||||
List<ScenicRespVO> list = scenicMapper.list(new ScenicReqQuery());
|
||||
list.forEach((scenic) -> {
|
||||
CommonQueryReq query = new CommonQueryReq();
|
||||
query.setScenicId(scenic.getId());
|
||||
query.setStartTime(yesterdayStart);
|
||||
query.setEndTime(yesterdayEnd);
|
||||
query.setRealtime(true);
|
||||
ApiResponse<AppStatisticsFunnelVO> resp = statisticsService.userConversionFunnel(query);
|
||||
AppStatisticsFunnelVO data = resp.getData();
|
||||
statisticsMapper.insertStat(scenic.getId(), yesterdayStart, data);
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user