169 lines
4.0 KiB
TypeScript
169 lines
4.0 KiB
TypeScript
/**
|
||
* 导航与路由的单一事实来源;新增业务模块时先改这里,再增加 `app/admin/(shell)/.../page.tsx`。
|
||
*
|
||
* `requiredAny` 与登录接口返回的 `admin.permissions`(Laravel `prd.*`)对齐;缺省表示任意已登录用户可见。
|
||
*/
|
||
export const ADMIN_BASE = "/admin" as const;
|
||
|
||
export type AdminNavItem = {
|
||
label: string;
|
||
href: string;
|
||
segment:
|
||
| "dashboard"
|
||
| "service_desk"
|
||
| "players"
|
||
| "draws"
|
||
| "config"
|
||
| "tickets"
|
||
| "wallet"
|
||
| "risk"
|
||
| "settings"
|
||
| "settlement"
|
||
| "jackpot"
|
||
| "reports"
|
||
| "reconcile"
|
||
| "audit"
|
||
| "admin_users";
|
||
activeMatchPrefix?: string;
|
||
/** 拥有任一权限 slug 即显示侧栏项 */
|
||
requiredAny?: readonly string[];
|
||
};
|
||
|
||
export const adminShellNavItems: AdminNavItem[] = [
|
||
{ segment: "dashboard", label: "仪表盘", href: "/admin" },
|
||
{
|
||
segment: "draws",
|
||
label: "开奖",
|
||
href: "/admin/draws",
|
||
requiredAny: ["prd.draw_result.manage", "prd.draw_result.view"],
|
||
},
|
||
{
|
||
segment: "config",
|
||
label: "运营配置",
|
||
href: "/admin/config",
|
||
requiredAny: [
|
||
"prd.play_switch.manage",
|
||
"prd.odds.manage",
|
||
"prd.risk_cap.manage",
|
||
"prd.risk_cap.view",
|
||
"prd.rebate.manage",
|
||
"prd.rebate.view",
|
||
"prd.jackpot.manage",
|
||
"prd.jackpot.view",
|
||
],
|
||
},
|
||
{
|
||
segment: "risk",
|
||
label: "风控",
|
||
href: "/admin/risk",
|
||
requiredAny: ["prd.draw_result.view", "prd.draw_result.manage"],
|
||
},
|
||
{
|
||
segment: "settlement",
|
||
label: "结算",
|
||
href: "/admin/settlement-batches",
|
||
requiredAny: [
|
||
"prd.payout.manage",
|
||
"prd.payout.review",
|
||
"prd.payout.view",
|
||
],
|
||
},
|
||
{
|
||
segment: "jackpot",
|
||
label: "Jackpot",
|
||
href: "/admin/jackpot/pools",
|
||
activeMatchPrefix: "/admin/jackpot",
|
||
requiredAny: ["prd.jackpot.manage", "prd.jackpot.view"],
|
||
},
|
||
{
|
||
segment: "wallet",
|
||
label: "钱包流水",
|
||
href: "/admin/wallet/transactions",
|
||
activeMatchPrefix: "/admin/wallet",
|
||
requiredAny: [
|
||
"prd.wallet_reconcile.manage",
|
||
"prd.wallet_reconcile.view",
|
||
"prd.wallet_reconcile.view_cs",
|
||
"prd.users.manage",
|
||
"prd.users.view_finance",
|
||
"prd.users.view_cs",
|
||
],
|
||
},
|
||
{
|
||
segment: "reconcile",
|
||
label: "对账",
|
||
href: "/admin/reconcile",
|
||
requiredAny: [
|
||
"prd.wallet_reconcile.manage",
|
||
"prd.wallet_reconcile.view",
|
||
"prd.wallet_reconcile.view_cs",
|
||
],
|
||
},
|
||
{
|
||
segment: "tickets",
|
||
label: "玩家注单",
|
||
href: "/admin/tickets",
|
||
requiredAny: [
|
||
"prd.users.view_cs",
|
||
"prd.users.manage",
|
||
"prd.users.view_finance",
|
||
"prd.draw_result.view",
|
||
"prd.draw_result.manage",
|
||
"prd.payout.view",
|
||
"prd.payout.review",
|
||
"prd.payout.manage",
|
||
"prd.report.player",
|
||
],
|
||
},
|
||
{
|
||
segment: "players",
|
||
label: "玩家查询",
|
||
href: "/admin/players",
|
||
requiredAny: [
|
||
"prd.users.manage",
|
||
"prd.users.view_finance",
|
||
"prd.users.view_cs",
|
||
],
|
||
},
|
||
{
|
||
segment: "service_desk",
|
||
label: "客服 / 财务",
|
||
href: "/admin/service-desk",
|
||
requiredAny: [
|
||
"prd.users.view_cs",
|
||
"prd.users.view_finance",
|
||
"prd.users.manage",
|
||
"prd.wallet_reconcile.view_cs",
|
||
"prd.wallet_reconcile.view",
|
||
"prd.wallet_reconcile.manage",
|
||
"prd.report.finance",
|
||
"prd.report.player",
|
||
"prd.draw_result.view",
|
||
],
|
||
},
|
||
{
|
||
segment: "reports",
|
||
label: "报表导出",
|
||
href: "/admin/reports",
|
||
requiredAny: [
|
||
"prd.report.all",
|
||
"prd.report.risk",
|
||
"prd.report.finance",
|
||
"prd.report.player",
|
||
],
|
||
},
|
||
{
|
||
segment: "audit",
|
||
label: "审计日志",
|
||
href: "/admin/audit-logs",
|
||
requiredAny: ["prd.audit.all", "prd.audit.self", "prd.audit.finance"],
|
||
},
|
||
{
|
||
segment: "admin_users",
|
||
label: "管理员权限",
|
||
href: "/admin/admin-users",
|
||
requiredAny: ["prd.admin_user.manage"],
|
||
},
|
||
{ segment: "settings", label: "系统设置", href: "/admin/settings" },
|
||
];
|