feat: 添加财务摘要接口,更新管理员抽奖模块和导航,优化权限管理逻辑

This commit is contained in:
2026-05-11 16:21:22 +08:00
parent f083b28fc6
commit b539bf0660
57 changed files with 2134 additions and 108 deletions

19
src/api/admin-audit.ts Normal file
View File

@@ -0,0 +1,19 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminAuditLogListData } from "@/types/api/admin-audit";
const A = `${API_V1_PREFIX}/admin`;
export async function getAdminAuditLogs(params?: {
page?: number;
per_page?: number;
module_code?: string;
action_code?: string;
operator_type?: string;
}): Promise<AdminAuditLogListData> {
return adminRequest.get<AdminAuditLogListData>(`${A}/audit-logs`, {
params,
});
}

View File

@@ -2,6 +2,7 @@ import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminDrawFinanceSummaryData } from "@/types/api/admin-draw-finance";
import type {
AdminDrawBatchesData,
AdminDrawListData,
@@ -30,6 +31,15 @@ export async function getAdminDrawResultBatches(drawId: number): Promise<AdminDr
return adminRequest.get<AdminDrawBatchesData>(`${A}/draws/${drawId}/result-batches`);
}
/** PRD §15.4:单期投注/派彩与结算批次摘要 */
export async function getAdminDrawFinanceSummary(
drawId: number,
): Promise<AdminDrawFinanceSummaryData> {
return adminRequest.get<AdminDrawFinanceSummaryData>(
`${A}/draws/${drawId}/finance-summary`,
);
}
export async function postAdminPublishResultBatch(
drawId: number,
batchId: number,

View File

@@ -0,0 +1,17 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminPlayerTicketItemsData } from "@/types/api/admin-player-tickets";
const A = `${API_V1_PREFIX}/admin`;
export async function getAdminPlayerTicketItems(
playerId: number,
params?: { page?: number; per_page?: number; draw_no?: string },
): Promise<AdminPlayerTicketItemsData> {
return adminRequest.get<AdminPlayerTicketItemsData>(
`${A}/players/${playerId}/ticket-items`,
{ params },
);
}

View File

@@ -0,0 +1,48 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminReconcileItemsData,
AdminReconcileJobCreateResponse,
AdminReconcileJobListData,
} from "@/types/api/admin-reconcile";
const A = `${API_V1_PREFIX}/admin`;
export async function getAdminReconcileJobs(params?: {
page?: number;
per_page?: number;
reconcile_type?: string;
}): Promise<AdminReconcileJobListData> {
return adminRequest.get<AdminReconcileJobListData>(`${A}/reconcile-jobs`, {
params,
});
}
export async function postAdminReconcileJob(body: {
reconcile_type: string;
period_start?: string | null;
period_end?: string | null;
items?: {
side_a_ref?: string | null;
side_b_ref?: string | null;
difference_amount?: number | null;
status?: string | null;
}[];
}): Promise<AdminReconcileJobCreateResponse> {
return adminRequest.post<AdminReconcileJobCreateResponse>(
`${A}/reconcile-jobs`,
body,
);
}
export async function getAdminReconcileJobItems(
jobId: number,
params?: { page?: number; per_page?: number },
): Promise<AdminReconcileItemsData> {
return adminRequest.get<AdminReconcileItemsData>(
`${A}/reconcile-jobs/${jobId}/items`,
{ params },
);
}

30
src/api/admin-reports.ts Normal file
View File

@@ -0,0 +1,30 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminReportJobCreateResponse,
AdminReportJobListData,
} from "@/types/api/admin-reports";
const A = `${API_V1_PREFIX}/admin`;
export async function getAdminReportJobs(params?: {
page?: number;
per_page?: number;
}): Promise<AdminReportJobListData> {
return adminRequest.get<AdminReportJobListData>(`${A}/report-jobs`, {
params,
});
}
export async function postAdminReportJob(body: {
report_type: string;
export_format?: "csv" | "xlsx";
filter_json?: Record<string, unknown> | null;
}): Promise<AdminReportJobCreateResponse> {
return adminRequest.post<AdminReportJobCreateResponse>(
`${A}/report-jobs`,
body,
);
}

View File

@@ -6,12 +6,21 @@ export {
getAdminTransferOrders,
getAdminWalletTransactions,
} from "@/api/admin-wallet";
export { getAdminReportJobs, postAdminReportJob } from "@/api/admin-reports";
export {
getAdminReconcileJobItems,
getAdminReconcileJobs,
postAdminReconcileJob,
} from "@/api/admin-reconcile";
export { getAdminAuditLogs } from "@/api/admin-audit";
export {
getAdminDraw,
getAdminDrawFinanceSummary,
getAdminDrawResultBatches,
getAdminDraws,
postAdminPublishResultBatch,
} from "@/api/admin-draws";
export { getAdminPlayerTicketItems } from "@/api/admin-player-tickets";
export type {
AdminAuthCaptchaResponse,
AdminAuthLoginRequest,