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 { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminAuditLogListData } from "@/types/api/admin-audit"; import type { AdminAuditLogListData } from "@/types/api/admin-audit";
const A = `${API_V1_PREFIX}/admin`; const A = `/admin`;
export async function getAdminAuditLogs(params?: { export async function getAdminAuditLogs(params?: {
page?: number; page?: number;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,9 @@
import { adminRequest } from "@/lib/admin-http"; import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { AdminPlayerTicketItemsData } from "@/types/api/admin-player-tickets"; import type { AdminPlayerTicketItemsData } from "@/types/api/admin-player-tickets";
const A = `${API_V1_PREFIX}/admin`; const A = `/admin`;
export async function getAdminPlayerTicketItems( export async function getAdminPlayerTicketItems(
playerId: number, playerId: number,

View File

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

View File

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

View File

@@ -2,7 +2,6 @@ import { adminHttp, adminRequest } from "@/lib/admin-http";
import { withAdminAuthHeader } from "@/lib/admin-auth"; import { withAdminAuthHeader } from "@/lib/admin-auth";
import { withAdminLocaleHeaders } from "@/lib/admin-locale"; import { withAdminLocaleHeaders } from "@/lib/admin-locale";
import { API_V1_PREFIX } from "./paths";
import type { import type {
AdminReportJobCreatePayload, AdminReportJobCreatePayload,
@@ -11,7 +10,7 @@ import type {
AdminReportJobRow, AdminReportJobRow,
} from "@/types/api/admin-report-jobs"; } from "@/types/api/admin-report-jobs";
const A = `${API_V1_PREFIX}/admin/report-jobs`; const A = `/admin/report-jobs`;
export async function getAdminReportJobs(params?: { export async function getAdminReportJobs(params?: {
page?: number; page?: number;

View File

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

View File

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

View File

@@ -1,7 +1,6 @@
import { adminRequest } from "@/lib/admin-http"; 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 = { export type AdminSettingItem = {
key: string; key: string;

View File

@@ -2,7 +2,6 @@ import { adminHttp, adminRequest } from "@/lib/admin-http";
import { withAdminAuthHeader } from "@/lib/admin-auth"; import { withAdminAuthHeader } from "@/lib/admin-auth";
import { withAdminLocaleHeaders } from "@/lib/admin-locale"; import { withAdminLocaleHeaders } from "@/lib/admin-locale";
import { API_V1_PREFIX } from "./paths";
import type { import type {
AdminSettlementBatchDetailsData, AdminSettlementBatchDetailsData,
@@ -12,7 +11,7 @@ import type {
AdminSettlementWorkflowResponse, AdminSettlementWorkflowResponse,
} from "@/types/api/admin-settlement"; } from "@/types/api/admin-settlement";
const A = `${API_V1_PREFIX}/admin`; const A = `/admin`;
export type AdminSettlementBatchListQuery = { export type AdminSettlementBatchListQuery = {
page?: number; page?: number;

View File

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

View File

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

View File

@@ -1,6 +1,5 @@
import { adminRequest } from "@/lib/admin-http"; import { adminRequest } from "@/lib/admin-http";
import { API_V1_PREFIX } from "./paths";
import type { import type {
AdminPlayerWalletsData, AdminPlayerWalletsData,
@@ -8,7 +7,7 @@ import type {
AdminWalletTxnListData, AdminWalletTxnListData,
} from "@/types/api/admin-wallet"; } from "@/types/api/admin-wallet";
const A = `${API_V1_PREFIX}/admin`; const A = `/admin`;
export type TransferOrderListQuery = { export type TransferOrderListQuery = {
page?: number; 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 { getDrawCurrent } from "@/api/public-draw";
export { getAdminRiskPools } from "@/api/admin-risk"; export { getAdminRiskPools } from "@/api/admin-risk";
export { getAdminCaptcha, getAdminMe, postAdminLogin } from "@/api/admin-auth"; export { getAdminCaptcha, getAdminMe, postAdminLogin } from "@/api/admin-auth";

View File

@@ -1,2 +1,5 @@
/** Laravel `routes/api.php``api` 前缀 + `v1` 分组 */ /** Laravel `routes/api.php``api` 前缀 + `v1` 分组;与 {@link adminHttp} `baseURL` 一致。 */
export const API_V1_PREFIX = "/api/v1"; 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 { hasLotteryAdminApiBaseUrl, publicAdminRequest } from "@/lib/admin-http";
import type { DrawCurrentSnapshot } from "@/types/api/public-draw"; import type { DrawCurrentSnapshot } from "@/types/api/public-draw";
import { API_V1_PREFIX } from "@/api/paths";
/** 大厅当前期(无需 Bearer */ /** 大厅当前期(无需 Bearer */
export async function getDrawCurrent(): Promise<DrawCurrentSnapshot | null> { export async function getDrawCurrent(): Promise<DrawCurrentSnapshot | null> {
@@ -10,7 +9,7 @@ export async function getDrawCurrent(): Promise<DrawCurrentSnapshot | null> {
} }
try { try {
return await publicAdminRequest<DrawCurrentSnapshot | null>({ return await publicAdminRequest<DrawCurrentSnapshot | null>({
url: `${API_V1_PREFIX}/draw/current`, url: `/draw/current`,
method: "GET", method: "GET",
}); });
} catch { } catch {

View File

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