保存本地对routes.ts的修改
Change-Id: I4f4dbd8069893d7363e251130791dc0594be44e1
diff --git a/src/api/categoryApi.ts b/src/api/categoryApi.ts
new file mode 100644
index 0000000..816ac71
--- /dev/null
+++ b/src/api/categoryApi.ts
@@ -0,0 +1,90 @@
+import axios from 'axios';
+import type { CategoryDTO, Category, WorkResponse } from './otherType';
+
+const API_BASE_URL = '/api';
+
+class CategoryAPI {
+ /**
+ * 获取全部分区(树形结构)
+ * @returns 返回分区的树形结构数据
+ */
+ static getCategoryTree(): Promise<CategoryDTO[]> {
+ return axios.get<CategoryDTO[]>(`${API_BASE_URL}/categories`)
+ .then(response => response.data);
+ }
+
+ /**
+ * 获取单个分区详情
+ * @param id 分区ID
+ * @returns 返回单个分区的详细信息
+ */
+ static getCategory(id: number): Promise<Category> {
+ return axios.get<Category>(`${API_BASE_URL}/categories/${id}`)
+ .then(response => response.data);
+ }
+
+ /**
+ * 创建新分区
+ * @param category 分区数据(不包含ID)
+ * @returns 返回创建成功的消息
+ */
+ static createCategory(category: Omit<Category, 'id'>): Promise<string> {
+ return axios.post<string>(`${API_BASE_URL}/categories`, category)
+ .then(response => response.data);
+ }
+
+ /**
+ * 更新分区信息
+ * @param id 分区ID
+ * @param category 更新后的分区数据
+ * @returns 返回更新成功的消息
+ */
+ static updateCategory(id: number, category: Partial<Category>): Promise<string> {
+ return axios.put<string>(`${API_BASE_URL}/categories/${id}`, category)
+ .then(response => response.data);
+ }
+
+ /**
+ * 删除分区
+ * @param id 分区ID
+ * @returns 返回删除成功的消息
+ */
+ static deleteCategory(id: number): Promise<string> {
+ return axios.delete<string>(`${API_BASE_URL}/categories/${id}`)
+ .then(response => response.data);
+ }
+
+ /**
+ * 获取分区下的作品列表(带分页)
+ * @param categoryId 分区ID
+ * @param params 分页和排序参数
+ * @returns 返回作品列表和分页信息
+ */
+ static getWorksByCategory(
+ categoryId: number,
+ params?: {
+ page?: number;
+ size?: number;
+ sort?: string;
+ }
+ ): Promise<WorkResponse> {
+ return axios.get<WorkResponse>(`${API_BASE_URL}/works`, {
+ params: {
+ categoryId,
+ ...params
+ }
+ }).then(response => response.data);
+ }
+
+ /**
+ * 获取子分区列表
+ * @param parentId 父分区ID
+ * @returns 返回子分区列表
+ */
+ static getSubCategories(parentId: number): Promise<CategoryDTO[]> {
+ return axios.get<CategoryDTO[]>(`${API_BASE_URL}/categories/${parentId}/children`)
+ .then(response => response.data);
+ }
+}
+
+export default CategoryAPI;
\ No newline at end of file