Files
lotteryAdmin/src/modules/_config/admin-nav.ts

152 lines
3.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 导航与路由的单一事实来源;新增业务模块时先改这里,再增加 `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"
| "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: "admin_users",
label: "管理列表",
href: "/admin/admin-users",
requiredAny: ["prd.admin_user.manage"],
},
{
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: "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: "settings", label: "系统设置", href: "/admin/settings" },
];