Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
d12c9ff3
authored
Sep 12, 2025
by
Jony.L
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首页统计3.0 顶部导航栏统计 当天的新增用户、新增订单、新增订单金额
parent
08c76da3
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
96 additions
and
22 deletions
+96
-22
computility-module-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/HomeIndexController.java
+8
-1
computility-module-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/vo/HomeIndexTopBarRespVO.java
+26
-0
computility-module-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexService.java
+3
-0
computility-module-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexServiceImpl.java
+59
-21
No files found.
computility-module-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/HomeIndexController.java
View file @
d12c9ff3
...
...
@@ -4,6 +4,7 @@ import com.luhu.computility.framework.common.pojo.CommonResult;
import
com.luhu.computility.module.apihub.service.apiorder.ApiOrderService
;
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.biz.service.home.HomeIndexService
;
import
com.luhu.computility.module.member.service.user.MemberUserService
;
...
...
@@ -25,7 +26,7 @@ import static com.luhu.computility.framework.common.pojo.CommonResult.success;
* @Date : 2025/9/10 16:30
* @VERSION v1.0
*/
@Tag
(
name
=
"管理后台 - 后台管理首页
E-chart
统计"
)
@Tag
(
name
=
"管理后台 - 后台管理首页统计"
)
@RestController
@RequestMapping
(
"/index/count"
)
@Validated
...
...
@@ -56,5 +57,11 @@ public class HomeIndexController {
public
CommonResult
<
List
<
HomeIndexApiCallsRespVO
>>
getApiCallsData
(
String
dateType
){
return
success
(
homeIndexService
.
getApiCallsData
(
dateType
));
}
@GetMapping
(
"/getTopBarData"
)
@Operation
(
summary
=
"获取首页顶部栏位数据"
)
public
CommonResult
<
HomeIndexTopBarRespVO
>
getTopBarData
(){
return
success
(
homeIndexService
.
getTopBarData
());
}
}
computility-module-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/vo/HomeIndexTopBarRespVO.java
0 → 100644
View file @
d12c9ff3
package
com
.
luhu
.
computility
.
module
.
biz
.
controller
.
admin
.
home
.
vo
;
import
lombok.Data
;
/**
* @Author: jony
* @Date : 2025/9/12 08:56
* @VERSION v1.0
*/
@Data
public
class
HomeIndexTopBarRespVO
{
/**
* 今日新增用户量
*/
private
Integer
newUsersCount
;
/**
* 今日新增订单
*/
private
Integer
newOrdersCount
;
/**
* 今日新增订单金额
*/
private
Integer
newOrdersAmount
;
}
computility-module-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexService.java
View file @
d12c9ff3
...
...
@@ -2,6 +2,7 @@ package com.luhu.computility.module.biz.service.home;
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
java.util.List
;
...
...
@@ -19,4 +20,6 @@ public interface HomeIndexService {
List
<
HomeIndexOrdersCountRespVO
>
getOrdersData
(
String
dateType
);
List
<
HomeIndexApiCallsRespVO
>
getApiCallsData
(
String
dateType
);
HomeIndexTopBarRespVO
getTopBarData
();
}
computility-module-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexServiceImpl.java
View file @
d12c9ff3
...
...
@@ -12,6 +12,7 @@ import com.luhu.computility.module.apihub.service.apicalllog.ApiCallLogService;
import
com.luhu.computility.module.apihub.service.apiorder.ApiOrderService
;
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.member.controller.admin.user.vo.MemberUserPageReqVO
;
import
com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO
;
...
...
@@ -146,67 +147,104 @@ public class HomeIndexServiceImpl implements HomeIndexService {
public
List
<
HomeIndexApiCallsRespVO
>
getApiCallsData
(
String
dateType
)
{
ApiCallLogPageReqVO
queryVO
=
new
ApiCallLogPageReqVO
();
// 统一查询截至"统计截止日"的所有API调用日志(日/月统计共用)
LocalDate
today
=
LocalDate
.
now
();
LocalDateTime
endTime
=
null
;
// 统计截止时间(所有调用时间<=该时间)
List
<
LocalDate
>
timeNodes
=
new
ArrayList
<>();
// 统计节点(7个:7天或7个月的结束日)
LocalDateTime
endTime
=
null
;
List
<
LocalDate
>
timeNodes
=
new
ArrayList
<>();
if
(
"d"
.
equals
(
dateType
)
||
ObjectUtil
.
isEmpty
(
dateType
))
{
// 日统计:近7天(截止到昨天
,避免今天未结束的数据不准
)
// 日统计:近7天(截止到昨天)
LocalDate
yesterday
=
today
.
minusDays
(
1
);
LocalDate
startDate
=
yesterday
.
minusDays
(
6
);
endTime
=
yesterday
.
atTime
(
23
,
59
,
59
,
999_999_999
);
// 生成7个日期节点(每天)
for
(
int
i
=
0
;
i
<
7
;
i
++)
{
timeNodes
.
add
(
startDate
.
plusDays
(
i
));
}
}
else
if
(
"m"
.
equals
(
dateType
))
{
// 月统计:近7个月(截止到上月末
,避免当月未结束的数据不准
)
YearMonth
lastMonth
=
YearMonth
.
from
(
today
.
minusMonths
(
1
));
// 上月
// 月统计:近7个月(截止到上月末)
YearMonth
lastMonth
=
YearMonth
.
from
(
today
.
minusMonths
(
1
));
endTime
=
lastMonth
.
atEndOfMonth
().
atTime
(
23
,
59
,
59
,
999_999_999
);
// 生成7个月份节点(每个月的最后一天)
for
(
int
i
=
6
;
i
>=
0
;
i
--)
{
// 从6个月前到上月
for
(
int
i
=
6
;
i
>=
0
;
i
--)
{
YearMonth
currentMonth
=
lastMonth
.
minusMonths
(
i
);
timeNodes
.
add
(
currentMonth
.
atEndOfMonth
());
// 当月最后一天(如2025-09-30)
timeNodes
.
add
(
currentMonth
.
atEndOfMonth
());
}
}
else
{
throw
new
ServiceException
(
"未传入正确的统计时间类型!"
);
}
// 查询截止到endTime的所有API调用日志(日/月统计共用此数据)
LocalDateTime
[]
allTimePeriod
=
{
LocalDate
.
of
(
1970
,
1
,
1
).
atStartOfDay
(),
endTime
};
queryVO
.
setCreateTime
(
allTimePeriod
);
List
<
ApiCallLogDO
>
apiCallLogList
=
apiCallLogService
.
getApiCallLogList
(
queryVO
);
// 按统计节点计算API调用次数(
每个节点对应的调用量
)
// 按统计节点计算API调用次数(
核心修改:非累计
)
Map
<
LocalDate
,
Long
>
callsMap
=
new
HashMap
<>();
for
(
LocalDate
node
:
timeNodes
)
{
// 统计逻辑:
// - 日统计:调用时间的日期 == 当前节点日期
// - 月统计:调用时间的日期 <= 当前节点(当月最后一天)
long
count
=
apiCallLogList
.
stream
()
.
filter
(
log
->
log
.
getCreateTime
().
toLocalDate
().
isBefore
(
node
.
plusDays
(
1
)))
.
filter
(
log
->
{
LocalDate
logDate
=
log
.
getCreateTime
().
toLocalDate
();
if
(
"d"
.
equals
(
dateType
)
||
ObjectUtil
.
isEmpty
(
dateType
))
{
return
logDate
.
isEqual
(
node
);
}
else
{
return
YearMonth
.
from
(
logDate
).
equals
(
YearMonth
.
from
(
node
));
}
})
.
count
();
callsMap
.
put
(
node
,
count
);
}
// 构建结果列表
(格式化日期显示)
// 构建结果列表
List
<
HomeIndexApiCallsRespVO
>
resultList
=
new
ArrayList
<>();
for
(
LocalDate
node
:
timeNodes
)
{
HomeIndexApiCallsRespVO
respVO
=
new
HomeIndexApiCallsRespVO
();
// 日统计显示"yyyy-MM-dd",月统计显示"yyyy-MM"
respVO
.
setCountDate
(
"d"
.
equals
(
dateType
)
respVO
.
setCountDate
(
"d"
.
equals
(
dateType
)
||
ObjectUtil
.
isEmpty
(
dateType
)
?
node
.
toString
()
:
node
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM"
)));
respVO
.
setCallsCount
(
callsMap
.
get
(
node
).
intValue
());
resultList
.
add
(
respVO
);
}
// 按时间升序排序(从最早到最近)
resultList
.
sort
(
Comparator
.
comparing
(
HomeIndexApiCallsRespVO:
:
getCountDate
));
return
resultList
;
}
@Override
public
HomeIndexTopBarRespVO
getTopBarData
()
{
LocalDate
today
=
LocalDate
.
now
();
LocalDateTime
[]
todayLocalDateTime
=
new
LocalDateTime
[
2
];
todayLocalDateTime
[
0
]
=
today
.
atStartOfDay
();
todayLocalDateTime
[
1
]
=
today
.
atTime
(
23
,
59
,
59
,
999_999_999
);
MemberUserPageReqVO
queryVO
=
new
MemberUserPageReqVO
();
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
);
ApiOrderPageReqVO
apiOrderPageReqVO
=
new
ApiOrderPageReqVO
();
apiOrderPageReqVO
.
setCreateTime
(
todayLocalDateTime
);
apiOrderPageReqVO
.
setStatus
(
ApiOrderStatus
.
PAID
.
getValue
());
List
<
ApiOrderDO
>
apiOrderList
=
apiOrderService
.
getOrderList
(
apiOrderPageReqVO
);
HomeIndexTopBarRespVO
homeIndexTopBarRespVO
=
new
HomeIndexTopBarRespVO
();
int
newComputeOrdersAmount
=
computeOrderList
.
stream
()
.
mapToInt
(
TradeOrderDO:
:
getPayPrice
)
.
sum
();
int
newApiOrdersAmount
=
apiOrderList
.
stream
()
.
mapToInt
(
ApiOrderDO:
:
getCostPrice
)
.
sum
();
homeIndexTopBarRespVO
.
setNewUsersCount
(
userList
.
size
());
homeIndexTopBarRespVO
.
setNewOrdersCount
(
computeOrderList
.
size
()+
apiOrderList
.
size
());
homeIndexTopBarRespVO
.
setNewOrdersAmount
(
newComputeOrdersAmount
+
newApiOrdersAmount
);
return
homeIndexTopBarRespVO
;
}
@Override
public
List
<
HomeIndexOrdersCountRespVO
>
getOrdersData
(
String
dateType
)
{
// 统一查询截至"统计截止日"的所有订单(日/月统计共用)
...
...
@@ -237,7 +275,7 @@ public class HomeIndexServiceImpl implements HomeIndexService {
throw
new
ServiceException
(
"未传入正确的统计时间类型!"
);
}
//
2.
查询截止到endTime的所有订单(日/月统计共用)
// 查询截止到endTime的所有订单(日/月统计共用)
LocalDateTime
[]
allTimePeriod
=
{
LocalDate
.
of
(
1970
,
1
,
1
).
atStartOfDay
(),
endTime
};
// 算力订单(已完成)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment