# API调用记录和钱包交易记录功能说明 ## 概述 本文档描述了新增的API调用记录和钱包交易记录功能,包括后端API接口和前端页面。 ## 功能特性 ### 1. API调用记录功能 #### 后端API接口 **获取用户API调用记录** - **接口地址**: `GET /api/v1/my/api-calls` - **认证要求**: 需要JWT认证 - **功能**: 获取当前用户的API调用历史记录,支持分页和筛选 **请求参数**: ```json { "page": 1, // 页码,默认1 "page_size": 10, // 每页数量,默认10 "start_time": "2024-01-01 00:00:00", // 开始时间(可选) "end_time": "2024-01-31 23:59:59", // 结束时间(可选) "transaction_id": "1234567890", // 交易ID(可选) "product_id": "product_123", // 产品ID(可选) "status": "success" // 状态筛选:success/failed/pending(可选) } ``` **响应格式**: ```json { "code": 200, "message": "获取API调用记录成功", "data": { "items": [ { "id": "api_call_123", "access_id": "access_456", "user_id": "user_789", "product_id": "product_123", "product_name": "身份证识别", "transaction_id": "1234567890", "client_ip": "192.168.1.1", "request_params": "{\"image\": \"base64...\"}", "response_data": "{\"result\": \"success\"}", "status": "success", "start_at": "2024-01-15 10:30:00", "end_at": "2024-01-15 10:30:05", "cost": "0.10", "error_type": null, "error_msg": null, "created_at": "2024-01-15 10:30:00", "updated_at": "2024-01-15 10:30:05" } ], "total": 100, "page": 1, "size": 10 } } ``` #### 前端页面 **页面路径**: `/api/usage` **功能特性**: - 显示API调用统计信息(总调用次数、成功率) - 支持按时间范围、交易ID、产品名称、状态筛选 - 分页显示调用记录列表 - 查看调用详情(请求参数、响应数据、错误信息) - 响应式设计,支持移动端访问 ### 2. 钱包交易记录功能 #### 后端API接口 **获取用户钱包交易记录** - **接口地址**: `GET /api/v1/finance/wallet/transactions` - **认证要求**: 需要JWT认证 - **功能**: 获取当前用户的钱包消费记录,支持分页和筛选 **请求参数**: ```json { "page": 1, // 页码,默认1 "page_size": 10, // 每页数量,默认10 "start_time": "2024-01-01 00:00:00", // 开始时间(可选) "end_time": "2024-01-31 23:59:59", // 结束时间(可选) "api_call_id": "api_call_123", // API调用ID(可选) "min_amount": "0.01", // 最小金额(可选) "max_amount": "100.00" // 最大金额(可选) } ``` **响应格式**: ```json { "code": 200, "message": "获取钱包交易记录成功", "data": { "items": [ { "id": "transaction_123", "user_id": "user_789", "api_call_id": "api_call_456", "amount": "0.10", "created_at": "2024-01-15 10:30:05", "updated_at": "2024-01-15 10:30:05" } ], "total": 50, "page": 1, "size": 10 } } ``` #### 前端页面 **页面路径**: `/finance/transactions` **功能特性**: - 显示消费统计信息(总消费次数、总消费金额) - 支持按时间范围、API调用ID、金额范围筛选 - 分页显示交易记录列表 - 查看交易详情 - 响应式设计,支持移动端访问 ## 技术实现 ### 后端架构 #### 1. 数据层 - **实体**: `ApiCall`、`WalletTransaction` - **仓储**: `ApiCallRepository`、`WalletTransactionRepository` - **GORM实现**: `GormApiCallRepository`、`GormWalletTransactionRepository` #### 2. 领域层 - **聚合服务**: `ApiCallAggregateService`、`WalletAggregateService` - **业务逻辑**: 分页查询、条件筛选、数据统计 #### 3. 应用层 - **应用服务**: `ApiApplicationService`、`FinanceApplicationService` - **DTO转换**: 实体到响应DTO的映射 - **业务编排**: 调用领域服务,处理应用级逻辑 #### 4. 接口层 - **HTTP处理器**: `ApiHandler`、`FinanceHandler` - **路由配置**: API路由和财务路由 - **中间件**: JWT认证、请求验证、响应构建 ### 前端架构 #### 1. 页面组件 - **API调用记录**: `Usage.vue` - **钱包交易记录**: `Transactions.vue` - **通用组件**: `ListPageLayout`、`FilterSection`、`FilterItem` #### 2. API接口 - **API模块**: `apiApi.getUserApiCalls()` - **财务模块**: `financeApi.getUserWalletTransactions()` #### 3. 功能特性 - **筛选功能**: 时间范围、关键词搜索、状态筛选 - **分页功能**: 支持自定义每页数量 - **详情弹窗**: 查看完整记录信息 - **响应式设计**: 适配不同屏幕尺寸 ## 数据库设计 ### API调用记录表 (api_calls) ```sql CREATE TABLE api_calls ( id VARCHAR(64) PRIMARY KEY, access_id VARCHAR(64) NOT NULL, user_id VARCHAR(36), product_id VARCHAR(64), transaction_id VARCHAR(64) NOT NULL, client_ip VARCHAR(64) NOT NULL, request_params TEXT, response_data TEXT, status VARCHAR(20) NOT NULL DEFAULT 'pending', start_at TIMESTAMP NOT NULL, end_at TIMESTAMP, cost DECIMAL(20,8), error_type VARCHAR(32), error_msg VARCHAR(256), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user_id (user_id), INDEX idx_transaction_id (transaction_id), INDEX idx_status (status), INDEX idx_created_at (created_at) ); ``` ### 钱包交易记录表 (wallet_transactions) ```sql CREATE TABLE wallet_transactions ( id VARCHAR(36) PRIMARY KEY, user_id VARCHAR(36) NOT NULL, api_call_id VARCHAR(64) NOT NULL, amount DECIMAL(20,8) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted_at TIMESTAMP NULL, INDEX idx_user_id (user_id), INDEX idx_api_call_id (api_call_id), INDEX idx_created_at (created_at) ); ``` ## 使用示例 ### 1. 获取API调用记录 **请求示例**: ```bash curl -X GET "http://localhost:8080/api/v1/my/api-calls?page=1&page_size=10&status=success" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" ``` **响应示例**: ```json { "code": 200, "message": "获取API调用记录成功", "data": { "items": [...], "total": 100, "page": 1, "size": 10 } } ``` ### 2. 获取钱包交易记录 **请求示例**: ```bash curl -X GET "http://localhost:8080/api/v1/finance/wallet/transactions?page=1&page_size=10" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" ``` **响应示例**: ```json { "code": 200, "message": "获取钱包交易记录成功", "data": { "items": [...], "total": 50, "page": 1, "size": 10 } } ``` ## 错误处理 ### 常见错误码 - `400`: 请求参数错误 - `401`: 未认证或认证失败 - `500`: 服务器内部错误 ### 错误响应格式 ```json { "code": 400, "message": "请求参数错误", "data": null } ``` ## 性能优化 ### 1. 数据库优化 - 合理设置索引 - 使用分页查询避免大量数据查询 - 缓存热点数据 ### 2. 前端优化 - 防抖搜索,避免频繁请求 - 分页加载,减少数据传输 - 响应式设计,提升用户体验 ## 安全考虑 ### 1. 认证授权 - 所有接口都需要JWT认证 - 用户只能查看自己的记录 - 接口权限验证 ### 2. 数据安全 - 敏感信息脱敏处理 - SQL注入防护 - XSS攻击防护 ## 扩展功能 ### 1. 统计报表 - 调用量趋势分析 - 费用统计报表 - 成功率分析 ### 2. 导出功能 - 支持Excel导出 - 支持PDF报表 - 自定义导出格式 ### 3. 实时监控 - WebSocket实时推送 - 调用状态实时更新 - 异常告警通知 ## 总结 API调用记录和钱包交易记录功能为用户提供了完整的API使用追踪和费用管理能力,通过合理的架构设计和功能实现,确保了系统的可扩展性和可维护性。