|
|
@@ -4,11 +4,13 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.ytpm.agent.model.YtPlatformUserApp;
|
|
|
import com.ytpm.agent.view.AgentAppView;
|
|
|
import com.ytpm.agent.view.FeignServeAppView;
|
|
|
-import com.ytpm.feign.AppFeign;
|
|
|
+import com.ytpm.general.RepMessage;
|
|
|
import com.ytpm.general.Result;
|
|
|
import com.ytpm.middle.dao.ApkMapper;
|
|
|
+import com.ytpm.middle.dao.AppMapper;
|
|
|
import com.ytpm.middle.dao.EnterpriseMapper;
|
|
|
import com.ytpm.middle.dao.RiskMapper;
|
|
|
import com.ytpm.middle.service.CountService;
|
|
|
@@ -21,6 +23,7 @@ import com.ytpm.middle.view.DashboardRankingListVO;
|
|
|
import com.ytpm.middle.view.DashboardRevenueVO;
|
|
|
import com.ytpm.middle.view.DashboardRiskVO;
|
|
|
import com.ytpm.middle.view.DashboardTopCountVo;
|
|
|
+import com.ytpm.middle.view.UserRankingListVO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
|
|
@@ -28,6 +31,8 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
@@ -44,8 +49,6 @@ public class CountServiceImpl implements CountService {
|
|
|
@Autowired
|
|
|
private FeignClientInvoker feignInvoker;
|
|
|
@Resource
|
|
|
- private AppFeign appFeign;
|
|
|
- @Resource
|
|
|
private RiskMapper riskMapper;
|
|
|
@Resource
|
|
|
private RedisUtil redisUtil;
|
|
|
@@ -54,6 +57,9 @@ public class CountServiceImpl implements CountService {
|
|
|
@Value("${ranking.limit}")
|
|
|
private int rankingLimit;
|
|
|
private static final String RANKING_KEY = "yt_ranking";
|
|
|
+ @Resource
|
|
|
+ private AppMapper appMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 获取顶部数据统计
|
|
|
*/
|
|
|
@@ -63,7 +69,8 @@ public class CountServiceImpl implements CountService {
|
|
|
vo.setAgentCount(enterpriseMapper.countEnterprise());
|
|
|
vo.setApkCount(apkMapper.countApk());
|
|
|
List<FeignServeAppView> appViews = apkMapper.queryServeAndApp();
|
|
|
- Map<String, String> serveMap = appViews.stream().collect(Collectors.toMap(FeignServeAppView::getServiceName, FeignServeAppView::getAppIds));
|
|
|
+ Map<String, String> serveMap = appViews.stream().filter(s->StrUtil.isNotBlank(s.getAppIds()))
|
|
|
+ .collect(Collectors.toMap(FeignServeAppView::getServiceName, FeignServeAppView::getAppIds));
|
|
|
BigDecimal resultAdCount = new BigDecimal(0);
|
|
|
BigDecimal resultRevenue = new BigDecimal(0);
|
|
|
for (Map.Entry<String, String> entry : serveMap.entrySet()) {
|
|
|
@@ -98,14 +105,27 @@ public class CountServiceImpl implements CountService {
|
|
|
* 查询排行榜并缓存
|
|
|
*/
|
|
|
private DashboardRankingListVO getRankingAnCache(Integer sortBy) {
|
|
|
- DashboardRankingListVO rankingVO = appFeign.queryRankingList(sortBy,rankingLimit);
|
|
|
- List<AppRankingListVO> appRankingList = rankingVO.getAppRankingList();
|
|
|
+
|
|
|
List<AgentAppView> views = apkMapper.queryAll();
|
|
|
+ List<String> serveList = views.stream().map(AgentAppView::getServiceName).distinct().collect(Collectors.toList());
|
|
|
+ DashboardRankingListVO rankingVO = new DashboardRankingListVO();
|
|
|
+ List<AppRankingListVO> appRankingList = new ArrayList<>();
|
|
|
+ List<UserRankingListVO> userRankingList = new ArrayList<>();
|
|
|
+ for (String serve : serveList) {
|
|
|
+ Object o = feignInvoker.invoke(serve,"queryRankingList",sortBy,rankingLimit);
|
|
|
+ DashboardRankingListVO vo = JSONObject.parseObject(JSON.toJSONString(o), DashboardRankingListVO.class);
|
|
|
+ appRankingList.addAll(vo.getAppRankingList());
|
|
|
+ userRankingList.addAll(vo.getUserRankingList());
|
|
|
+ }
|
|
|
+ //设置应用名称
|
|
|
Map<String, String> collect = views.stream().collect(Collectors.toMap(AgentAppView::getAppId, AgentAppView::getAppName));
|
|
|
for (AppRankingListVO vo : appRankingList) {
|
|
|
vo.setAppName(collect.get(vo.getAppId()));
|
|
|
}
|
|
|
- rankingVO.setAppRankingList(appRankingList);
|
|
|
+ rankingVO.setUserRankingList(userRankingList.stream().sorted(Comparator.comparing(UserRankingListVO::getTotalIncome)
|
|
|
+ .reversed()).limit(5).collect(Collectors.toList()));
|
|
|
+ rankingVO.setAppRankingList(appRankingList.stream().sorted(Comparator.comparing(AppRankingListVO::getTotalRevenue)
|
|
|
+ .reversed()).limit(5).collect(Collectors.toList()));
|
|
|
redisUtil.setTimeOutMinutesStr(RANKING_KEY+sortBy, JSON.toJSONString(rankingVO),rankingExpire);
|
|
|
return rankingVO;
|
|
|
}
|
|
|
@@ -117,7 +137,9 @@ public class CountServiceImpl implements CountService {
|
|
|
public Result<DashboardRevenueVO> getRevenueStatics(String appId) {
|
|
|
List<AgentAppView> apkList = apkMapper.queryBySuperiorId(appId);
|
|
|
String apkIds = apkList.stream().map(AgentAppView::getAppId).collect(Collectors.joining(","));
|
|
|
- DashboardRevenueVO vo = appFeign.revenueStatics(apkIds);
|
|
|
+ YtPlatformUserApp appInfo = appMapper.getByPrimary(appId);
|
|
|
+ Object o = feignInvoker.invoke(appInfo.getServiceName(),"revenueStatics",apkIds);
|
|
|
+ DashboardRevenueVO vo = JSONObject.parseObject(JSON.toJSONString(o), DashboardRevenueVO.class);
|
|
|
Map<String, String> appNameMap = apkList.stream().collect(Collectors.toMap(AgentAppView::getAppId, AgentAppView::getAppName));
|
|
|
List<DashboardAppRevenueVO> appRevenueList = vo.getAppRevenueList();
|
|
|
for (DashboardAppRevenueVO revenueVO : appRevenueList) {
|
|
|
@@ -132,7 +154,14 @@ public class CountServiceImpl implements CountService {
|
|
|
*/
|
|
|
@Override
|
|
|
public Result<DashboardRiskVO> getUserStatics(String appId) {
|
|
|
- DashboardRiskVO vo = appFeign.userStatics(appId);
|
|
|
+ AgentAppView view = apkMapper.queryByAppId(appId);
|
|
|
+ if(Objects.isNull(view)){
|
|
|
+ return Result.resultErr(RepMessage.OBJECT_NOT_EXIST);
|
|
|
+ }
|
|
|
+ YtPlatformUserApp appInfo = appMapper.getByPrimary(view.getSuperiorId());
|
|
|
+ Object o = feignInvoker.invoke(appInfo.getServiceName(), "userStatics", appId);
|
|
|
+ DashboardRiskVO vo = JSONObject.parseObject(JSON.toJSONString(o), DashboardRiskVO.class);
|
|
|
+
|
|
|
vo.setTodayBannedCount(riskMapper.countBanned(appId,1));
|
|
|
vo.setYesterdayBannedCount(riskMapper.countBanned(appId,2));
|
|
|
vo.setMonthBannedCount(riskMapper.countBanned(appId,3));
|