Commit e0ea5f18 by Jony.L

管理端首页,顶部导航栏统计数据bug修复

parent 3dde2664
package com.luhu.computility.module.apihub.api.order;
import com.luhu.computility.module.apihub.api.order.dto.ApiOrderStatisticsDTO;
import java.time.LocalDateTime;
/**
* API订单统计API接口
*
* @author jony
*/
public interface ApiHubOrderStatisticsApi {
/**
* 获取今日已支付的API订单统计
*
* @param timeRange 时间范围 [开始时间, 结束时间]
* @return 订单统计信息(数量和总金额)
*/
ApiOrderStatisticsDTO getTodayOrderStatistics(LocalDateTime[] timeRange);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.api.order.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* API订单统计DTO
*
* @author jony
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiOrderStatisticsDTO {
/**
* 订单数量
*/
private Integer count;
/**
* 订单总金额(分)
*/
private Integer totalAmount;
}
\ No newline at end of file
......@@ -101,4 +101,11 @@ public interface ApiOrderMapper extends BaseMapperX<ApiOrderDO> {
.eq(ApiOrderDO::getId, id).eq(ApiOrderDO::getStatus, status));
}
default List<ApiOrderDO> selectListByStatusAndCreateTime(Integer status, LocalDateTime[] timeRange) {
return selectList(new LambdaQueryWrapperX<ApiOrderDO>()
.eq(ApiOrderDO::getStatus, status)
.betweenIfPresent(ApiOrderDO::getCreateTime, timeRange)
.orderByDesc(ApiOrderDO::getId));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.impl;
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.dal.dataobject.apiorder.ApiOrderDO;
import com.luhu.computility.module.apihub.dal.mysql.apiorder.ApiOrderMapper;
import com.luhu.computility.module.apihub.enums.ApihubOrderStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* API订单统计API实现类
*
* @author jony
*/
@Service
@Slf4j
public class ApiHubOrderStatisticsApiImpl implements ApiHubOrderStatisticsApi {
@Resource
private ApiOrderMapper apiOrderMapper;
@Override
public ApiOrderStatisticsDTO getTodayOrderStatistics(LocalDateTime[] timeRange) {
try {
List<ApiOrderDO> orders = apiOrderMapper.selectListByStatusAndCreateTime(
ApihubOrderStatusEnum.PAID.getValue(),
timeRange
);
int count = orders.size();
int totalAmount = orders.stream()
.filter(order -> order.getCostPrice() != null)
.mapToInt(ApiOrderDO::getCostPrice)
.sum();
return new ApiOrderStatisticsDTO(count, totalAmount);
} catch (Exception e) {
log.error("[getTodayOrderStatistics] 获取今日API订单统计失败", e);
throw e;
}
}
}
\ No newline at end of file
......@@ -42,6 +42,12 @@
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-compute-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-trade</artifactId>
<version>${revision}</version>
</dependency>
......
......@@ -20,7 +20,7 @@ public class HomeIndexTopBarRespVO {
private Integer newOrdersCount;
/**
* 今日新增订单金额
* 今日新增订单金额(单位:元)
*/
private Integer newOrdersAmount;
private Double newOrdersAmount;
}
......@@ -9,10 +9,14 @@ 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.dto.ApiOrderPageReqDTO;
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.dto.ApiOrderStatisticsDTO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCallsRespVO;
import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO;
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.compute.api.order.ComputeOrderStatisticsApi;
import com.luhu.computility.module.compute.api.order.dto.ComputeOrderStatisticsDTO;
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.service.user.MemberUserService;
......@@ -45,6 +49,10 @@ public class HomeIndexServiceImpl implements HomeIndexService {
@Resource
TradeOrderQueryService tradeOrderQueryService;
@Resource
ApiHubOrderStatisticsApi apiHubOrderStatisticsApi;
@Resource
ComputeOrderStatisticsApi computeOrderStatisticsApi;
@Resource
ApiOrderApi apiOrderApi;
@Resource
ApiCallLogApi apiCallLogApi;
......@@ -252,27 +260,19 @@ public class HomeIndexServiceImpl implements HomeIndexService {
MemberUserPageReqVO memberUserPageReqVO = queryVO.setCreateTime(todayLocalDateTime);
List<MemberUserDO> userList = memberUserService.getUserList(memberUserPageReqVO);
TradeOrderPageReqVO computeOrderQueryVO = new TradeOrderPageReqVO();
computeOrderQueryVO.setCreateTime(todayLocalDateTime);
computeOrderQueryVO.setStatus(TradeOrderStatusEnum.COMPLETED.getStatus());
List<TradeOrderDO> computeOrderList = tradeOrderQueryService.getOrderList(computeOrderQueryVO);
// 获取今日已完成的算力资源订单统计
ComputeOrderStatisticsDTO computeStatistics = computeOrderStatisticsApi.getTodayOrderStatistics(todayLocalDateTime);
ApiOrderPageReqDTO apiOrderPageReqDTO = new ApiOrderPageReqDTO();
apiOrderPageReqDTO.setCreateTime(todayLocalDateTime);
List<ApiOrderRespDTO> apiOrderList = apiOrderApi.getPaidOrderList(todayLocalDateTime);
// 获取今日已支付的API订单统计
ApiOrderStatisticsDTO apiStatistics = apiHubOrderStatisticsApi.getTodayOrderStatistics(todayLocalDateTime);
HomeIndexTopBarRespVO homeIndexTopBarRespVO = new HomeIndexTopBarRespVO();
int newComputeOrdersAmount = computeOrderList.stream()
.mapToInt(TradeOrderDO::getPayPrice)
.sum();
int newApiOrdersAmount = apiOrderList.stream()
.mapToInt(ApiOrderRespDTO::getCostPrice)
.sum();
homeIndexTopBarRespVO.setNewUsersCount(userList.size());
homeIndexTopBarRespVO.setNewOrdersCount(computeOrderList.size() + apiOrderList.size());
homeIndexTopBarRespVO.setNewOrdersAmount(newComputeOrdersAmount + newApiOrdersAmount);
homeIndexTopBarRespVO.setNewOrdersCount(computeStatistics.getCount() + apiStatistics.getCount());
// 金额从分转换为元(除以100)
int totalAmountFen = computeStatistics.getTotalAmount() + apiStatistics.getTotalAmount();
homeIndexTopBarRespVO.setNewOrdersAmount(totalAmountFen / 100.0);
return homeIndexTopBarRespVO;
......
package com.luhu.computility.module.compute.api.order;
import com.luhu.computility.module.compute.api.order.dto.ComputeOrderStatisticsDTO;
import java.time.LocalDateTime;
/**
* 算力资源订单统计API接口
*
* @author jony
*/
public interface ComputeOrderStatisticsApi {
/**
* 获取今日已完成的算力资源订单统计
*
* @param timeRange 时间范围 [开始时间, 结束时间]
* @return 订单统计信息(数量和总金额)
*/
ComputeOrderStatisticsDTO getTodayOrderStatistics(LocalDateTime[] timeRange);
}
\ No newline at end of file
package com.luhu.computility.module.compute.api.order.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 算力资源订单统计DTO
*
* @author jony
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ComputeOrderStatisticsDTO {
/**
* 订单数量
*/
private Integer count;
/**
* 订单总金额(分)
*/
private Integer totalAmount;
}
\ No newline at end of file
package com.luhu.computility.module.compute.dal.mysql.resourceorder;
import java.time.LocalDateTime;
import java.util.*;
import com.luhu.computility.framework.common.pojo.PageResult;
......@@ -79,4 +80,11 @@ public interface ResourceOrderMapper extends BaseMapperX<ResourceOrderDO> {
.eq(ResourceOrderDO::getDeleted, false));
}
default List<ResourceOrderDO> selectListByStatusAndCreateTime(Integer status, LocalDateTime[] timeRange) {
return selectList(new LambdaQueryWrapperX<ResourceOrderDO>()
.eq(ResourceOrderDO::getStatus, status)
.betweenIfPresent(ResourceOrderDO::getCreateTime, timeRange)
.orderByDesc(ResourceOrderDO::getId));
}
}
\ No newline at end of file
package com.luhu.computility.module.compute.service.impl;
import com.luhu.computility.module.compute.api.order.ComputeOrderStatisticsApi;
import com.luhu.computility.module.compute.api.order.dto.ComputeOrderStatisticsDTO;
import com.luhu.computility.module.compute.dal.dataobject.resourceorder.ResourceOrderDO;
import com.luhu.computility.module.compute.dal.mysql.resourceorder.ResourceOrderMapper;
import com.luhu.computility.module.compute.enums.ResourceOrderStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* 算力资源订单统计API实现类
*
* @author jony
*/
@Service
@Slf4j
public class ComputeOrderStatisticsApiImpl implements ComputeOrderStatisticsApi {
@Resource
private ResourceOrderMapper resourceOrderMapper;
@Override
public ComputeOrderStatisticsDTO getTodayOrderStatistics(LocalDateTime[] timeRange) {
try {
List<ResourceOrderDO> orders = resourceOrderMapper.selectListByStatusAndCreateTime(
ResourceOrderStatus.PAID.getValue(),
timeRange
);
int count = orders.size();
int totalAmount = (int) orders.stream()
.mapToLong(order -> order.getPaymentPrice() != null ? order.getPaymentPrice() : 0L)
.sum();
return new ComputeOrderStatisticsDTO(count, totalAmount);
} catch (Exception e) {
log.error("[getTodayOrderStatistics] 获取今日算力资源订单统计失败", e);
throw e;
}
}
}
\ No newline at end of file
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