/** * 后台管理端 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('/admin/auth/login', payload), getProfile: () => http.get('/admin/auth/profile'), changePassword: (payload: { oldPassword: string; newPassword: string }) => http.post('/admin/auth/change-password', payload), // ---------- 产品分类 ---------- productCategoryAll: (params?: Record) => http.get('/admin/product-category', { params }), productCategoryDetail: (id: number) => http.get(`/admin/product-category/${id}`), productCategoryCreate: (payload: Partial) => http.post('/admin/product-category', payload), productCategoryUpdate: (id: number, payload: Partial) => http.put(`/admin/product-category/${id}`, payload), productCategoryDelete: (id: number) => http.delete(`/admin/product-category/${id}`), // ---------- 产品 ---------- productPaginate: (params: Record) => http.get>('/admin/product', { params }), productDetail: (id: number) => http.get(`/admin/product/${id}`), productCreate: (payload: Partial) => http.post('/admin/product', payload), productUpdate: (id: number, payload: Partial) => http.put(`/admin/product/${id}`, payload), productDelete: (id: number) => http.delete(`/admin/product/${id}`), // ---------- 新闻分类 ---------- newsCategoryAll: (params?: Record) => http.get('/admin/news-category', { params }), newsCategoryDetail: (id: number) => http.get(`/admin/news-category/${id}`), newsCategoryCreate: (payload: Partial) => http.post('/admin/news-category', payload), newsCategoryUpdate: (id: number, payload: Partial) => http.put(`/admin/news-category/${id}`, payload), newsCategoryDelete: (id: number) => http.delete(`/admin/news-category/${id}`), // ---------- 新闻 ---------- newsPaginate: (params: Record) => http.get>('/admin/news', { params }), newsDetail: (id: number) => http.get(`/admin/news/${id}`), newsCreate: (payload: Partial) => http.post('/admin/news', payload), newsUpdate: (id: number, payload: Partial) => http.put(`/admin/news/${id}`, payload), newsDelete: (id: number) => http.delete(`/admin/news/${id}`), // ---------- 团队 ---------- teamAll: (params?: Record) => http.get('/admin/team', { params }), teamDetail: (id: number) => http.get(`/admin/team/${id}`), teamCreate: (payload: Partial) => http.post('/admin/team', payload), teamUpdate: (id: number, payload: Partial) => http.put(`/admin/team/${id}`, payload), teamDelete: (id: number) => http.delete(`/admin/team/${id}`), // ---------- 留言 ---------- messagePaginate: (params: Record) => http.get>('/admin/message', { params }), messageMarkRead: (id: number) => http.put(`/admin/message/${id}/read`), messageDelete: (id: number) => http.delete(`/admin/message/${id}`), // ---------- 网站配置 ---------- siteConfigGet: () => http.get('/admin/site-config'), siteConfigUpdate: (payload: Partial) => http.put('/admin/site-config', payload), // ---------- 管理员账号 ---------- adminUserPaginate: (params: Record) => http.get>('/admin/admin-user', { params }), adminUserDetail: (id: number) => http.get(`/admin/admin-user/${id}`), adminUserCreate: ( payload: Partial & { password: string; role?: AdminUser['role'] }, ) => http.post('/admin/admin-user', payload), adminUserUpdate: ( id: number, payload: Pick, ) => http.put(`/admin/admin-user/${id}`, payload), adminUserResetPassword: (id: number, newPassword: string) => http.put(`/admin/admin-user/${id}/password`, { newPassword, }), adminUserDelete: (id: number) => http.delete(`/admin/admin-user/${id}`), // ---------- 使用手册 ---------- manualList: (params?: Record) => http.get('/admin/manual', { params }), manualTree: () => http.get('/admin/manual/tree'), manualDetail: (id: number) => http.get(`/admin/manual/${id}`), manualCreate: (payload: Partial) => http.post('/admin/manual', payload), manualUpdate: (id: number, payload: Partial) => http.put(`/admin/manual/${id}`, payload), manualDelete: (id: number) => http.delete(`/admin/manual/${id}`), };