Commit 49e2ad4f by Jony.L

大屏数据:API请求趋势、订单管理、服务能力、用户管理真实数据

parent afae711f
package com.luhu.computility.module.apihub.api.statistics;
import com.luhu.computility.module.apihub.api.statistics.dto.ServiceCapabilityDTO;
/**
* API hub 统计 API 接口
*
* @author jony
*/
public interface ApiHubStatisticsApi {
/**
* 获取服务能力统计数据(历年上线应用数和 API 数量)
*/
ServiceCapabilityDTO getServiceCapability();
}
package com.luhu.computility.module.apihub.api.statistics.dto;
import lombok.Data;
import java.util.List;
/**
* 服务能力统计 DTO
*
* @author jony
*/
@Data
public class ServiceCapabilityDTO {
/**
* 年份列表
*/
private List<String> years;
/**
* 上线应用数列表(与 years 一一对应)
*/
private List<Long> appOnline;
/**
* 上线 API 数量列表(与 years 一一对应)
*/
private List<Long> apiOnline;
}
package com.luhu.computility.module.apihub.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* API 上架状态枚举
*
* @author jony
*/
@Getter
@AllArgsConstructor
public enum ApiStatusEnum {
OFFLINE(0, "下架"),
ONLINE(1, "上架");
/**
* 状态值
*/
private final Integer value;
/**
* 状态名
*/
private final String name;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.impl;
import com.luhu.computility.module.apihub.api.statistics.ApiHubStatisticsApi;
import com.luhu.computility.module.apihub.api.statistics.dto.ServiceCapabilityDTO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.module.apihub.dal.mysql.api.ApiMapper;
import com.luhu.computility.module.apihub.dal.mysql.apiendpoint.ApiEndpointMapper;
import com.luhu.computility.module.apihub.enums.ApiStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static com.luhu.computility.module.apihub.enums.ApiStatusEnum.ONLINE;
@Service
public class ApiHubStatisticsApiImpl implements ApiHubStatisticsApi {
@Resource
private ApiMapper apiMapper;
@Resource
private ApiEndpointMapper apiEndpointMapper;
@Override
public ServiceCapabilityDTO getServiceCapability() {
ServiceCapabilityDTO result = new ServiceCapabilityDTO();
// 查询已上架的 API 和 API 接口(selectList 会自动过滤 deleted=true)
List<ApiDO> apiList = apiMapper.selectList(ApiDO::getStatus, ONLINE.getValue());
List<ApiEndpointDO> endpointList = apiEndpointMapper.selectList(ApiEndpointDO::getIsShelf, true);
if (CollectionUtils.isEmpty(apiList) && CollectionUtils.isEmpty(endpointList)) {
result.setYears(new ArrayList<>());
result.setAppOnline(new ArrayList<>());
result.setApiOnline(new ArrayList<>());
return result;
}
Map<String, Long> apiCountByYear = apiList.stream()
.filter(api -> api.getCreateTime() != null)
.collect(Collectors.groupingBy(
api -> String.valueOf(api.getCreateTime().getYear()),
Collectors.counting()
));
Map<String, Long> endpointCountByYear = endpointList.stream()
.filter(endpoint -> endpoint.getCreateTime() != null)
.collect(Collectors.groupingBy(
endpoint -> String.valueOf(endpoint.getCreateTime().getYear()),
Collectors.counting()
));
Set<String> allYears = new HashSet<>();
allYears.addAll(apiCountByYear.keySet());
allYears.addAll(endpointCountByYear.keySet());
List<String> sortedYears = allYears.stream().sorted().collect(Collectors.toList());
result.setYears(sortedYears);
result.setAppOnline(sortedYears.stream()
.map(year -> apiCountByYear.getOrDefault(year, 0L))
.collect(Collectors.toList()));
result.setApiOnline(sortedYears.stream()
.map(year -> endpointCountByYear.getOrDefault(year, 0L))
.collect(Collectors.toList()));
return result;
}
}
...@@ -10,6 +10,8 @@ import com.luhu.computility.module.apihub.api.apiorder.ApiOrderApi; ...@@ -10,6 +10,8 @@ import com.luhu.computility.module.apihub.api.apiorder.ApiOrderApi;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO; import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO;
import com.luhu.computility.module.apihub.api.order.ApiHubOrderStatisticsApi; import com.luhu.computility.module.apihub.api.order.ApiHubOrderStatisticsApi;
import com.luhu.computility.module.apihub.api.order.dto.ApiOrderStatisticsDTO; import com.luhu.computility.module.apihub.api.order.dto.ApiOrderStatisticsDTO;
import com.luhu.computility.module.apihub.api.statistics.ApiHubStatisticsApi;
import com.luhu.computility.module.apihub.api.statistics.dto.ServiceCapabilityDTO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCallsRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCallsRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO;
...@@ -64,6 +66,8 @@ public class HomeIndexServiceImpl implements HomeIndexService { ...@@ -64,6 +66,8 @@ public class HomeIndexServiceImpl implements HomeIndexService {
ApiCallLogApi apiCallLogApi; ApiCallLogApi apiCallLogApi;
@Resource @Resource
ComputeStatisticsApi computeStatisticsApi; ComputeStatisticsApi computeStatisticsApi;
@Resource
ApiHubStatisticsApi apiHubStatisticsApi;
@Override @Override
public List<HomeIndexUsersCountRespVO> getRegisterUsersCount() { public List<HomeIndexUsersCountRespVO> getRegisterUsersCount() {
...@@ -567,11 +571,16 @@ public class HomeIndexServiceImpl implements HomeIndexService { ...@@ -567,11 +571,16 @@ public class HomeIndexServiceImpl implements HomeIndexService {
usersMap.put("y", convertUsers(getUsersData("y"))); usersMap.put("y", convertUsers(getUsersData("y")));
result.setUsers(usersMap); result.setUsers(usersMap);
// 6. 服务能力数据(上线应用数和API数量的历年统计,暂时返回空数据) // 6. 服务能力数据(上线应用数和 API 数量的历年统计)
ServiceCapabilityDTO serviceCapabilityDTO = apiHubStatisticsApi.getServiceCapability();
HomeDashboardRespVO.ServiceCapabilityVO serviceCapabilityVO = new HomeDashboardRespVO.ServiceCapabilityVO(); HomeDashboardRespVO.ServiceCapabilityVO serviceCapabilityVO = new HomeDashboardRespVO.ServiceCapabilityVO();
serviceCapabilityVO.setYears(new ArrayList<>()); serviceCapabilityVO.setYears(serviceCapabilityDTO.getYears());
serviceCapabilityVO.setAppOnline(new ArrayList<>()); serviceCapabilityVO.setAppOnline(serviceCapabilityDTO.getAppOnline().stream()
serviceCapabilityVO.setApiOnline(new ArrayList<>()); .map(Long::doubleValue)
.collect(Collectors.toList()));
serviceCapabilityVO.setApiOnline(serviceCapabilityDTO.getApiOnline().stream()
.map(Long::doubleValue)
.collect(Collectors.toList()));
result.setServiceCapability(serviceCapabilityVO); result.setServiceCapability(serviceCapabilityVO);
// 7. 轮播数据(月度应用和模型服务数据,暂时返回空列表) // 7. 轮播数据(月度应用和模型服务数据,暂时返回空列表)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment