54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
/**
|
|
* 记录服务 - 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<Record[]> {
|
|
const userId = useUserStore.getState().userId;
|
|
const response = await apiClient.get<Record[]>('/records', { userId, ...params });
|
|
return response.data;
|
|
},
|
|
|
|
// API: GET /api/records/:id - 获取指定账单记录详情
|
|
async getRecord(id: number): Promise<Record> {
|
|
const response = await apiClient.get<Record>(`/records/${id}`);
|
|
return response.data;
|
|
},
|
|
|
|
// API: POST /api/records - 创建账单记录,自动关联当前用户
|
|
async createRecord(data: Omit<RecordFormData, 'accountId'> & { accountId: number }): Promise<Record> {
|
|
const userId = useUserStore.getState().userId;
|
|
const response = await apiClient.post<Record>('/records', { ...data, userId });
|
|
return response.data;
|
|
},
|
|
|
|
// API: PUT /api/records/:id - 更新账单记录,支持部分更新
|
|
async updateRecord(id: number, data: Partial<RecordFormData>): Promise<Record> {
|
|
const response = await apiClient.put<Record>(`/records/${id}`, data);
|
|
return response.data;
|
|
},
|
|
|
|
// API: DELETE /api/records/:id - 删除指定账单记录
|
|
async deleteRecord(id: number): Promise<void> {
|
|
const response = await apiClient.delete<void>(`/records/${id}`);
|
|
return response.data;
|
|
},
|
|
};
|