feat: 更新管理员导航,添加结算和奖池模块,并优化活动匹配逻辑

This commit is contained in:
2026-05-11 15:35:41 +08:00
parent 0103d25426
commit f083b28fc6
19 changed files with 1226 additions and 5 deletions

View File

@@ -0,0 +1,10 @@
import { JackpotSubNav } from "@/modules/jackpot/jackpot-subnav";
export default function AdminJackpotLayout({ children }: { children: React.ReactNode }) {
return (
<div className="w-full max-w-none px-1">
<JackpotSubNav />
{children}
</div>
);
}

View File

@@ -0,0 +1,19 @@
import { JackpotPoolsConsole } from "@/modules/jackpot/jackpot-pools-console";
import { jackpotModuleMeta } from "@/modules/jackpot/meta";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: `奖池配置 · ${jackpotModuleMeta.title}`,
};
export default function AdminJackpotPoolsPage() {
return (
<>
<div className="mx-auto mb-6 max-w-5xl">
<h1 className="text-lg font-semibold tracking-tight">{jackpotModuleMeta.title}</h1>
<p className="text-muted-foreground mt-1 text-sm">{jackpotModuleMeta.description}</p>
</div>
<JackpotPoolsConsole />
</>
);
}

View File

@@ -0,0 +1,19 @@
import { JackpotRecordsConsole } from "@/modules/jackpot/jackpot-records-console";
import { jackpotModuleMeta } from "@/modules/jackpot/meta";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: `Jackpot 记录 · ${jackpotModuleMeta.title}`,
};
export default function AdminJackpotRecordsPage() {
return (
<>
<div className="mx-auto mb-6 max-w-5xl">
<h1 className="text-lg font-semibold tracking-tight">Jackpot </h1>
<p className="text-muted-foreground mt-1 text-sm"></p>
</div>
<JackpotRecordsConsole />
</>
);
}

View File

@@ -0,0 +1,19 @@
import { SettlementBatchDetailsConsole } from "@/modules/settlement/settlement-batch-details-console";
import { settlementModuleMeta } from "@/modules/settlement/meta";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: `结算明细 · ${settlementModuleMeta.title}`,
};
export default async function AdminSettlementBatchDetailsPage(props: {
params: Promise<{ batchId: string }>;
}) {
const { batchId } = await props.params;
const id = Number.parseInt(batchId, 10);
if (!Number.isFinite(id) || id < 1) {
return <p className="text-destructive text-sm"> ID</p>;
}
return <SettlementBatchDetailsConsole batchId={id} />;
}

View File

@@ -0,0 +1,11 @@
import { SettlementBatchesConsole } from "@/modules/settlement/settlement-batches-console";
import { settlementModuleMeta } from "@/modules/settlement/meta";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: settlementModuleMeta.title,
};
export default function AdminSettlementBatchesPage() {
return <SettlementBatchesConsole />;
}