Commit 9d6be529 by lijinqi

大屏 平台态势总览 接口完成

parent e1c58c98
...@@ -2,7 +2,9 @@ package com.luhu.computility.module.biz.controller.admin.home; ...@@ -2,7 +2,9 @@ package com.luhu.computility.module.biz.controller.admin.home;
import com.luhu.computility.framework.common.pojo.CommonResult; import com.luhu.computility.framework.common.pojo.CommonResult;
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.HomeIndexOrdersCountRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO;
import com.luhu.computility.module.biz.service.home.HomeIndexService; import com.luhu.computility.module.biz.service.home.HomeIndexService;
...@@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
import java.util.List; import java.util.List;
import static com.luhu.computility.framework.common.pojo.CommonResult.success; import static com.luhu.computility.framework.common.pojo.CommonResult.success;
...@@ -60,5 +63,21 @@ public class HomeIndexController { ...@@ -60,5 +63,21 @@ public class HomeIndexController {
public CommonResult<HomeIndexTopBarRespVO> getTopBarData(){ public CommonResult<HomeIndexTopBarRespVO> getTopBarData(){
return success(homeIndexService.getTopBarData()); return success(homeIndexService.getTopBarData());
} }
@GetMapping("/getOverallSituation")
@Operation(summary = "获取平台总体态势")
@PermitAll
public CommonResult<HomeIndexOverallSituationRespVO> getOverallSituation() {
return success(homeIndexService.getOverallSituation());
}
@GetMapping("/getComputeDistribution")
@Operation(summary = "算力资源分布")
public CommonResult<HomeIndexComputeDistributionRespVO> getComputeDistribution(String type) {
return success(homeIndexService.getComputeDistribution(type));
}
} }
package com.luhu.computility.module.biz.controller.admin.home.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* @Author: lijinqi
* @Date : 2026/01/13 17:00
* @VERSION v1.0
*/
@Schema(description = "管理后台 - 首页/算力资源分布RespVO")
@Data
public class HomeIndexComputeDistributionRespVO {
@Schema(description = "gpu结构分布")
private List<ComputeDistribution> gpu;
@Schema(description = "算力来源分布")
private List<ComputeDistribution> source;
@Schema(description = "计算资源分布")
private List<ComputeDistribution> resource;
class ComputeDistribution{
private String name;
private double value;
}
}
package com.luhu.computility.module.biz.controller.admin.home.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author: lijinqi
* @Date : 2026/01/13 17:00
* @VERSION v1.0
*/
@Schema(description = "管理后台 - 首页/平台总体态势RespVO")
@Data
public class HomeIndexOverallSituationRespVO {
@Schema(description = "算力总规模")
private BigDecimal allCompute;
@Schema(description = "可租赁算力")
private BigDecimal leaseCompute;
@Schema(description = "已使用算力")
private BigDecimal usedCompute;
@Schema(description = "算力利用率")
private BigDecimal computeUtilizationRate;
@Schema(description = "GPU总卡数")
private Long gpuCount;
@Schema(description = "Cpu总核数")
private Long coreCount;
@Schema(description = "内存总量")
private Long memoryCapacity;
}
package com.luhu.computility.module.biz.service.home; package com.luhu.computility.module.biz.service.home;
import com.luhu.computility.framework.common.pojo.CommonResult;
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.HomeIndexOrdersCountRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO;
...@@ -22,4 +25,9 @@ public interface HomeIndexService { ...@@ -22,4 +25,9 @@ public interface HomeIndexService {
List<HomeIndexApiCallsRespVO> getApiCallsData(String dateType); List<HomeIndexApiCallsRespVO> getApiCallsData(String dateType);
HomeIndexTopBarRespVO getTopBarData(); HomeIndexTopBarRespVO getTopBarData();
HomeIndexOverallSituationRespVO getOverallSituation();
HomeIndexComputeDistributionRespVO getComputeDistribution(String type);
} }
...@@ -7,29 +7,32 @@ import com.luhu.computility.module.apihub.api.apicalllog.ApiCallLogApi; ...@@ -7,29 +7,32 @@ import com.luhu.computility.module.apihub.api.apicalllog.ApiCallLogApi;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogPageReqDTO; import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogPageReqDTO;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO; import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO;
import com.luhu.computility.module.apihub.api.apiorder.ApiOrderApi; import com.luhu.computility.module.apihub.api.apiorder.ApiOrderApi;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderPageReqDTO;
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.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.HomeIndexOrdersCountRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO; import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO;
import com.luhu.computility.module.compute.api.order.ComputeOrderStatisticsApi; import com.luhu.computility.module.compute.api.order.ComputeOrderStatisticsApi;
import com.luhu.computility.module.compute.api.order.ComputeStatisticsApi;
import com.luhu.computility.module.compute.api.order.dto.ComputeOrderStatisticsDTO; import com.luhu.computility.module.compute.api.order.dto.ComputeOrderStatisticsDTO;
import com.luhu.computility.module.compute.api.order.dto.ResourceOrderRespDTO; import com.luhu.computility.module.compute.api.order.dto.ResourceOrderRespDTO;
import com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO;
import com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO;
import com.luhu.computility.module.member.controller.admin.user.vo.MemberUserPageReqVO; import com.luhu.computility.module.member.controller.admin.user.vo.MemberUserPageReqVO;
import com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO; import com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO;
import com.luhu.computility.module.member.service.user.MemberUserService; import com.luhu.computility.module.member.service.user.MemberUserService;
import com.luhu.computility.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
import com.luhu.computility.module.trade.dal.dataobject.order.TradeOrderDO;
import com.luhu.computility.module.trade.enums.order.TradeOrderStatusEnum;
import com.luhu.computility.module.trade.service.order.TradeOrderQueryService; import com.luhu.computility.module.trade.service.order.TradeOrderQueryService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.YearMonth; import java.time.YearMonth;
...@@ -57,6 +60,8 @@ public class HomeIndexServiceImpl implements HomeIndexService { ...@@ -57,6 +60,8 @@ public class HomeIndexServiceImpl implements HomeIndexService {
ApiOrderApi apiOrderApi; ApiOrderApi apiOrderApi;
@Resource @Resource
ApiCallLogApi apiCallLogApi; ApiCallLogApi apiCallLogApi;
@Resource
ComputeStatisticsApi computeStatisticsApi;
@Override @Override
public List<HomeIndexUsersCountRespVO> getRegisterUsersCount() { public List<HomeIndexUsersCountRespVO> getRegisterUsersCount() {
...@@ -280,6 +285,29 @@ public class HomeIndexServiceImpl implements HomeIndexService { ...@@ -280,6 +285,29 @@ public class HomeIndexServiceImpl implements HomeIndexService {
} }
@Override @Override
public HomeIndexOverallSituationRespVO getOverallSituation() {
ResourceSpuStatisticDTO resourceSpuStatisticDTO = computeStatisticsApi.getAllCompute();
ResourceOrderSnapshotStatisticDTO resourceOrderSnapshotStatisticDTO =
computeStatisticsApi.queryResourceOrderSnapshotStatistic();
HomeIndexOverallSituationRespVO homeIndexOverallSituation = new HomeIndexOverallSituationRespVO();
homeIndexOverallSituation.setAllCompute(BigDecimal.valueOf(resourceSpuStatisticDTO.getTotalCompute()).setScale(2) );
homeIndexOverallSituation.setCoreCount(resourceSpuStatisticDTO.getTotalCoreCount());
homeIndexOverallSituation.setGpuCount(resourceSpuStatisticDTO.getTotalGpuCount());
homeIndexOverallSituation.setMemoryCapacity(resourceSpuStatisticDTO.getTotalMemoryCapacity());
homeIndexOverallSituation.setUsedCompute(BigDecimal.valueOf(resourceOrderSnapshotStatisticDTO.getTotalCompute()).setScale(2));
homeIndexOverallSituation.setLeaseCompute(BigDecimal.valueOf(resourceSpuStatisticDTO.getTotalCompute()- resourceOrderSnapshotStatisticDTO.getTotalCompute()).setScale(2));
//百分比 不带% 前端展示+%即可
homeIndexOverallSituation.setComputeUtilizationRate(BigDecimal.valueOf(resourceOrderSnapshotStatisticDTO.getTotalCompute()/resourceSpuStatisticDTO.getTotalCompute()).multiply(BigDecimal.valueOf(100))
.setScale(2, RoundingMode.HALF_UP));
return homeIndexOverallSituation;
}
@Override
public HomeIndexComputeDistributionRespVO getComputeDistribution(String type) {
return null;
}
@Override
public List<HomeIndexOrdersCountRespVO> getOrdersData(String dateType) { public List<HomeIndexOrdersCountRespVO> getOrdersData(String dateType) {
LocalDate today = LocalDate.now(); LocalDate today = LocalDate.now();
LocalDateTime endTime = null; LocalDateTime endTime = null;
...@@ -454,4 +482,7 @@ public class HomeIndexServiceImpl implements HomeIndexService { ...@@ -454,4 +482,7 @@ public class HomeIndexServiceImpl implements HomeIndexService {
} }
throw new ServiceException("无效的统计时间类型:" + dateType); throw new ServiceException("无效的统计时间类型:" + dateType);
} }
}
\ No newline at end of file
}
...@@ -24,4 +24,5 @@ public interface ComputeOrderStatisticsApi { ...@@ -24,4 +24,5 @@ public interface ComputeOrderStatisticsApi {
List<ResourceOrderRespDTO> getPaidOrderList(LocalDateTime[] timeRange); List<ResourceOrderRespDTO> getPaidOrderList(LocalDateTime[] timeRange);
}
\ No newline at end of file }
package com.luhu.computility.module.compute.api.order;
import com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO;
import com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO;
/**
* 算力资源订单统计API接口
*
* @author jony
*/
public interface ComputeStatisticsApi {
ResourceOrderSnapshotStatisticDTO queryResourceOrderSnapshotStatistic();
ResourceSpuStatisticDTO getAllCompute();
}
package com.luhu.computility.module.compute.api.order.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ResourceOrderSnapshotStatisticDTO {
private Double totalCompute;
private Long totalGpuCount;
private Long totalCoreCount;
private Long totalMemoryCapacity;
}
package com.luhu.computility.module.compute.api.order.dto;
import lombok.Data;
@Data
public class ResourceSpuStatisticDTO {
private Double totalCompute;
private Long totalGpuCount;
private Long totalCoreCount;
private Long totalMemoryCapacity;
}
...@@ -28,6 +28,18 @@ public class ResourceSpuRespVO { ...@@ -28,6 +28,18 @@ public class ResourceSpuRespVO {
@ExcelProperty("GPU配置") @ExcelProperty("GPU配置")
private String gpu; private String gpu;
@Schema(description = "算力")
private Double compute;
@Schema(description = "GPU数量")
private Integer gpuCount;
@Schema(description = "CPU核心数")
private Integer coreCount;
@Schema(description = "内存容量")
private Integer memoryCapacity;
@Schema(description = "内存配置", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "内存配置", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("内存配置") @ExcelProperty("内存配置")
private String ram; private String ram;
...@@ -92,4 +104,4 @@ public class ResourceSpuRespVO { ...@@ -92,4 +104,4 @@ public class ResourceSpuRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
} }
\ No newline at end of file
...@@ -23,6 +23,18 @@ public class ResourceSpuSaveReqVO { ...@@ -23,6 +23,18 @@ public class ResourceSpuSaveReqVO {
@Schema(description = "GPU配置") @Schema(description = "GPU配置")
private String gpu; private String gpu;
@Schema(description = "算力")
private Double compute;
@Schema(description = "GPU数量")
private Integer gpuCount;
@Schema(description = "CPU核心数")
private Integer coreCount;
@Schema(description = "内存容量")
private Integer memoryCapacity;
@Schema(description = "内存配置", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "内存配置", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "内存配置不能为空") @NotEmpty(message = "内存配置不能为空")
private String ram; private String ram;
...@@ -76,4 +88,4 @@ public class ResourceSpuSaveReqVO { ...@@ -76,4 +88,4 @@ public class ResourceSpuSaveReqVO {
@NotNull(message = "状态(0 下架,1 上架,2 回收)不能为空") @NotNull(message = "状态(0 下架,1 上架,2 回收)不能为空")
private Integer status; private Integer status;
} }
\ No newline at end of file
...@@ -36,6 +36,26 @@ public class AppResourceOrderSnapshotSaveReqVO { ...@@ -36,6 +36,26 @@ public class AppResourceOrderSnapshotSaveReqVO {
@NotBlank(message = "内存配置不能为空") @NotBlank(message = "内存配置不能为空")
private String ram; private String ram;
@Schema(description = "算力", requiredMode = Schema.RequiredMode.REQUIRED, example = "222.22")
@NotBlank(message = "算力不能为空")
private Double compute;
@Schema(description = "GPU卡数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "8")
@NotBlank(message = "GPU卡数量不能为空")
private Long gpuCount;
@Schema(description = "CPU核数", requiredMode = Schema.RequiredMode.REQUIRED, example = "8")
@NotBlank(message = "CPU核数")
private Long coreCount;
@Schema(description = "内存大小", requiredMode = Schema.RequiredMode.REQUIRED, example = "64")
@NotBlank(message = "内存大小不能为空")
private Long memoryCapacity;
@Schema(description = "服务器位置", requiredMode = Schema.RequiredMode.REQUIRED, example = "长沙")
@NotBlank(message = "服务器位置不能为空")
private String location;
@Schema(description = "存储配置", requiredMode = Schema.RequiredMode.REQUIRED, example = "2TB NVMe SSD") @Schema(description = "存储配置", requiredMode = Schema.RequiredMode.REQUIRED, example = "2TB NVMe SSD")
@NotBlank(message = "存储配置不能为空") @NotBlank(message = "存储配置不能为空")
private String storage; private String storage;
...@@ -74,4 +94,4 @@ public class AppResourceOrderSnapshotSaveReqVO { ...@@ -74,4 +94,4 @@ public class AppResourceOrderSnapshotSaveReqVO {
@NotNull(message = "市场价格不能为空") @NotNull(message = "市场价格不能为空")
private Long marketPrice; private Long marketPrice;
} }
\ No newline at end of file
...@@ -52,7 +52,22 @@ public class ResourceOrderSnapshotDO extends BaseDO { ...@@ -52,7 +52,22 @@ public class ResourceOrderSnapshotDO extends BaseDO {
* GPU配置快照 * GPU配置快照
*/ */
private String gpu; private String gpu;
/**
* 算力
*/
private Double compute;
/**
* GPU数量
*/
private Integer gpuCount;
/**
* CPU核心数
*/
private Integer coreCount;
/**
* 内存容量
*/
private Integer memoryCapacity;
/** /**
* 内存配置快照 * 内存配置快照
*/ */
...@@ -108,4 +123,4 @@ public class ResourceOrderSnapshotDO extends BaseDO { ...@@ -108,4 +123,4 @@ public class ResourceOrderSnapshotDO extends BaseDO {
*/ */
private Long marketPrice; private Long marketPrice;
} }
\ No newline at end of file
...@@ -40,6 +40,22 @@ public class ResourceSpuDO extends BaseDO { ...@@ -40,6 +40,22 @@ public class ResourceSpuDO extends BaseDO {
*/ */
private String gpu; private String gpu;
/** /**
* 算力
*/
private Double compute;
/**
* GPU数量
*/
private Long gpuCount;
/**
* CPU核心数
*/
private Long coreCount;
/**
* 内存容量
*/
private Long memoryCapacity;
/**
* 内存配置 * 内存配置
*/ */
private String ram; private String ram;
...@@ -97,4 +113,4 @@ public class ResourceSpuDO extends BaseDO { ...@@ -97,4 +113,4 @@ public class ResourceSpuDO extends BaseDO {
private Integer status; private Integer status;
} }
\ No newline at end of file
package com.luhu.computility.module.compute.dal.mysql.resourceordersnapshot; package com.luhu.computility.module.compute.dal.mysql.resourceordersnapshot;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.luhu.computility.framework.common.pojo.PageResult; import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX; import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX; import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX; import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO;
import com.luhu.computility.module.compute.dal.dataobject.resourceordersnapshot.ResourceOrderSnapshotDO; import com.luhu.computility.module.compute.dal.dataobject.resourceordersnapshot.ResourceOrderSnapshotDO;
import com.luhu.computility.module.compute.controller.app.resourceordersnapshot.vo.AppResourceOrderSnapshotRespVO; import com.luhu.computility.module.compute.controller.app.resourceordersnapshot.vo.AppResourceOrderSnapshotRespVO;
import com.luhu.computility.module.compute.controller.app.resourceordersnapshot.vo.AppResourceOrderSnapshotPageReqVO; import com.luhu.computility.module.compute.controller.app.resourceordersnapshot.vo.AppResourceOrderSnapshotPageReqVO;
import com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSpuDO;
import com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO; import com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
...@@ -67,4 +72,39 @@ public interface ResourceOrderSnapshotMapper extends BaseMapperX<ResourceOrderSn ...@@ -67,4 +72,39 @@ public interface ResourceOrderSnapshotMapper extends BaseMapperX<ResourceOrderSn
.eq(ResourceOrderSnapshotDO::getOrderId, orderId)); .eq(ResourceOrderSnapshotDO::getOrderId, orderId));
} }
} default ResourceOrderSnapshotStatisticDTO queryResourceOrderSnapshotStatistic() {
\ No newline at end of file ResourceOrderSnapshotStatisticDTO resp = new ResourceOrderSnapshotStatisticDTO();
// SQL sum 查询
List<Map<String, Object>> result = selectMaps(new QueryWrapper<ResourceOrderSnapshotDO>()
.select("IFNULL(SUM(compute), 0) as totalCompute, IFNULL(SUM(gpu_count), 0) as totalGpuCount, " +
"IFNULL(SUM(core_count), 0) as totalCoreCount, IFNULL(SUM(memory_capacity), 0) as totalMemoryCapacity"));
if (!result.isEmpty()) {
// compute -> BigDecimal,保留两位小数
Map<String, Object> row = result.get(0);
//算力(保留 2 位)
BigDecimal compute = getBigDecimal(row, "totalCompute")
.setScale(2, RoundingMode.HALF_UP);
//强烈建议:VO 用 BigDecimal
resp.setTotalCompute(compute.doubleValue());
//GPU 数量
resp.setTotalGpuCount( getBigDecimal(row, "totalGpuCount").longValue() );
//CPU 核心数
resp.setTotalCoreCount( getBigDecimal(row, "totalCoreCount").longValue() );
//内存容量
resp.setTotalMemoryCapacity( getBigDecimal(row, "totalMemoryCapacity").longValue());
}
return resp;
}
static BigDecimal getBigDecimal(Map<String, Object> map, String key) {
Object val = map.get(key);
return val == null ? BigDecimal.ZERO : (BigDecimal) val;
}
}
package com.luhu.computility.module.compute.dal.mysql.resourcespu; package com.luhu.computility.module.compute.dal.mysql.resourcespu;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.luhu.computility.framework.common.pojo.PageResult; import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX; import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX; import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX; import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO;
import com.luhu.computility.module.compute.dal.dataobject.resourcecategory.ResourceCategoryDO; import com.luhu.computility.module.compute.dal.dataobject.resourcecategory.ResourceCategoryDO;
import com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSpuDO; import com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSpuDO;
import com.luhu.computility.module.compute.dal.mysql.resourcecategory.ResourceCategoryMapper; import com.luhu.computility.module.compute.dal.mysql.resourcecategory.ResourceCategoryMapper;
...@@ -45,5 +49,39 @@ public interface ResourceSpuMapper extends BaseMapperX<ResourceSpuDO> { ...@@ -45,5 +49,39 @@ public interface ResourceSpuMapper extends BaseMapperX<ResourceSpuDO> {
.orderByDesc(ResourceSpuDO::getId)); .orderByDesc(ResourceSpuDO::getId));
} }
default ResourceSpuStatisticDTO selectResourceSpuStatistic() {
} ResourceSpuStatisticDTO resp = new ResourceSpuStatisticDTO();
\ No newline at end of file
// SQL sum 查询
List<Map<String, Object>> result = selectMaps(new QueryWrapper<ResourceSpuDO>()
.select("IFNULL(SUM(compute), 0) as totalCompute, IFNULL(SUM(gpu_count), 0) as totalGpuCount, " +
"IFNULL(SUM(core_count), 0) as totalCoreCount, IFNULL(SUM(memory_capacity), 0) as totalMemoryCapacity"));
if (!result.isEmpty()) {
// compute -> BigDecimal,保留两位小数
Map<String, Object> row = result.get(0);
//算力(保留 2 位)
BigDecimal compute = getBigDecimal(row, "totalCompute")
.setScale(2, RoundingMode.HALF_UP);
//强烈建议:VO 用 BigDecimal
resp.setTotalCompute(compute.doubleValue());
//GPU 数量
resp.setTotalGpuCount( getBigDecimal(row, "totalGpuCount").longValue() );
//CPU 核心数
resp.setTotalCoreCount( getBigDecimal(row, "totalCoreCount").longValue() );
//内存容量
resp.setTotalMemoryCapacity( getBigDecimal(row, "totalMemoryCapacity").longValue());
}
return resp;
}
static BigDecimal getBigDecimal(Map<String, Object> map, String key) {
Object val = map.get(key);
return val == null ? BigDecimal.ZERO : (BigDecimal) val;
}
}
package com.luhu.computility.module.compute.service.impl;
import com.luhu.computility.module.compute.api.order.ComputeStatisticsApi;
import com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO;
import com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO;
import com.luhu.computility.module.compute.dal.mysql.resourceordersnapshot.ResourceOrderSnapshotMapper;
import com.luhu.computility.module.compute.dal.mysql.resourcespu.ResourceSpuMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 算力资源订单统计API实现类
*
* @author jony
*/
@Service
@Slf4j
public class ComputeStatisticsApiImpl implements ComputeStatisticsApi {
@Resource
private ResourceOrderSnapshotMapper resourceOrderSnapshotMapper;
@Resource
private ResourceSpuMapper resourceSpuMapper;
@Override
public ResourceSpuStatisticDTO getAllCompute() {
return resourceSpuMapper.selectResourceSpuStatistic();
}
@Override
public ResourceOrderSnapshotStatisticDTO queryResourceOrderSnapshotStatistic() {
return resourceOrderSnapshotMapper.queryResourceOrderSnapshotStatistic();
}
}
...@@ -101,7 +101,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -101,7 +101,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
@Resource @Resource
private ResourceOrderNoRedisDAO resourceOrderNoRedisDAO; private ResourceOrderNoRedisDAO resourceOrderNoRedisDAO;
@Resource @Resource
private WpgjPayProperties wpgjPayProperties; private WpgjPayProperties wpgjPayProperties;
...@@ -203,7 +203,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -203,7 +203,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
throw exception(RESOURCE_ORDER_SPU_NOT_EXISTS); throw exception(RESOURCE_ORDER_SPU_NOT_EXISTS);
} }
// 构建订单数据 // 构建订单数据
ResourceOrderDO order = new ResourceOrderDO(); ResourceOrderDO order = new ResourceOrderDO();
order.setUserId(userId); order.setUserId(userId);
...@@ -312,7 +312,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -312,7 +312,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
return resourceOrderNoRedisDAO.generate(ResourceOrderNoRedisDAO.RESOURCE_ORDER_NO_PREFIX); return resourceOrderNoRedisDAO.generate(ResourceOrderNoRedisDAO.RESOURCE_ORDER_NO_PREFIX);
} }
/** /**
* 校验支付订单的合法性 * 校验支付订单的合法性
* *
...@@ -725,7 +725,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -725,7 +725,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
log.info("[handleSpuPurchaseAfterPayment] SPU被购买后,已下架该SPU下的所有SKU并增加销量,spuId={}", spuId); log.info("[handleSpuPurchaseAfterPayment] SPU被购买后,已下架该SPU下的所有SKU并增加销量,spuId={}", spuId);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateOrderFailedByWpgj(Long orderId, WpgjPayNotifyDTO notifyDTO) { public void updateOrderFailedByWpgj(Long orderId, WpgjPayNotifyDTO notifyDTO) {
...@@ -842,6 +842,11 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -842,6 +842,11 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
createReqVO.setStorage(spu.getStorage()); createReqVO.setStorage(spu.getStorage());
createReqVO.setPowerSupply(spu.getPowerSupply()); createReqVO.setPowerSupply(spu.getPowerSupply());
createReqVO.setNic(spu.getNic()); createReqVO.setNic(spu.getNic());
createReqVO.setGpuCount(spu.getGpuCount());
createReqVO.setCompute(spu.getCompute());
createReqVO.setCoreCount(spu.getCoreCount());
createReqVO.setMemoryCapacity(spu.getMemoryCapacity());
createReqVO.setLocation(spu.getLocation());
createReqVO.setIp(spu.getIp()); createReqVO.setIp(spu.getIp());
createReqVO.setSpuName(spu.getName()); createReqVO.setSpuName(spu.getName());
createReqVO.setDurationDays(sku.getDurationDays()); createReqVO.setDurationDays(sku.getDurationDays());
...@@ -863,4 +868,4 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -863,4 +868,4 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
} }
} }
} }
\ No newline at end of file
...@@ -59,13 +59,13 @@ spring: ...@@ -59,13 +59,13 @@ spring:
#username: root #username: root
#password: 159357 # D7kaJdNdLsjzXGhD #password: 159357 # D7kaJdNdLsjzXGhD
#url: jdbc:mysql://43.139.100.220:13306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 url: jdbc:mysql://43.139.100.220:13306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
#username: root
#password: D7kaJdNdLsjzXGhD
url: jdbc:mysql://8.136.9.68:3306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
username: root username: root
password: Luchuan@123 password: D7kaJdNdLsjzXGhD
# url: jdbc:mysql://8.136.9.68:3306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
# username: root
# password: Luchuan@123
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis: redis:
host: 127.0.0.1 # 地址 host: 127.0.0.1 # 地址
...@@ -258,4 +258,4 @@ justauth: ...@@ -258,4 +258,4 @@ justauth:
--- #################### iot相关配置 TODO 芋艿【IOT】:再瞅瞅 #################### --- #################### iot相关配置 TODO 芋艿【IOT】:再瞅瞅 ####################
pf4j: pf4j:
# pluginsDir: /tmp/ # pluginsDir: /tmp/
pluginsDir: ../plugins pluginsDir: ../plugins
\ No newline at end of file
...@@ -390,11 +390,11 @@ digital-human-zhuxi: ...@@ -390,11 +390,11 @@ digital-human-zhuxi:
token: Basic emh1eGlAdHhnOndBSmNETDRMZVZ3QjlhdlV1OVJN token: Basic emh1eGlAdHhnOndBSmNETDRMZVZ3QjlhdlV1OVJN
similar-image: similar-image:
base-url: http://117.157.192.95:8082/appDemo base-url: https://218.77.58.42:18088/
match-mage: ${similar-image.base-url}/matchImage match-mage: ${similar-image.base-url}/matchImage
swap-face: swap-face:
base-url: http://117.157.192.95:8082/appDemo base-url: https://218.77.58.42:18088/
upload-image: ${swap-face.base-url}/uploadFaceSwapImage upload-image: ${swap-face.base-url}/uploadFaceSwapImage
create-video-stream: ${swap-face.base-url}/reActorFaceSwap create-video-stream: ${swap-face.base-url}/reActorFaceSwap
view-video: ${swap-face.base-url}/viewVideo view-video: ${swap-face.base-url}/viewVideo
......
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