create_system_config.sql 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. -- 创建system_config表(纵表设计)
  2. CREATE TABLE IF NOT EXISTS `system_config` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  4. `config_key` varchar(100) NOT NULL COMMENT '配置键名',
  5. `config_value` varchar(500) NOT NULL COMMENT '配置值',
  6. `config_type` enum('int','string','bool','json') DEFAULT 'string' COMMENT '配置值类型',
  7. `description` varchar(255) DEFAULT NULL COMMENT '配置描述',
  8. `is_system` tinyint(1) DEFAULT '1' COMMENT '是否为系统配置:1-是,0-否',
  9. `is_editable` tinyint(1) DEFAULT '1' COMMENT '是否可编辑:1-是,0-否',
  10. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除:0-否,1-是',
  11. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  12. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  13. PRIMARY KEY (`id`),
  14. UNIQUE KEY `uk_config_key` (`config_key`, `is_deleted`) COMMENT '配置键唯一约束'
  15. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表(纵表设计)';
  16. -- 为 api_keys 表添加 updated_at 字段
  17. ALTER TABLE `api_keys` ADD COLUMN `updated_at` datetime DEFAULT NULL COMMENT '更新时间';
  18. -- 创建 sessions 表
  19. CREATE TABLE IF NOT EXISTS `sessions` (
  20. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  21. `session_id` varchar(64) NOT NULL COMMENT '会话ID',
  22. `user_id` int(11) NOT NULL COMMENT '用户ID',
  23. `machine_code` varchar(100) DEFAULT NULL COMMENT '机器码',
  24. `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP地址',
  25. `user_agent` text COMMENT '用户代理',
  26. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活:0-否,1-是',
  27. `expires_at` datetime NOT NULL COMMENT '过期时间',
  28. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  29. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  30. `last_activity` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后活动时间',
  31. PRIMARY KEY (`id`),
  32. UNIQUE KEY `ix_sessions_session_id` (`session_id`),
  33. KEY `ix_sessions_user_id` (`user_id`),
  34. KEY `ix_sessions_is_active` (`is_active`),
  35. KEY `ix_sessions_expires_at` (`expires_at`)
  36. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会话表';
  37. -- 插入默认配置数据(纵表结构)
  38. INSERT INTO `system_config` (`config_key`, `config_value`, `config_type`, `description`, `is_system`, `is_editable`) VALUES
  39. ('heartbeat_interval_seconds', '30', 'int', '心跳间隔秒数(默认30秒)', 1, 1),
  40. ('key_overlap_minutes', '30', 'int', '新旧密钥共存分钟数', 1, 1),
  41. ('key_expire_minutes', '60', 'int', '密钥过期分钟数(从创建时间算起)', 1, 1),
  42. ('max_heartbeat_failures', '10', 'int', '最大心跳失败次数,超过后暂停检测', 1, 1),
  43. ('max_network_failures', '15', 'int', '网络异常最大失败次数,超过后登出', 1, 1),
  44. ('prevent_duplicate_login', '1', 'bool', '是否防止重复登录:0-否,1-是', 1, 1),
  45. ('timestamp_tolerance_seconds', '300', 'int', '时间戳容忍秒数(前后5分钟)', 1, 1),
  46. ('session_extend_enabled', '1', 'bool', '是否启用心跳延长session:0-否,1-是', 1, 1),
  47. ('session_extend_threshold_hours', '4', 'int', 'session延长阈值(小时),距离过期小于此值时延长', 1, 1),
  48. ('session_extend_hours', '2', 'int', '每次心跳延长的小时数', 1, 1),
  49. ('api_timeout_seconds', '30', 'int', 'API请求超时秒数', 1, 1),
  50. ('client_heartbeat_interval_seconds', '30', 'int', '客户端心跳间隔秒数', 1, 1)
  51. ON DUPLICATE KEY UPDATE
  52. `config_value` = VALUES(`config_value`),
  53. `config_type` = VALUES(`config_type`),
  54. `description` = VALUES(`description`),
  55. `is_system` = VALUES(`is_system`),
  56. `is_editable` = VALUES(`is_editable`),
  57. `updated_at` = NOW();