list.ts
2.08 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
import { faker } from '@faker-js/faker';
import { eventHandler, getQuery } from 'h3';
import { verifyAccessToken } from '~/utils/jwt-utils';
import {
sleep,
unAuthorizedResponse,
usePageResponseSuccess,
} from '~/utils/response';
function createPhone() {
const suffix = faker.string.numeric({ length: 8 });
return `1${faker.helpers.arrayElement(['3', '5', '6', '7', '8', '9'])}${suffix}`;
}
function createCustomers(count: number) {
return Array.from({ length: count }, () => ({
id: faker.string.uuid(),
name: faker.person.fullName(),
phone: createPhone(),
status: faker.helpers.arrayElement(['active', 'disabled']),
createdAt: faker.date.past().toISOString().slice(0, 19).replace('T', ' '),
}));
}
const mockData = createCustomers(120);
export default eventHandler(async (event) => {
const userinfo = verifyAccessToken(event);
if (!userinfo) {
return unAuthorizedResponse(event);
}
await sleep(300);
const { keyword, page, pageSize, status } = getQuery(event);
const keyword_raw = Array.isArray(keyword) ? keyword[0] : keyword;
const status_raw = Array.isArray(status) ? status[0] : status;
const page_raw = Array.isArray(page) ? page[0] : page;
const page_size_raw = Array.isArray(pageSize) ? pageSize[0] : pageSize;
const page_number = Math.max(
1,
Number.parseInt(String(page_raw ?? '1'), 10) || 1,
);
const page_size_number = Math.min(
100,
Math.max(1, Number.parseInt(String(page_size_raw ?? '10'), 10) || 10),
);
const list_data = structuredClone(mockData);
const keyword_str = typeof keyword_raw === 'string' ? keyword_raw.trim() : '';
const status_str =
status_raw === 'active' || status_raw === 'disabled' ? status_raw : '';
const filtered = list_data.filter((item) => {
const keyword_ok =
!keyword_str ||
item.name.includes(keyword_str) ||
item.phone.includes(keyword_str);
const status_ok = !status_str || item.status === status_str;
return keyword_ok && status_ok;
});
return usePageResponseSuccess(
String(page_number),
String(page_size_number),
filtered,
);
});