Blame view

美国版/Food Labeling Management Platform/src/services/menuService.ts 2.22 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
  import { createApiClient } from "../lib/apiClient";
  import type { MenuCreateInput, MenuDto, MenuGetListInput, MenuUpdateInput, PagedResultDto } from "../types/menu";
  
  const api = createApiClient({
    getToken: () => {
      try {
        return localStorage.getItem("access_token") ?? localStorage.getItem("token") ?? null;
      } catch {
        return null;
      }
    },
  });
  
  // Keep routes easy to adjust during integration (Swagger not accessible).
  const MENU_PATH = "/menu";
  
  export type MenuServiceRouteMode = "abp" | "plain";
  
  function prefixFor(mode: MenuServiceRouteMode | undefined): string {
    return mode === "plain" ? "" : "/api/app";
  }
  
  export async function getMenus(
    input: MenuGetListInput,
    signal?: AbortSignal,
    routeMode: MenuServiceRouteMode = "abp",
  ): Promise<PagedResultDto<MenuDto>> {
    return api.requestJson<PagedResultDto<MenuDto>>({
      path: MENU_PATH,
      method: "GET",
      query: {
        SkipCount: input.skipCount,
        MaxResultCount: input.maxResultCount,
        Sorting: input.sorting,
        Keyword: input.keyword,
      },
      signal,
      prefix: prefixFor(routeMode),
    });
  }
  
  export async function createMenu(input: MenuCreateInput, routeMode: MenuServiceRouteMode = "abp"): Promise<MenuDto> {
    return api.requestJson<MenuDto>({
      path: MENU_PATH,
      method: "POST",
      body: {
        name: input.name,
        path: input.path,
        icon: input.icon,
        order: input.order,
        parentId: input.parentId,
        isEnabled: input.isEnabled ?? true,
      },
      prefix: prefixFor(routeMode),
    });
  }
  
  export async function updateMenu(
    id: string,
    input: MenuUpdateInput,
    routeMode: MenuServiceRouteMode = "abp",
  ): Promise<MenuDto> {
    return api.requestJson<MenuDto>({
      path: `${MENU_PATH}/${encodeURIComponent(id)}`,
      method: "PUT",
      body: {
        name: input.name,
        path: input.path,
        icon: input.icon,
        order: input.order,
        parentId: input.parentId,
        isEnabled: input.isEnabled ?? true,
      },
      prefix: prefixFor(routeMode),
    });
  }
  
  export async function deleteMenu(id: string, routeMode: MenuServiceRouteMode = "abp"): Promise<void> {
    await api.requestJson<unknown>({
      path: `${MENU_PATH}/${encodeURIComponent(id)}`,
      method: "DELETE",
      prefix: prefixFor(routeMode),
    });
  }