import { createApiClient } from "../lib/apiClient"; import type { LocationCreateInput, LocationDto, LocationGetListInput, LocationUpdateInput, PagedResultDto, } from "../types/location"; const api = createApiClient({ // 如果项目后续接入登录,可在这里加 token 获取逻辑 getToken: () => { try { return localStorage.getItem("access_token") ?? localStorage.getItem("token") ?? null; } catch { return null; } }, }); /** * ABP Conventional Controller 默认路由通常为: * - GET /api/app/location * - POST /api/app/location * 这里按该约定实现;如果后端实际路由不同,以 Swagger 为准调整 path。 */ export async function getLocations(input: LocationGetListInput, signal?: AbortSignal): Promise> { // 先按 ABP 常见 GET + query 调用;若后端只支持 POST,会在页面侧提示错误(便于联调时调整)。 return api.requestJson>({ path: "/location", method: "GET", query: { SkipCount: input.skipCount, MaxResultCount: input.maxResultCount, Sorting: input.sorting, Keyword: input.keyword, Partner: input.partner, GroupName: input.groupName, State: input.state, }, signal, }); } export async function createLocation(input: LocationCreateInput): Promise { return api.requestJson({ path: "/location", method: "POST", body: { // Swagger 示例为 camelCase(ABP 默认 JSON 命名策略) partner: input.partner, groupName: input.groupName, locationCode: input.locationCode, locationName: input.locationName, street: input.street, city: input.city, stateCode: input.stateCode, country: input.country, zipCode: input.zipCode, phone: input.phone, email: input.email, latitude: input.latitude, longitude: input.longitude, state: input.state ?? true, }, }); } /** * ABP Conventional Controller 的 UpdateAsync 常见路由为: * - PUT /api/app/location/{id} * 以 Swagger 为准;若后端使用其它形式(如 /location?id=xxx),在此调整即可。 */ export async function updateLocation(id: string, input: LocationUpdateInput): Promise { return api.requestJson({ path: `/location/${encodeURIComponent(id)}`, method: "PUT", body: { partner: input.partner, groupName: input.groupName, locationCode: input.locationCode, locationName: input.locationName, street: input.street, city: input.city, stateCode: input.stateCode, country: input.country, zipCode: input.zipCode, phone: input.phone, email: input.email, latitude: input.latitude, longitude: input.longitude, state: input.state ?? true, }, }); } /** * ABP Conventional Controller 的 DeleteAsync 常见路由为: * - DELETE /api/app/location/{id} * 以 Swagger 为准;若后端路由不同,在此调整 path。 */ export async function deleteLocation(id: string): Promise { await api.requestJson({ path: `/location/${encodeURIComponent(id)}`, method: "DELETE", }); }