|
@@ -34,7 +34,7 @@ public class CountServiceImpl implements CountService {
|
|
|
@Resource
|
|
@Resource
|
|
|
private RedisUtil redisUtil;
|
|
private RedisUtil redisUtil;
|
|
|
@Value("${ranking.expire}")
|
|
@Value("${ranking.expire}")
|
|
|
- private int rankingExpire;
|
|
|
|
|
|
|
+ private long rankingExpire;
|
|
|
@Value("${ranking.limit}")
|
|
@Value("${ranking.limit}")
|
|
|
private int rankingLimit;
|
|
private int rankingLimit;
|
|
|
private static final String RANKING_KEY = "yt_ranking";
|
|
private static final String RANKING_KEY = "yt_ranking";
|
|
@@ -64,18 +64,29 @@ public class CountServiceImpl implements CountService {
|
|
|
//判断redis中是否存在排行榜信息 不存在则查询数据进行更新,存在则直接取出
|
|
//判断redis中是否存在排行榜信息 不存在则查询数据进行更新,存在则直接取出
|
|
|
if(Boolean.TRUE.equals(redisUtil.hasKey(RANKING_KEY+sortBy))){
|
|
if(Boolean.TRUE.equals(redisUtil.hasKey(RANKING_KEY+sortBy))){
|
|
|
String ranking = redisUtil.getStr(RANKING_KEY+sortBy);
|
|
String ranking = redisUtil.getStr(RANKING_KEY+sortBy);
|
|
|
|
|
+ long expire = redisUtil.getExpire(RANKING_KEY + sortBy);
|
|
|
|
|
+ if(Math.subtractExact(rankingExpire,expire)<2){
|
|
|
|
|
+ getRankingAnCache(sortBy);
|
|
|
|
|
+ }
|
|
|
return Result.resultObjOk(JSON.parseObject(ranking, DashboardRankingListVO.class));
|
|
return Result.resultObjOk(JSON.parseObject(ranking, DashboardRankingListVO.class));
|
|
|
}
|
|
}
|
|
|
|
|
+ return Result.resultObjOk(getRankingAnCache(sortBy));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查询排行榜并缓存
|
|
|
|
|
+ */
|
|
|
|
|
+ private DashboardRankingListVO getRankingAnCache(Integer sortBy) {
|
|
|
DashboardRankingListVO rankingVO = appFeign.queryRankingList(sortBy,rankingLimit);
|
|
DashboardRankingListVO rankingVO = appFeign.queryRankingList(sortBy,rankingLimit);
|
|
|
List<AppRankingListVO> appRankingList = rankingVO.getAppRankingList();
|
|
List<AppRankingListVO> appRankingList = rankingVO.getAppRankingList();
|
|
|
List<AgentAppView> views = apkMapper.queryAll();
|
|
List<AgentAppView> views = apkMapper.queryAll();
|
|
|
- Map<String, String> collect = views.stream().collect(Collectors.toMap(AgentAppView::getAppId, o -> o.getAppName()));
|
|
|
|
|
|
|
+ Map<String, String> collect = views.stream().collect(Collectors.toMap(AgentAppView::getAppId, AgentAppView::getAppName));
|
|
|
for (AppRankingListVO vo : appRankingList) {
|
|
for (AppRankingListVO vo : appRankingList) {
|
|
|
vo.setAppName(collect.get(vo.getAppId()));
|
|
vo.setAppName(collect.get(vo.getAppId()));
|
|
|
}
|
|
}
|
|
|
rankingVO.setAppRankingList(appRankingList);
|
|
rankingVO.setAppRankingList(appRankingList);
|
|
|
redisUtil.setTimeOutMinutesStr(RANKING_KEY+sortBy, JSON.toJSONString(rankingVO),rankingExpire);
|
|
redisUtil.setTimeOutMinutesStr(RANKING_KEY+sortBy, JSON.toJSONString(rankingVO),rankingExpire);
|
|
|
- return Result.resultObjOk(rankingVO);
|
|
|
|
|
|
|
+ return rankingVO;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|