feat: 增加管理端多语言与风控/报表/奖池操作能力

This commit is contained in:
2026-05-18 15:08:34 +08:00
parent afffa4e508
commit 49a4caf01e
31 changed files with 918 additions and 115 deletions

View File

@@ -22,6 +22,7 @@ export type AdminJackpotPoolUpdateBody = Partial<{
payout_rate: number;
force_trigger_draw_gap: number;
min_bet_amount: number;
combo_trigger_play_codes: string[];
status: number;
}>;
@@ -32,6 +33,13 @@ export async function putAdminJackpotPool(
return adminRequest.put<AdminJackpotPoolRow>(`${A}/jackpot/pools/${poolId}`, body);
}
export async function postAdminJackpotManualBurst(
poolId: number,
body: { draw_id: number; amount?: number },
): Promise<{ current_amount: number; burst_amount: number; log_id: number | null }> {
return adminRequest.post(`${A}/jackpot/pools/${poolId}/manual-burst`, body);
}
export type AdminJackpotLogsQuery = {
page?: number;
per_page?: number;

View File

@@ -1,4 +1,6 @@
import { adminRequest } from "@/lib/admin-http";
import { adminHttp, adminRequest } from "@/lib/admin-http";
import { withAdminAuthHeader } from "@/lib/admin-auth";
import { withAdminLocaleHeaders } from "@/lib/admin-locale";
import { API_V1_PREFIX } from "./paths";
@@ -21,6 +23,7 @@ export async function getAdminReportJobs(params?: {
export async function postAdminReportJob(body: {
report_type: string;
export_format?: "csv" | "xlsx";
parameters?: Record<string, unknown> | null;
filter_json?: Record<string, unknown> | null;
}): Promise<AdminReportJobCreateResponse> {
return adminRequest.post<AdminReportJobCreateResponse>(
@@ -28,3 +31,14 @@ export async function postAdminReportJob(body: {
body,
);
}
export async function downloadAdminReportJob(jobId: number): Promise<Blob> {
const res = await adminHttp.request<Blob>(
withAdminAuthHeader(withAdminLocaleHeaders({
url: `${A}/report-jobs/${jobId}/download`,
method: "GET",
responseType: "blob",
})),
);
return res.data;
}

View File

@@ -5,6 +5,7 @@ import { API_V1_PREFIX } from "./paths";
import type {
AdminRiskLockLogListData,
AdminRiskPoolListData,
AdminRiskPoolRow,
AdminRiskPoolShowData,
} from "@/types/api/admin-risk";
@@ -14,6 +15,8 @@ export type AdminRiskPoolListQuery = {
page?: number;
per_page?: number;
sold_out_only?: boolean;
high_risk_only?: boolean;
normalized_number?: string;
sort?: "usage_desc" | "locked_desc" | "remaining_asc" | "number_asc";
};
@@ -26,11 +29,33 @@ export async function getAdminRiskPools(
page: q.page,
per_page: q.per_page,
sold_out_only: q.sold_out_only === true ? 1 : undefined,
high_risk_only: q.high_risk_only === true ? 1 : undefined,
normalized_number: q.normalized_number || undefined,
sort: q.sort,
},
});
}
export async function postAdminRiskPoolManualClose(
drawId: number,
number4d: string,
): Promise<AdminRiskPoolRow> {
const encoded = encodeURIComponent(number4d);
return adminRequest.post<AdminRiskPoolRow>(
`${A}/draws/${drawId}/risk-pools/${encoded}/manual-close`,
);
}
export async function postAdminRiskPoolRecover(
drawId: number,
number4d: string,
): Promise<AdminRiskPoolRow> {
const encoded = encodeURIComponent(number4d);
return adminRequest.post<AdminRiskPoolRow>(
`${A}/draws/${drawId}/risk-pools/${encoded}/recover`,
);
}
export type AdminRiskLockLogQuery = {
page?: number;
per_page?: number;