Files
nl-blogs/.trae/documents/修复操作日志和角色列表功能异常.md
2026-01-15 13:51:44 +08:00

58 lines
2.8 KiB
Markdown
Raw Permalink 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.
## 问题分析
### 1. 获取操作日志功能失败
- **错误原因**:数据库中缺少 `operation_logs`
- **代码分析**`operation_log_repository.go` 中的 `GetOperationLogs` 函数尝试从 `operation_logs` 表查询数据,但该表不存在
- **SQL文件状态**`nl_blog.sql` 中没有定义 `operation_logs`
### 2. 获取角色列表功能失败
- **错误原因**:数据库中缺少 `roles`
- **代码分析**`role_repository.go` 中的 `GetRoles` 函数尝试从 `roles` 表查询数据,但该表不存在
- **SQL文件状态**`nl_blog.sql` 中没有定义 `roles`
- **设计不一致**:用户表 `users``role` 字段使用 `enum('admin','editor','viewer')` 类型,表明角色设计为内嵌式,而非独立表管理
## 修复方案
### 1. 修复操作日志功能
- **创建 `operation_logs` 表**:在 `nl_blog.sql` 中添加表定义
- **表结构**
```sql
DROP TABLE IF EXISTS `operation_logs`;
CREATE TABLE `operation_logs` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint UNSIGNED NOT NULL COMMENT '操作用户ID',
`username` varchar(50) NOT NULL COMMENT '操作用户名',
`ip` varchar(45) NOT NULL COMMENT '操作IP地址',
`path` varchar(255) NOT NULL COMMENT '操作路径',
`method` varchar(10) NOT NULL COMMENT 'HTTP方法',
`params` text NULL COMMENT '请求参数',
`status` int NOT NULL COMMENT '响应状态码',
`duration` int NOT NULL COMMENT '响应时间(毫秒)',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_user_id`(`user_id` ASC) USING BTREE,
INDEX `idx_created_at`(`created_at` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '操作日志表' ROW_FORMAT = Dynamic;
```
### 2. 修复角色列表功能
- **方案A**:修改代码以适应现有设计(推荐)
- 由于用户表中角色是 `enum` 类型,系统可能不需要独立的 `roles` 表
- 修改 `role_repository.go` 中的 `GetRoles` 函数,返回硬编码的角色列表
- 这样可以保持与现有数据库设计的一致性
- **方案B**:创建 `roles` 表并迁移数据
- 在 `nl_blog.sql` 中添加 `roles` 表定义
- 插入初始角色数据
- 这种方案需要更多的数据库迁移工作
### 3. 实现步骤
1. 首先创建 `operation_logs` 表,修复操作日志功能
2. 然后根据系统设计选择合适的角色管理方案,修复角色列表功能
3. 更新 `nl_blog.sql` 文件,确保包含所有必要的表定义
4. 测试修复后的功能
## 预期结果
- 操作日志功能能够正常获取日志记录
- 角色列表功能能够正常返回角色数据
- 系统设计与数据库结构保持一致