12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { faker } from '@faker-js/faker';
- import { verifyAccessToken } from '~/utils/jwt-utils';
- import { unAuthorizedResponse, usePageResponseSuccess } from '~/utils/response';
- function generateMockDataList(count: number) {
- const dataList = [];
- for (let i = 0; i < count; i++) {
- const dataItem = {
- id: faker.string.uuid(),
- imageUrl: faker.image.avatar(),
- imageUrl2: faker.image.avatar(),
- open: faker.datatype.boolean(),
- status: faker.helpers.arrayElement(['success', 'error', 'warning']),
- productName: faker.commerce.productName(),
- price: faker.commerce.price(),
- currency: faker.finance.currencyCode(),
- quantity: faker.number.int({ min: 1, max: 100 }),
- available: faker.datatype.boolean(),
- category: faker.commerce.department(),
- releaseDate: faker.date.past(),
- rating: faker.number.float({ min: 1, max: 5 }),
- description: faker.commerce.productDescription(),
- weight: faker.number.float({ min: 0.1, max: 10 }),
- color: faker.color.human(),
- inProduction: faker.datatype.boolean(),
- tags: Array.from({ length: 3 }, () => faker.commerce.productAdjective()),
- };
- dataList.push(dataItem);
- }
- return dataList;
- }
- const mockData = generateMockDataList(100);
- export default eventHandler(async (event) => {
- const userinfo = verifyAccessToken(event);
- if (!userinfo) {
- return unAuthorizedResponse(event);
- }
- await sleep(600);
- const { page, pageSize, sortBy, sortOrder } = getQuery(event);
- const listData = structuredClone(mockData);
- if (sortBy && Reflect.has(listData[0], sortBy as string)) {
- listData.sort((a, b) => {
- if (sortOrder === 'asc') {
- if (sortBy === 'price') {
- return (
- Number.parseFloat(a[sortBy as string]) -
- Number.parseFloat(b[sortBy as string])
- );
- } else {
- return a[sortBy as string] > b[sortBy as string] ? 1 : -1;
- }
- } else {
- if (sortBy === 'price') {
- return (
- Number.parseFloat(b[sortBy as string]) -
- Number.parseFloat(a[sortBy as string])
- );
- } else {
- return a[sortBy as string] < b[sortBy as string] ? 1 : -1;
- }
- }
- });
- }
- return usePageResponseSuccess(page as string, pageSize as string, listData);
- });
|