58 lines
2.8 KiB
Markdown
58 lines
2.8 KiB
Markdown
|
|
## 问题分析
|
|||
|
|
|
|||
|
|
### 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. 测试修复后的功能
|
|||
|
|
|
|||
|
|
## 预期结果
|
|||
|
|
- 操作日志功能能够正常获取日志记录
|
|||
|
|
- 角色列表功能能够正常返回角色数据
|
|||
|
|
- 系统设计与数据库结构保持一致
|