Blame view

美国版/Food Labeling Management Platform/src/services/locationService.ts 3.19 KB
de8956f8   杨鑫   平台端 门店,菜单,角色
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
  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",
    });
  }