Blame view

Yi.Vben5.Vue3/apps/backend-mock/utils/response.ts 1.48 KB
515fceeb   “wangming”   框架初始化
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
  import type { EventHandlerRequest, H3Event } from 'h3';
  
  export function useResponseSuccess<T = any>(data: T) {
    return {
      code: 0,
      data,
      error: null,
      message: 'ok',
    };
  }
  
  export function usePageResponseSuccess<T = any>(
    page: number | string,
    MaxResultCount: number | string,
    list: T[],
    { message = 'ok' } = {},
  ) {
    const pageData = pagination(
      Number.parseInt(`${page}`),
      Number.parseInt(`${MaxResultCount}`),
      list,
    );
  
    return {
      ...useResponseSuccess({
        items: pageData,
        total: list.length,
      }),
      message,
    };
  }
  
  export function useResponseError(message: string, error: any = null) {
    return {
      code: -1,
      data: null,
      error,
      message,
    };
  }
  
  export function forbiddenResponse(
    event: H3Event<EventHandlerRequest>,
    message = 'Forbidden Exception',
  ) {
    setResponseStatus(event, 403);
    return useResponseError(message, message);
  }
  
  export function unAuthorizedResponse(event: H3Event<EventHandlerRequest>) {
    setResponseStatus(event, 401);
    return useResponseError('Unauthorized Exception', 'Unauthorized Exception');
  }
  
  export function sleep(ms: number) {
    return new Promise((resolve) => setTimeout(resolve, ms));
  }
  
  export function pagination<T = any>(
    pageNo: number,
    MaxResultCount: number,
    array: T[],
  ): T[] {
    const offset = (pageNo - 1) * Number(MaxResultCount);
    return offset + Number(MaxResultCount) >= array.length
      ? array.slice(offset)
      : array.slice(offset, offset + Number(MaxResultCount));
  }