diff --git a/backend/services/mining-admin-service/src/api/controllers/dashboard.controller.ts b/backend/services/mining-admin-service/src/api/controllers/dashboard.controller.ts index 50b225d6..33cc365f 100644 --- a/backend/services/mining-admin-service/src/api/controllers/dashboard.controller.ts +++ b/backend/services/mining-admin-service/src/api/controllers/dashboard.controller.ts @@ -30,10 +30,11 @@ export class DashboardController { return { totalUsers: raw.users?.total || 0, adoptedUsers: raw.users?.adopted || 0, + totalTrees: raw.contribution?.totalTrees || 0, networkEffectiveContribution: raw.contribution?.effectiveContribution || '0', networkTotalContribution: raw.contribution?.totalContribution || '0', - networkPendingContribution: raw.contribution?.teamLevelContribution || '0', - networkBonusPendingContribution: raw.contribution?.teamBonusContribution || '0', + networkLevelPending: raw.contribution?.teamLevelContribution || '0', + networkBonusPending: raw.contribution?.teamBonusContribution || '0', totalDistributed: raw.mining?.totalMined || '0', totalBurned: raw.mining?.latestDailyStat?.totalBurned || '0', circulationPool: raw.trading?.circulationPool?.totalShares || '0', diff --git a/backend/services/mining-admin-service/src/application/services/dashboard.service.ts b/backend/services/mining-admin-service/src/application/services/dashboard.service.ts index 199a558f..745b9d4a 100644 --- a/backend/services/mining-admin-service/src/application/services/dashboard.service.ts +++ b/backend/services/mining-admin-service/src/application/services/dashboard.service.ts @@ -112,22 +112,26 @@ export class DashboardService { * 获取算力统计 */ private async getContributionStats() { - const accounts = await this.prisma.syncedContributionAccount.aggregate({ - _sum: { - totalContribution: true, - effectiveContribution: true, - personalContribution: true, - teamLevelContribution: true, - teamBonusContribution: true, - }, - _count: true, - }); - - const systemContributions = - await this.prisma.syncedSystemContribution.aggregate({ + const [accounts, systemContributions, adoptionStats] = await Promise.all([ + this.prisma.syncedContributionAccount.aggregate({ + _sum: { + totalContribution: true, + effectiveContribution: true, + personalContribution: true, + teamLevelContribution: true, + teamBonusContribution: true, + }, + _count: true, + }), + this.prisma.syncedSystemContribution.aggregate({ _sum: { contributionBalance: true }, _count: true, - }); + }), + this.prisma.syncedAdoption.aggregate({ + _sum: { treeCount: true }, + _count: true, + }), + ]); return { totalAccounts: accounts._count, @@ -143,6 +147,8 @@ export class DashboardService { systemAccounts: systemContributions._count, systemContribution: systemContributions._sum.contributionBalance?.toString() || '0', + totalAdoptions: adoptionStats._count, + totalTrees: adoptionStats._sum.treeCount || 0, }; } diff --git a/frontend/mining-admin-web/src/features/dashboard/components/price-overview.tsx b/frontend/mining-admin-web/src/features/dashboard/components/price-overview.tsx index 11cc8bec..325a5b8b 100644 --- a/frontend/mining-admin-web/src/features/dashboard/components/price-overview.tsx +++ b/frontend/mining-admin-web/src/features/dashboard/components/price-overview.tsx @@ -44,30 +44,33 @@ export function PriceOverview() {
-
-
-

流通池

-

{formatCompactNumber(stats?.circulationPool)}

-
+

有效算力

{formatCompactNumber(stats?.networkEffectiveContribution)}

-

待解锁

-

- {formatCompactNumber( - String( - Number(stats?.networkPendingContribution || 0) + - Number(stats?.networkBonusPendingContribution || 0) - ) - )} -

+

层级待解锁

+

{formatCompactNumber(stats?.networkLevelPending)}

+
+
+

团队待解锁

+

{formatCompactNumber(stats?.networkBonusPending)}

+
+
+
+
+

认种树总数

+

{stats?.totalTrees?.toLocaleString() ?? '-'}

认种用户

{stats?.adoptedUsers?.toLocaleString() ?? '-'}

+
+

流通池

+

{formatCompactNumber(stats?.circulationPool)}

+
diff --git a/frontend/mining-admin-web/src/features/dashboard/components/stats-cards.tsx b/frontend/mining-admin-web/src/features/dashboard/components/stats-cards.tsx index bbd7a6cc..1ec8b321 100644 --- a/frontend/mining-admin-web/src/features/dashboard/components/stats-cards.tsx +++ b/frontend/mining-admin-web/src/features/dashboard/components/stats-cards.tsx @@ -48,15 +48,16 @@ export function StatsCards() { { title: '全网算力', value: formatCompactNumber(stats?.networkEffectiveContribution), - subValue: `待解锁: ${formatCompactNumber( - String( - Number(stats?.networkPendingContribution || 0) + - Number(stats?.networkBonusPendingContribution || 0) - ) - )}`, + subValue: `层级待解锁: ${formatCompactNumber(stats?.networkLevelPending)} | 团队待解锁: ${formatCompactNumber(stats?.networkBonusPending)}`, icon: Activity, iconColor: 'text-blue-500', }, + { + title: '认种树总数', + value: formatNumber(stats?.totalTrees), + icon: Activity, + iconColor: 'text-emerald-500', + }, { title: '已分配积分股', value: formatCompactNumber(stats?.totalDistributed), diff --git a/frontend/mining-admin-web/src/types/dashboard.ts b/frontend/mining-admin-web/src/types/dashboard.ts index ffbd1bd4..9f674daa 100644 --- a/frontend/mining-admin-web/src/types/dashboard.ts +++ b/frontend/mining-admin-web/src/types/dashboard.ts @@ -1,10 +1,11 @@ export interface DashboardStats { totalUsers: number; adoptedUsers: number; + totalTrees: number; networkEffectiveContribution: string; networkTotalContribution: string; - networkPendingContribution: string; - networkBonusPendingContribution: string; + networkLevelPending: string; + networkBonusPending: string; totalDistributed: string; totalBurned: string; circulationPool: string;