Files
web/src/actions/dashboard.ts

80 lines
1.8 KiB
TypeScript
Raw Normal View History

2025-06-07 11:28:36 +08:00
'use server'
2025-06-23 18:59:31 +08:00
import {ApiResponse, ExtraResp} from '@/lib/api'
2025-06-07 11:28:36 +08:00
import {callByUser} from './base'
2025-06-23 18:59:31 +08:00
import {listAnnouncements} from './announcement'
2025-06-07 11:28:36 +08:00
type statisticsResourceUsageReq = {
time_start?: Date
time_end?: Date
2025-06-07 11:28:36 +08:00
}
type statisticsResourceUsageResp = {
date: string
2025-06-07 11:28:36 +08:00
count: number
}[]
export async function statisticsResourceUsage(props: statisticsResourceUsageReq) {
return await callByUser<statisticsResourceUsageResp>('/api/resource/statistics/usage', props)
2025-06-23 18:59:31 +08:00
}
export async function statisticsResourceFree() {
return await callByUser<{
long: {
resource_count: number
resource_daily_free_sum: number
resource_quota_sum: number
2025-06-23 18:59:31 +08:00
}
short: {
resource_count: number
resource_daily_free_sum: number
resource_quota_sum: number
2025-06-23 18:59:31 +08:00
}
}>('/api/resource/statistics/free')
}
type listInitializationResp = {
anno: ExtraResp<typeof listAnnouncements>
free: ExtraResp<typeof statisticsResourceFree>
usage: ExtraResp<typeof statisticsResourceUsage>
2025-06-23 18:59:31 +08:00
}
export async function listInitialization(): Promise<ApiResponse<listInitializationResp>> {
const free = await statisticsResourceFree()
if (!free.success) {
return {
success: false,
status: 500,
message: '套餐剩余数据获取失败',
}
}
const anno = await listAnnouncements({
page: 1,
size: 5,
})
if (!anno.success) {
return {
success: false,
status: 500,
message: '公告数据获取失败',
}
}
const usage = await statisticsResourceUsage({})
2025-06-23 18:59:31 +08:00
if (!usage.success) {
return {
success: false,
status: 500,
message: '套餐用量数据获取失败',
}
}
const data = {
anno: anno.data,
free: free.data,
usage: usage.data,
}
return {
success: true,
data: data,
}
2025-06-07 11:28:36 +08:00
}