refactor(api): 简化 API 路径定义,移除 API_V1_PREFIX

更新多个 API 文件,将 API_V1_PREFIX 替换为直接使用 /admin 路径。
简化 API 路径定义逻辑,提升代码可读性与维护性。
统一后台管理接口的路由配置,确保各管理端 API 端点保持一致性。
This commit is contained in:
2026-05-29 10:29:11 +08:00
parent 27727f6371
commit d90ca3c66b
24 changed files with 31 additions and 48 deletions

View File

@@ -1,10 +1,9 @@
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`;
const A = `/admin`;
export async function getAdminAuditLogs(params?: {
page?: number;

View File

@@ -10,7 +10,6 @@ import type {
} from "@/types/api/admin-auth";
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "@/api/paths";
/** `GET /api/v1/admin/auth/captcha`(无需 Token */
export async function getAdminCaptcha(): Promise<AdminAuthCaptchaResponse | null> {
@@ -19,7 +18,7 @@ export async function getAdminCaptcha(): Promise<AdminAuthCaptchaResponse | null
}
try {
return await publicAdminRequest<AdminAuthCaptchaResponse>({
url: `${API_V1_PREFIX}/admin/auth/captcha`,
url: `/admin/auth/captcha`,
method: "GET",
});
} catch {
@@ -32,7 +31,7 @@ export async function postAdminLogin(
body: AdminAuthLoginRequest,
): Promise<AdminAuthLoginResponse> {
return publicAdminRequest<AdminAuthLoginResponse>({
url: `${API_V1_PREFIX}/admin/auth/login`,
url: `/admin/auth/login`,
method: "POST",
data: body,
});
@@ -40,5 +39,5 @@ export async function postAdminLogin(
/** `GET /api/v1/admin/auth/me`(需 Token */
export async function getAdminMe(): Promise<AdminAuthMeResponse> {
return adminRequest.get<AdminAuthMeResponse>(`${API_V1_PREFIX}/admin/auth/me`);
return adminRequest.get<AdminAuthMeResponse>(`/admin/auth/me`);
}

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminPlayTypeRow,
@@ -11,7 +10,7 @@ import type {
RiskCapVersionDetail,
} from "@/types/api/admin-config";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
type ConfigVersionListParams = {
status?: string;

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminCurrencyCreatePayload,
@@ -10,7 +9,7 @@ import type {
AdminCurrencyUpdatePayload,
} from "@/types/api/admin-currency";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export async function getAdminCurrencies(): Promise<AdminCurrencyListData> {
return adminRequest.get<AdminCurrencyListData>(`${A}/currencies`);

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminDashboardData } from "@/types/api/admin-dashboard";
import type {
@@ -8,7 +7,7 @@ import type {
AdminDashboardAnalyticsQuery,
} from "@/types/api/admin-dashboard-analytics";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
/** 首页仪表盘聚合(大厅 + 当期财务/风控/异常转账等,按账号权限填充各块) */
export async function getAdminDashboard(): Promise<AdminDashboardData> {

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminDrawFinanceSummaryData } from "@/types/api/admin-draw-finance";
import type {
@@ -16,7 +15,7 @@ import type {
AdminDrawCreateResponse,
} from "@/types/api/admin-draws";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export type AdminDrawListQuery = {
page?: number;

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminIntegrationSiteConnectivityResult,
@@ -12,7 +11,7 @@ import type {
AdminIntegrationSiteWithSecrets,
} from "@/types/api/admin-integration-site";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export async function getAdminIntegrationSites(): Promise<AdminIntegrationSiteListData> {
return adminRequest.get<AdminIntegrationSiteListData>(`${A}/integration-sites`);

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminJackpotContributionsData,
@@ -11,7 +10,7 @@ import type {
AdminJackpotPoolRow,
} from "@/types/api/admin-jackpot";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export async function getAdminJackpotPools(): Promise<AdminJackpotPoolsData> {
return adminRequest.get<AdminJackpotPoolsData>(`${A}/jackpot/pools`);

View File

@@ -1,7 +1,6 @@
import { adminRequest, hasLotteryAdminApiBaseUrl } from "@/lib/admin-http";
import type { AdminPingResponse } from "@/types/api/admin-ping";
import { API_V1_PREFIX } from "@/api/paths";
/** `GET /api/v1/admin/ping`(需 Bearer Token */
export async function getAdminPing(): Promise<AdminPingResponse | null> {
@@ -10,7 +9,7 @@ export async function getAdminPing(): Promise<AdminPingResponse | null> {
}
try {
return await adminRequest.get<AdminPingResponse>(
`${API_V1_PREFIX}/admin/ping`,
`/admin/ping`,
);
} catch {
return null;

View File

@@ -1,10 +1,9 @@
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`;
const A = `/admin`;
export async function getAdminPlayerTicketItems(
playerId: number,

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminPlayerListData,
@@ -10,7 +9,7 @@ import type {
AdminPlayerDeleteResult,
} from "@/types/api/admin-player";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export async function getAdminPlayers(params?: {
page?: number;

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminReconcileItemsData,
@@ -8,7 +7,7 @@ import type {
AdminReconcileJobListData,
} from "@/types/api/admin-reconcile";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export async function getAdminReconcileJobs(params?: {
page?: number;

View File

@@ -2,7 +2,6 @@ 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";
import type {
AdminReportJobCreatePayload,
@@ -11,7 +10,7 @@ import type {
AdminReportJobRow,
} from "@/types/api/admin-report-jobs";
const A = `${API_V1_PREFIX}/admin/report-jobs`;
const A = `/admin/report-jobs`;
export async function getAdminReportJobs(params?: {
page?: number;

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminReportDailyProfitRow,
@@ -11,7 +10,7 @@ import type {
AdminReportRebateCommissionRow,
} from "@/types/api/admin-reports";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export async function getAdminReportDailyProfit(
params: AdminReportQueryParams,

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminRiskLockLogListData,
@@ -9,7 +8,7 @@ import type {
AdminRiskPoolShowData,
} from "@/types/api/admin-risk";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export type AdminRiskPoolListQuery = {
page?: number;

View File

@@ -1,7 +1,6 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "@/api/paths";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export type AdminSettingItem = {
key: string;

View File

@@ -2,7 +2,6 @@ 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";
import type {
AdminSettlementBatchDetailsData,
@@ -12,7 +11,7 @@ import type {
AdminSettlementWorkflowResponse,
} from "@/types/api/admin-settlement";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export type AdminSettlementBatchListQuery = {
page?: number;

View File

@@ -1,10 +1,9 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminTicketItemsData } from "@/types/api/admin-tickets";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export type TicketItemsListQuery = {
page?: number;

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminPermissionCatalogData,
@@ -18,7 +17,7 @@ import type {
AdminUserUpdatePayload,
} from "@/types/api/admin-user";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export async function getAdminUsers(params?: {
page?: number;

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type {
AdminPlayerWalletsData,
@@ -8,7 +7,7 @@ import type {
AdminWalletTxnListData,
} from "@/types/api/admin-wallet";
const A = `${API_V1_PREFIX}/admin`;
const A = `/admin`;
export type TransferOrderListQuery = {
page?: number;

View File

@@ -1,4 +1,4 @@
export { API_V1_PREFIX } from "@/api/paths";
export { ADMIN_API_BASE, LOTTERY_API_V1_BASE } from "@/api/paths";
export { getDrawCurrent } from "@/api/public-draw";
export { getAdminRiskPools } from "@/api/admin-risk";
export { getAdminCaptcha, getAdminMe, postAdminLogin } from "@/api/admin-auth";

View File

@@ -1,2 +1,5 @@
/** Laravel `routes/api.php``api` 前缀 + `v1` 分组 */
export const API_V1_PREFIX = "/api/v1";
/** Laravel `routes/api.php``api` 前缀 + `v1` 分组;与 {@link adminHttp} `baseURL` 一致。 */
export const LOTTERY_API_V1_BASE = "/api/v1";
/** 后台路由在 `v1` 下的 `admin` 分组 */
export const ADMIN_API_BASE = "/admin";

View File

@@ -1,7 +1,6 @@
import { hasLotteryAdminApiBaseUrl, publicAdminRequest } from "@/lib/admin-http";
import type { DrawCurrentSnapshot } from "@/types/api/public-draw";
import { API_V1_PREFIX } from "@/api/paths";
/** 大厅当前期(无需 Bearer */
export async function getDrawCurrent(): Promise<DrawCurrentSnapshot | null> {
@@ -10,7 +9,7 @@ export async function getDrawCurrent(): Promise<DrawCurrentSnapshot | null> {
}
try {
return await publicAdminRequest<DrawCurrentSnapshot | null>({
url: `${API_V1_PREFIX}/draw/current`,
url: `/draw/current`,
method: "GET",
});
} catch {

View File

@@ -8,11 +8,12 @@ import { withAdminAuthHeader } from "@/lib/admin-auth";
import { withAdminLocaleHeaders } from "@/lib/admin-locale";
import { LotteryApiBizError, LotteryApiEnvelopeError } from "@/types/api/errors";
import { isApiEnvelope } from "@/types/api/envelope";
import { LOTTERY_API_V1_BASE } from "@/api/paths";
export { hasLotteryAdminApiBaseUrl } from "@/lib/lottery-api-env";
export const adminHttp = axios.create({
// API 路径统一由调用方传 `/api/v1/...`,避免与前缀重复拼接成 `/api/api/v1/...`。
baseURL: LOTTERY_API_V1_BASE,
timeout: 30_000,
headers: { Accept: "application/json" },
});