migration_20260409_api_request_log.sql 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. -- 替换审计/登录日志为统一 API 请求日志表
  2. -- 执行前请备份。旧表数据如需保留请先自行导出。
  3. SET NAMES utf8mb4;
  4. DROP TABLE IF EXISTS `sys_login_log_his`;
  5. DROP TABLE IF EXISTS `sys_login_log`;
  6. DROP TABLE IF EXISTS `sys_audit_log_his`;
  7. DROP TABLE IF EXISTS `sys_audit_log`;
  8. CREATE TABLE `sys_api_request_log` (
  9. `id` varchar(32) NOT NULL COMMENT '主键ID',
  10. `http_method` varchar(10) NOT NULL COMMENT 'HTTP 方法',
  11. `path` varchar(500) NOT NULL COMMENT '请求路径',
  12. `query_string` varchar(2000) DEFAULT NULL COMMENT 'Query 字符串',
  13. `request_body` text COMMENT '请求体(截断)',
  14. `response_body` text COMMENT '响应体(截断)',
  15. `status_code` int NOT NULL COMMENT 'HTTP 状态码',
  16. `duration_ms` int NOT NULL COMMENT '耗时(ms)',
  17. `user_id` varchar(32) DEFAULT NULL COMMENT '用户ID',
  18. `username` varchar(100) DEFAULT NULL COMMENT '用户名',
  19. `role` varchar(20) DEFAULT NULL COMMENT '角色',
  20. `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
  21. `user_agent` varchar(500) DEFAULT NULL COMMENT 'User-Agent',
  22. `is_del` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除',
  23. `create_at` datetime NOT NULL COMMENT '创建时间',
  24. `create_by` varchar(32) DEFAULT NULL COMMENT '创建人ID',
  25. `create_name` varchar(100) DEFAULT NULL COMMENT '创建人姓名',
  26. `update_at` datetime DEFAULT NULL COMMENT '修改时间',
  27. `update_by` varchar(32) DEFAULT NULL COMMENT '修改人ID',
  28. PRIMARY KEY (`id`),
  29. KEY `idx_api_req_create_at` (`create_at`),
  30. KEY `idx_api_req_path` (`path`(191))
  31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='API请求日志';
  32. CREATE TABLE `sys_api_request_log_his` (
  33. `id` varchar(32) NOT NULL COMMENT '主键ID',
  34. `http_method` varchar(10) NOT NULL COMMENT 'HTTP 方法',
  35. `path` varchar(500) NOT NULL COMMENT '请求路径',
  36. `query_string` varchar(2000) DEFAULT NULL COMMENT 'Query 字符串',
  37. `request_body` text COMMENT '请求体(截断)',
  38. `response_body` text COMMENT '响应体(截断)',
  39. `status_code` int NOT NULL COMMENT 'HTTP 状态码',
  40. `duration_ms` int NOT NULL COMMENT '耗时(ms)',
  41. `user_id` varchar(32) DEFAULT NULL COMMENT '用户ID',
  42. `username` varchar(100) DEFAULT NULL COMMENT '用户名',
  43. `role` varchar(20) DEFAULT NULL COMMENT '角色',
  44. `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
  45. `user_agent` varchar(500) DEFAULT NULL COMMENT 'User-Agent',
  46. `create_at` datetime NOT NULL COMMENT '创建时间',
  47. `create_by` varchar(32) DEFAULT NULL COMMENT '创建人ID',
  48. `create_name` varchar(100) DEFAULT NULL COMMENT '创建人姓名',
  49. `update_at` datetime DEFAULT NULL COMMENT '修改时间',
  50. `update_by` varchar(32) DEFAULT NULL COMMENT '修改人ID',
  51. `his_create_at` datetime NOT NULL COMMENT '历史记录创建时间',
  52. PRIMARY KEY (`id`,`his_create_at`)
  53. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='API请求日志历史';
  54. -- 菜单:删除旧两项,保留「日志管理」下单一子菜单(复用原审计日志 id)
  55. DELETE FROM `sys_menu` WHERE `id` IN ('10000000000000000000000000000052');
  56. UPDATE `sys_menu` SET
  57. `name` = '接口日志',
  58. `code` = 'api_request_log',
  59. `path` = '/api-request-log',
  60. `component` = 'api-request-log/index',
  61. `icon` = 'DataLine',
  62. `sort_order` = 1
  63. WHERE `id` = '10000000000000000000000000000051';