Files
EmailBill/Web/src/api/transactionRecord.js

238 lines
6.3 KiB
JavaScript
Raw Normal View History

2026-01-27 15:29:25 +08:00
import request from './request'
2025-12-25 11:20:56 +08:00
/**
* 交易记录相关 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 }
})
}
2025-12-25 11:20:56 +08:00
/**
* 根据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 - 交易分类
* @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({
2026-01-16 11:15:44 +08:00
url: '/TransactionRecord/DeleteById',
2025-12-25 11:20:56 +08:00
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
2025-12-26 15:21:31 +08:00
// 请使用 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流式响应
2025-12-26 15:21:31 +08:00
* @param {Array<number>} transactionIds - 要分类的账单ID列表
* @returns {Promise<Response>} 返回响应对象用于接收流式数据
*/
2025-12-26 15:21:31 +08:00
export const smartClassify = (transactionIds = []) => {
const baseURL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:5071/api'
const token = localStorage.getItem('token')
2025-12-26 15:21:31 +08:00
const url = `${baseURL}/TransactionRecord/SmartClassify`
2026-01-16 11:15:44 +08:00
return fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
2026-01-16 11:15:44 +08:00
Authorization: `Bearer ${token}`
},
2025-12-26 15:21:31 +08:00
body: JSON.stringify({ transactionIds })
})
}
/**
* 批量更新账单分类
* @param {Array} items - 要更新的账单分类数据数组
* @param {number} items[].id - 账单ID
2025-12-26 15:21:31 +08:00
* @param {string} items[].classify - 分类
* @returns {Promise<{success: boolean, message: string}>}
*/
export const batchUpdateClassify = (items) => {
return request({
url: '/TransactionRecord/BatchUpdateClassify',
method: 'post',
data: items
})
}
2025-12-26 15:21:31 +08:00
/**
* 获取按交易摘要分组的统计信息支持分页
* @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: '/TransactionRecord/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 }
})
2026-01-16 11:15:44 +08:00
}