locationService.ts
3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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<PagedResultDto<LocationDto>> {
// 先按 ABP 常见 GET + query 调用;若后端只支持 POST,会在页面侧提示错误(便于联调时调整)。
return api.requestJson<PagedResultDto<LocationDto>>({
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<LocationDto> {
return api.requestJson<LocationDto>({
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<LocationDto> {
return api.requestJson<LocationDto>({
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<void> {
await api.requestJson<unknown>({
path: `/location/${encodeURIComponent(id)}`,
method: "DELETE",
});
}