diff --git a/frontend/src/services/records.ts b/frontend/src/services/records.ts new file mode 100644 index 0000000..5551630 --- /dev/null +++ b/frontend/src/services/records.ts @@ -0,0 +1,53 @@ +/** + * 记录服务 - Records API Service + * 功能:封装账单记录相关的 API 调用,提供账单 CRUD 操作 + * API 依赖: + * - GET /api/records - 获取账单记录列表(支持多条件筛选) + * - GET /api/records/:id - 获取单条账单记录 + * - POST /api/records - 创建账单记录 + * - PUT /api/records/:id - 更新账单记录 + * - DELETE /api/records/:id - 删除账单记录 + */ +import { apiClient } from './apiClient'; +import type { Record, RecordFormData } from '../types'; +import { useUserStore } from '../stores/userStore'; + +export const recordsApi = { + // API: GET /api/records - 获取账单记录列表,支持按账户、类型、分类、日期范围筛选 + async getRecords(params?: { + accountId?: number; + type?: 'income' | 'expense'; + category?: string; + startDate?: string; + endDate?: string; + }): Promise { + const userId = useUserStore.getState().userId; + const response = await apiClient.get('/records', { userId, ...params }); + return response.data; + }, + + // API: GET /api/records/:id - 获取指定账单记录详情 + async getRecord(id: number): Promise { + const response = await apiClient.get(`/records/${id}`); + return response.data; + }, + + // API: POST /api/records - 创建账单记录,自动关联当前用户 + async createRecord(data: Omit & { accountId: number }): Promise { + const userId = useUserStore.getState().userId; + const response = await apiClient.post('/records', { ...data, userId }); + return response.data; + }, + + // API: PUT /api/records/:id - 更新账单记录,支持部分更新 + async updateRecord(id: number, data: Partial): Promise { + const response = await apiClient.put(`/records/${id}`, data); + return response.data; + }, + + // API: DELETE /api/records/:id - 删除指定账单记录 + async deleteRecord(id: number): Promise { + const response = await apiClient.delete(`/records/${id}`); + return response.data; + }, +};