refactor: 合并多语言支持的显示名称字段,优化奖池手动爆发功能的返回数据结构,增强管理端权限控制

This commit is contained in:
2026-05-25 14:31:24 +08:00
parent 7d01e5c47e
commit ddedef824e
101 changed files with 3033 additions and 641 deletions

View File

@@ -1,10 +1,9 @@
import { Metadata } from "next";
import { buildPageMetadata } from "@/lib/page-metadata";
import { AccountSettingsConsole } from "@/modules/account/account-settings-console";
export const metadata: Metadata = {
title: "账号设置 - 管理后台",
};
export const metadata: Metadata = buildPageMetadata("common", "accountSettings");
export default function AdminAccountPage() {
return <AccountSettingsConsole />;

View File

@@ -0,0 +1,12 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_RISK_ACCESS_ANY } from "@/lib/admin-prd";
export default function AdminDrawRiskLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<AdminPermissionGate requiredAny={PRD_RISK_ACCESS_ANY}>{children}</AdminPermissionGate>
);
}

View File

@@ -1,5 +1,7 @@
import { Suspense } from "react";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_JACKPOT_ACCESS_ANY } from "@/lib/admin-prd";
import { JackpotConfigScreen } from "@/modules/jackpot/jackpot-config-screen";
import { RulesPageShell } from "@/modules/rules/rules-page-shell";
import { buildPageMetadata } from "@/lib/page-metadata";
@@ -10,9 +12,11 @@ export const metadata: Metadata = buildPageMetadata("jackpot", "configTitle");
export default function AdminJackpotPage() {
return (
<RulesPageShell>
<Suspense fallback={<p className="text-sm text-muted-foreground">Loading</p>}>
<JackpotConfigScreen />
</Suspense>
<AdminPermissionGate requiredAny={PRD_JACKPOT_ACCESS_ANY}>
<Suspense fallback={<p className="text-sm text-muted-foreground">Loading</p>}>
<JackpotConfigScreen />
</Suspense>
</AdminPermissionGate>
</RulesPageShell>
);
}

View File

