136 lines
5.7 KiB
TypeScript
136 lines
5.7 KiB
TypeScript
|
|
/**
|
|||
|
|
* 后台管理端 API(带 JWT)
|
|||
|
|
*/
|
|||
|
|
import { http, type Paginated } from './api';
|
|||
|
|
import type {
|
|||
|
|
AdminInfo,
|
|||
|
|
AdminUser,
|
|||
|
|
LoginResult,
|
|||
|
|
Manual,
|
|||
|
|
ManualTreeNode,
|
|||
|
|
Message,
|
|||
|
|
News,
|
|||
|
|
NewsCategory,
|
|||
|
|
Product,
|
|||
|
|
ProductCategory,
|
|||
|
|
SiteConfig,
|
|||
|
|
Team,
|
|||
|
|
} from './types';
|
|||
|
|
|
|||
|
|
export const adminApi = {
|
|||
|
|
// ---------- 鉴权 ----------
|
|||
|
|
login: (payload: { username: string; password: string }) =>
|
|||
|
|
http.post<unknown, LoginResult>('/admin/auth/login', payload),
|
|||
|
|
getProfile: () =>
|
|||
|
|
http.get<unknown, AdminInfo & { id: number }>('/admin/auth/profile'),
|
|||
|
|
changePassword: (payload: { oldPassword: string; newPassword: string }) =>
|
|||
|
|
http.post<unknown, unknown>('/admin/auth/change-password', payload),
|
|||
|
|
|
|||
|
|
// ---------- 产品分类 ----------
|
|||
|
|
productCategoryAll: (params?: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, ProductCategory[]>('/admin/product-category', { params }),
|
|||
|
|
productCategoryDetail: (id: number) =>
|
|||
|
|
http.get<unknown, ProductCategory>(`/admin/product-category/${id}`),
|
|||
|
|
productCategoryCreate: (payload: Partial<ProductCategory>) =>
|
|||
|
|
http.post<unknown, ProductCategory>('/admin/product-category', payload),
|
|||
|
|
productCategoryUpdate: (id: number, payload: Partial<ProductCategory>) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/product-category/${id}`, payload),
|
|||
|
|
productCategoryDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/product-category/${id}`),
|
|||
|
|
|
|||
|
|
// ---------- 产品 ----------
|
|||
|
|
productPaginate: (params: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, Paginated<Product>>('/admin/product', { params }),
|
|||
|
|
productDetail: (id: number) =>
|
|||
|
|
http.get<unknown, Product>(`/admin/product/${id}`),
|
|||
|
|
productCreate: (payload: Partial<Product>) =>
|
|||
|
|
http.post<unknown, Product>('/admin/product', payload),
|
|||
|
|
productUpdate: (id: number, payload: Partial<Product>) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/product/${id}`, payload),
|
|||
|
|
productDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/product/${id}`),
|
|||
|
|
|
|||
|
|
// ---------- 新闻分类 ----------
|
|||
|
|
newsCategoryAll: (params?: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, NewsCategory[]>('/admin/news-category', { params }),
|
|||
|
|
newsCategoryDetail: (id: number) =>
|
|||
|
|
http.get<unknown, NewsCategory>(`/admin/news-category/${id}`),
|
|||
|
|
newsCategoryCreate: (payload: Partial<NewsCategory>) =>
|
|||
|
|
http.post<unknown, NewsCategory>('/admin/news-category', payload),
|
|||
|
|
newsCategoryUpdate: (id: number, payload: Partial<NewsCategory>) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/news-category/${id}`, payload),
|
|||
|
|
newsCategoryDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/news-category/${id}`),
|
|||
|
|
|
|||
|
|
// ---------- 新闻 ----------
|
|||
|
|
newsPaginate: (params: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, Paginated<News>>('/admin/news', { params }),
|
|||
|
|
newsDetail: (id: number) =>
|
|||
|
|
http.get<unknown, News>(`/admin/news/${id}`),
|
|||
|
|
newsCreate: (payload: Partial<News>) =>
|
|||
|
|
http.post<unknown, News>('/admin/news', payload),
|
|||
|
|
newsUpdate: (id: number, payload: Partial<News>) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/news/${id}`, payload),
|
|||
|
|
newsDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/news/${id}`),
|
|||
|
|
|
|||
|
|
// ---------- 团队 ----------
|
|||
|
|
teamAll: (params?: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, Team[]>('/admin/team', { params }),
|
|||
|
|
teamDetail: (id: number) =>
|
|||
|
|
http.get<unknown, Team>(`/admin/team/${id}`),
|
|||
|
|
teamCreate: (payload: Partial<Team>) =>
|
|||
|
|
http.post<unknown, Team>('/admin/team', payload),
|
|||
|
|
teamUpdate: (id: number, payload: Partial<Team>) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/team/${id}`, payload),
|
|||
|
|
teamDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/team/${id}`),
|
|||
|
|
|
|||
|
|
// ---------- 留言 ----------
|
|||
|
|
messagePaginate: (params: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, Paginated<Message>>('/admin/message', { params }),
|
|||
|
|
messageMarkRead: (id: number) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/message/${id}/read`),
|
|||
|
|
messageDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/message/${id}`),
|
|||
|
|
|
|||
|
|
// ---------- 网站配置 ----------
|
|||
|
|
siteConfigGet: () =>
|
|||
|
|
http.get<unknown, SiteConfig>('/admin/site-config'),
|
|||
|
|
siteConfigUpdate: (payload: Partial<SiteConfig>) =>
|
|||
|
|
http.put<unknown, SiteConfig>('/admin/site-config', payload),
|
|||
|
|
|
|||
|
|
// ---------- 管理员账号 ----------
|
|||
|
|
adminUserPaginate: (params: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, Paginated<AdminUser>>('/admin/admin-user', { params }),
|
|||
|
|
adminUserDetail: (id: number) =>
|
|||
|
|
http.get<unknown, AdminUser>(`/admin/admin-user/${id}`),
|
|||
|
|
adminUserCreate: (
|
|||
|
|
payload: Partial<AdminUser> & { password: string; role?: AdminUser['role'] },
|
|||
|
|
) => http.post<unknown, AdminUser>('/admin/admin-user', payload),
|
|||
|
|
adminUserUpdate: (
|
|||
|
|
id: number,
|
|||
|
|
payload: Pick<AdminUser, 'nickname' | 'avatar' | 'role'>,
|
|||
|
|
) => http.put<unknown, unknown>(`/admin/admin-user/${id}`, payload),
|
|||
|
|
adminUserResetPassword: (id: number, newPassword: string) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/admin-user/${id}/password`, {
|
|||
|
|
newPassword,
|
|||
|
|
}),
|
|||
|
|
adminUserDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/admin-user/${id}`),
|
|||
|
|
|
|||
|
|
// ---------- 使用手册 ----------
|
|||
|
|
manualList: (params?: Record<string, unknown>) =>
|
|||
|
|
http.get<unknown, Manual[]>('/admin/manual', { params }),
|
|||
|
|
manualTree: () =>
|
|||
|
|
http.get<unknown, ManualTreeNode[]>('/admin/manual/tree'),
|
|||
|
|
manualDetail: (id: number) =>
|
|||
|
|
http.get<unknown, Manual>(`/admin/manual/${id}`),
|
|||
|
|
manualCreate: (payload: Partial<Manual>) =>
|
|||
|
|
http.post<unknown, Manual>('/admin/manual', payload),
|
|||
|
|
manualUpdate: (id: number, payload: Partial<Manual>) =>
|
|||
|
|
http.put<unknown, unknown>(`/admin/manual/${id}`, payload),
|
|||
|
|
manualDelete: (id: number) =>
|
|||
|
|
http.delete<unknown, unknown>(`/admin/manual/${id}`),
|
|||
|
|
};
|