Files
EmailBill/Web/src/api/transactionRecord.js
SunCheng 3e18283e52 1
2026-02-09 19:25:51 +08:00

239 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import request from './request'
/**
* 交易记录相关 API
*/
/**
* 获取交易记录列表(分页)
* @param {Object} params - 查询参数
* @param {number} [params.latestId] - 最后一条记录的ID用于游标分页
* @param {string} [params.searchKeyword] - 搜索关键词
* @returns {Promise<{success: boolean, data: Array, total: number, lastId: number}>}
*/
export const getTransactionList = (params = {}) => {
return request({
url: '/TransactionRecord/GetList',
method: 'get',
params
})
}
/**
* 获取待确认分类的交易记录列表
* @returns {Promise<{success: boolean, data: Array}>}
*/
export const getUnconfirmedTransactionList = () => {
return request({
url: '/TransactionRecord/GetUnconfirmedList',
method: 'get'
})
}
/**
* 全部确认待确认的交易分类
* @returns {Promise<{success: boolean, data: number}>}
*/
export const confirmAllUnconfirmed = (ids) => {
return request({
url: '/TransactionRecord/ConfirmAllUnconfirmed',
method: 'post',
data: { ids }
})
}
/**
* 根据ID获取交易记录详情
* @param {number} id - 交易记录ID
* @returns {Promise<{success: boolean, data: Object}>}
*/
export const getTransactionDetail = (id) => {
return request({
url: `/TransactionRecord/GetById/${id}`,
method: 'get'
})
}
/**
* 创建交易记录
* @param {Object} data - 交易记录数据
* @param {string} data.card - 卡号
* @param {string} data.occurredAt - 交易时间
* @param {string} data.reason - 交易摘要
* @param {number} data.amount - 交易金额
* @param {number} data.balance - 交易后余额
* @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支)
* @param {string} data.classify - 交易分类
* @returns {Promise<{success: boolean}>}
*/
export const createTransaction = (data) => {
return request({
url: '/TransactionRecord/Create',
method: 'post',
data
})
}
/**
* 更新交易记录
* @param {Object} data - 交易记录数据
* @param {number} data.id - 交易记录ID
* @param {number} data.amount - 交易金额
* @param {number} data.balance - 交易后余额
* @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支)
* @param {string} data.classify - 交易分类
* @param {string} [data.occurredAt] - 交易时间
* @returns {Promise<{success: boolean}>}
*/
export const updateTransaction = (data) => {
return request({
url: '/TransactionRecord/Update',
method: 'post',
data
})
}
/**
* 删除交易记录
* @param {number} id - 交易记录ID
* @returns {Promise<{success: boolean}>}
*/
export const deleteTransaction = (id) => {
return request({
url: '/TransactionRecord/DeleteById',
method: 'post',
params: { id }
})
}
/**
* 获取指定日期的交易记录
* @param {string} date - 日期字符串 (格式: yyyy-MM-dd)
* @returns {Promise<{success: boolean, data: Array}>}
*/
export const getTransactionsByDate = (date) => {
return request({
url: '/TransactionRecord/GetByDate',
method: 'get',
params: { date }
})
}
// 注意分类相关的API已迁移到 transactionCategory.js
// 请使用 getCategoryList 等新接口
/**
* 获取未分类的账单数量
* @returns {Promise<{success: boolean, data: number}>}
*/
export const getUnclassifiedCount = () => {
return request({
url: '/TransactionRecord/GetUnclassifiedCount',
method: 'get'
})
}
/**
* 获取未分类的账单列表
* @param {number} pageSize - 每页数量默认10条
* @returns {Promise<{success: boolean, data: Array}>}
*/
export const getUnclassified = (pageSize = 10) => {
return request({
url: '/TransactionRecord/GetUnclassified',
method: 'get',
params: { pageSize }
})
}
/**
* 智能分类 - 使用AI对账单进行分类EventSource流式响应
* @param {Array<number>} transactionIds - 要分类的账单ID列表
* @returns {Promise<Response>} 返回响应对象用于接收流式数据
*/
export const smartClassify = (transactionIds = []) => {
const baseURL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:5071/api'
const token = localStorage.getItem('token')
const url = `${baseURL}/TransactionRecord/SmartClassify`
return fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
},
body: JSON.stringify({ transactionIds })
})
}
/**
* 批量更新账单分类
* @param {Array} items - 要更新的账单分类数据数组
* @param {number} items[].id - 账单ID
* @param {string} items[].classify - 分类
* @returns {Promise<{success: boolean, message: string}>}
*/
export const batchUpdateClassify = (items) => {
return request({
url: '/TransactionRecord/BatchUpdateClassify',
method: 'post',
data: items
})
}
/**
* 获取按交易摘要分组的统计信息(支持分页)
* @param {number} pageIndex - 页码从1开始
* @param {number} pageSize - 每页数量默认20
* @returns {Promise<{success: boolean, data: Array, total: number}>}
*/
export const getReasonGroups = (pageIndex = 1, pageSize = 20) => {
return request({
url: '/TransactionStatistics/GetReasonGroups',
method: 'get',
params: { pageIndex, pageSize }
})
}
/**
* 按摘要批量更新分类
* @param {Object} data - 批量更新数据
* @param {string} data.reason - 交易摘要
* @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支)
* @param {string} data.classify - 分类名称
* @returns {Promise<{success: boolean, data: number, message: string}>}
*/
export const batchUpdateByReason = (data) => {
return request({
url: '/TransactionRecord/BatchUpdateByReason',
method: 'post',
data
})
}
/**
* NLP分析 - 根据用户自然语言输入查询交易记录并预设分类
* @param {string} userInput - 用户的自然语言输入
* @returns {Promise<{success: boolean, data: Object}>}
*/
export const nlpAnalysis = (userInput) => {
return request({
url: '/TransactionRecord/NlpAnalysis',
method: 'post',
data: { userInput }
})
}
/**
* 一句话录账解析
* @param {string} text - 用户输入的自然语言文本
* @returns {Promise<{success: boolean, data: Object}>}
*/
export const parseOneLine = (text) => {
return request({
url: '/TransactionRecord/ParseOneLine',
method: 'post',
data: { text }
})
}