feat: 增加管理端多语言与风控/报表/奖池操作能力
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user