website-01/lib/services.ts

48 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

2026-06-22 14:43:46 +08:00
/**
* API token
*/
2026-06-22 15:49:58 +08:00
import { http, type Paginated } from './api';
2026-06-22 14:43:46 +08:00
import type {
Banner,
Manual,
ManualTreeNode,
News,
NewsCategory,
Product,
ProductCategory,
SiteConfig,
Team,
} from './types';
export const publicApi = {
getSiteConfig: () =>
http.get<unknown, SiteConfig>('/public/site-config'),
getBanners: () =>
http.get<unknown, Banner[]>('/public/banner'),
getProductCategories: () =>
http.get<unknown, ProductCategory[]>('/public/product-category'),
getProducts: (params: Record<string, unknown> = {}) =>
http.get<unknown, Paginated<Product>>('/public/product', { params }),
getProductDetail: (id: number) =>
http.get<unknown, Product>(`/public/product/${id}`),
getNewsCategories: () =>
http.get<unknown, NewsCategory[]>('/public/news-category'),
getNews: (params: Record<string, unknown> = {}) =>
http.get<unknown, Paginated<News>>('/public/news', { params }),
getNewsDetail: (id: number) =>
http.get<unknown, News>(`/public/news/${id}`),
getTeam: () =>
http.get<unknown, Team[]>('/public/team'),
submitMessage: (payload: {
name: string;
phone: string;
email?: string;
content: string;
}) => http.post<unknown, unknown>('/public/message', payload),
// ---------- 使用手册 ----------
getManualTree: () =>
http.get<unknown, ManualTreeNode[]>('/public/manual/tree'),
getManualDetail: (id: number) =>
http.get<unknown, Manual>(`/public/manual/${id}`),
};