@@ -1,4 +1,6 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { PRD_DASHBOARD_ACCESS_ANY } from "@/lib/admin-prd";
import { DashboardConsole } from "@/modules/dashboard/dashboard-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("dashboard", "title");
export default function AdminDashboardPage() {
return (
<ModuleScaffold className="max-w-7xl">
<DashboardConsole />
<AdminPermissionGate requiredAny={PRD_DASHBOARD_ACCESS_ANY}>
<DashboardConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,4 +1,6 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { PRD_PLAYERS_ACCESS_ANY } from "@/lib/admin-prd";
import { PlayersConsole } from "@/modules/players/players-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("players", "title");
export default function AdminPlayersPage() {
return (
<ModuleScaffold>
<PlayersConsole />
<AdminPermissionGate requiredAny={PRD_PLAYERS_ACCESS_ANY}>
<PlayersConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,4 +1,6 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { PRD_REPORTS_VIEW_ACCESS_ANY } from "@/lib/admin-prd";
import { buildPageMetadata } from "@/lib/page-metadata";
import { ReportsConsole } from "@/modules/reports/reports-console";
import type { Metadata } from "next";
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("reports", "title");
export default function AdminReportsPage() {
return (
<ModuleScaffold>
<ReportsConsole />
<AdminPermissionGate requiredAny={PRD_REPORTS_VIEW_ACCESS_ANY}>
<ReportsConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,3 +1,5 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_RISK_CAP_ACCESS_ANY } from "@/lib/admin-prd";
import { RiskCapDocScreen } from "@/modules/config/doc/risk-cap-doc-screen";
import { RulesPageShell } from "@/modules/rules/rules-page-shell";
import { buildPageMetadata } from "@/lib/page-metadata";
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("config", "nav.riskCapTitle"
export default function AdminRiskCapPage() {
return (
<RulesPageShell>
<RiskCapDocScreen />
<AdminPermissionGate requiredAny={PRD_RISK_CAP_ACCESS_ANY}>
<RiskCapDocScreen />
</AdminPermissionGate>
</RulesPageShell>
);
}

View File

@@ -1,4 +1,6 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { PRD_TICKETS_ACCESS_ANY } from "@/lib/admin-prd";
import { PlayerTicketsConsole } from "@/modules/tickets/player-tickets-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -8,7 +10,9 @@ export const metadata: Metadata = buildPageMetadata("tickets", "title");
export default function AdminTicketsPage() {
return (
<ModuleScaffold>
<PlayerTicketsConsole />
<AdminPermissionGate requiredAny={PRD_TICKETS_ACCESS_ANY}>
<PlayerTicketsConsole />
</AdminPermissionGate>
</ModuleScaffold>
);
}

View File

@@ -1,3 +1,5 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_WALLET_PLAYER_ACCESS_ANY } from "@/lib/admin-prd";
import { PlayerWalletPanel } from "@/modules/wallet/wallet-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -5,5 +7,9 @@ import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("wallet", "playerWalletQuery");
export default function AdminWalletPlayerPage() {
return <PlayerWalletPanel />;
return (
<AdminPermissionGate requiredAny={PRD_WALLET_PLAYER_ACCESS_ANY}>
<PlayerWalletPanel />
</AdminPermissionGate>
);
}

View File

@@ -1,3 +1,5 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_WALLET_TX_ACCESS_ANY } from "@/lib/admin-prd";
import { WalletTxnsPanel } from "@/modules/wallet/wallet-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -5,5 +7,9 @@ import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("wallet", "walletTransactions");
export default function AdminWalletTransactionsPage() {
return <WalletTxnsPanel />;
return (
<AdminPermissionGate requiredAny={PRD_WALLET_TX_ACCESS_ANY}>
<WalletTxnsPanel />
</AdminPermissionGate>
);
}

View File

@@ -1,3 +1,5 @@
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_WALLET_TRANSFER_ACCESS_ANY } from "@/lib/admin-prd";
import { TransferOrdersPanel } from "@/modules/wallet/wallet-console";
import { buildPageMetadata } from "@/lib/page-metadata";
import type { Metadata } from "next";
@@ -5,5 +7,9 @@ import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("wallet", "transferOrders");
export default function AdminWalletTransferOrdersPage() {
return <TransferOrdersPanel />;
return (
<AdminPermissionGate requiredAny={PRD_WALLET_TRANSFER_ACCESS_ANY}>
<TransferOrdersPanel />
</AdminPermissionGate>
);
}

View File

@@ -67,11 +67,12 @@
--border: #d8e6fb;
--input: #d8e6fb;
--ring: #7aa7ee;
--chart-1: oklch(0.87 0 0);
--chart-2: oklch(0.556 0 0);
--chart-3: oklch(0.439 0 0);
--chart-4: oklch(0.371 0 0);
--chart-5: oklch(0.269 0 0);
/* 仪表盘 / 图表:彩色序列(勿用 chroma=0 灰阶) */
--chart-1: oklch(0.52 0.19 264);
--chart-2: oklch(0.62 0.17 162);
--chart-3: oklch(0.72 0.16 75);
--chart-4: oklch(0.56 0.22 303);
--chart-5: oklch(0.58 0.2 25);
--radius: 0.625rem;
--sidebar: #01266c;
--sidebar-foreground: #f8fbff;
@@ -102,11 +103,11 @@
--border: rgb(148 180 220 / 24%);
--input: rgb(148 180 220 / 28%);
--ring: #77a7ff;
--chart-1: oklch(0.87 0 0);
--chart-2: oklch(0.556 0 0);
--chart-3: oklch(0.439 0 0);
--chart-4: oklch(0.371 0 0);
--chart-5: oklch(0.269 0 0);
--chart-1: oklch(0.7 0.14 264);
--chart-2: oklch(0.72 0.13 162);
--chart-3: oklch(0.78 0.13 75);
--chart-4: oklch(0.68 0.17 303);
--chart-5: oklch(0.7 0.16 25);
--sidebar: #01266c;
--sidebar-foreground: #f8fbff;
--sidebar-primary: #e60012;