buff_client.sql 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. /*
  2. 游铛铛客户端数据库模型 - SQL脚本
  3. 创建日期: 2026-02-02
  4. 文档版本: v1.0.0
  5. 描述: 客户端exe相关数据库模型,包含用户认证、卡密充值、心跳配置等
  6. */
  7. SET NAMES utf8mb4;
  8. SET FOREIGN_KEY_CHECKS = 0;
  9. -- ==================== 用户认证模块 ====================
  10. -- ----------------------------
  11. -- Table structure for users (用户表)
  12. -- ----------------------------
  13. DROP TABLE IF EXISTS `users`;
  14. CREATE TABLE `users` (
  15. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  16. `username` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
  17. `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码(bcrypt加密)',
  18. `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  19. `machine_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '机器码(MD5)',
  20. `card_id` int(11) DEFAULT NULL COMMENT '当前卡密ID',
  21. `expire_time` datetime DEFAULT NULL COMMENT '到期时间',
  22. `status` tinyint(1) DEFAULT '1' COMMENT '状态: 1-正常, 0-禁用',
  23. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除: 0-否, 1-是',
  24. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  25. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  26. PRIMARY KEY (`id`),
  27. UNIQUE KEY `uk_username` (`username`),
  28. KEY `idx_machine_code` (`machine_code`),
  29. KEY `idx_status` (`status`),
  30. KEY `idx_expire_time` (`expire_time`)
  31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
  32. -- ----------------------------
  33. -- Table structure for users_his (用户表历史记录)
  34. -- ----------------------------
  35. DROP TABLE IF EXISTS `users_his`;
  36. CREATE TABLE `users_his` (
  37. `id` int(11) NOT NULL COMMENT '原表主键ID',
  38. `username` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
  39. `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
  40. `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  41. `machine_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '机器码',
  42. `card_id` int(11) DEFAULT NULL COMMENT '当前卡密ID',
  43. `expire_time` datetime DEFAULT NULL COMMENT '到期时间',
  44. `status` tinyint(1) DEFAULT '1' COMMENT '状态',
  45. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  46. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  47. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  48. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  49. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  50. PRIMARY KEY (`id`, `his_created_at`),
  51. KEY `idx_his_created_at` (`his_created_at`)
  52. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表历史记录';
  53. -- ----------------------------
  54. -- Table structure for sessions (会话表)
  55. -- ----------------------------
  56. DROP TABLE IF EXISTS `sessions`;
  57. CREATE TABLE `sessions` (
  58. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  59. `session_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '会话ID(UUID)',
  60. `user_id` int(11) NOT NULL COMMENT '用户ID',
  61. `machine_code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '机器码',
  62. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
  63. `expires_at` datetime NOT NULL COMMENT '过期时间',
  64. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  65. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  66. PRIMARY KEY (`id`),
  67. UNIQUE KEY `uk_session_id` (`session_id`),
  68. KEY `idx_user_id` (`user_id`),
  69. KEY `idx_expires_at` (`expires_at`)
  70. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会话表';
  71. -- ----------------------------
  72. -- Table structure for sessions_his (会话表历史记录)
  73. -- ----------------------------
  74. DROP TABLE IF EXISTS `sessions_his`;
  75. CREATE TABLE `sessions_his` (
  76. `id` int(11) NOT NULL COMMENT '原表主键ID',
  77. `session_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '会话ID',
  78. `user_id` int(11) NOT NULL COMMENT '用户ID',
  79. `machine_code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '机器码',
  80. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
  81. `expires_at` datetime NOT NULL COMMENT '过期时间',
  82. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  83. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  84. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  85. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE/RENEW',
  86. PRIMARY KEY (`id`, `his_created_at`),
  87. KEY `idx_his_created_at` (`his_created_at`)
  88. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会话表历史记录';
  89. -- ==================== 商业化模块 ====================
  90. -- ----------------------------
  91. -- Table structure for software (软件产品表)
  92. -- ----------------------------
  93. DROP TABLE IF EXISTS `software`;
  94. CREATE TABLE `software` (
  95. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  96. `code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件特征码(如: buff-xp-steam-sh)',
  97. `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件名称',
  98. `daily_price` decimal(10,2) DEFAULT '0.00' COMMENT '每天价格基数',
  99. `description` text COLLATE utf8mb4_unicode_ci COMMENT '软件描述',
  100. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用: 1-启用, 0-禁用',
  101. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除: 0-否, 1-是',
  102. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  103. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  104. PRIMARY KEY (`id`),
  105. UNIQUE KEY `uk_code` (`code`),
  106. KEY `idx_is_active` (`is_active`)
  107. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='软件产品表';
  108. -- ----------------------------
  109. -- Table structure for software_his (软件产品表历史记录)
  110. -- ----------------------------
  111. DROP TABLE IF EXISTS `software_his`;
  112. CREATE TABLE `software_his` (
  113. `id` int(11) NOT NULL COMMENT '原表主键ID',
  114. `code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件特征码',
  115. `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件名称',
  116. `daily_price` decimal(10,2) DEFAULT '0.00' COMMENT '每天价格基数',
  117. `description` text COLLATE utf8mb4_unicode_ci COMMENT '软件描述',
  118. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用',
  119. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  120. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  121. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  122. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  123. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  124. PRIMARY KEY (`id`, `his_created_at`)
  125. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='软件产品表历史记录';
  126. -- ----------------------------
  127. -- Table structure for cards (卡密表)
  128. -- ----------------------------
  129. DROP TABLE IF EXISTS `cards`;
  130. CREATE TABLE `cards` (
  131. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  132. `card_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '卡密代码',
  133. `software_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件特征码',
  134. `days` int(11) NOT NULL COMMENT '天数',
  135. `discount` int(11) DEFAULT '100' COMMENT '折扣(100=原价)',
  136. `user_id` int(11) DEFAULT NULL COMMENT '激活用户ID',
  137. `activated_at` datetime DEFAULT NULL COMMENT '激活时间',
  138. `expire_time` datetime DEFAULT NULL COMMENT '到期时间',
  139. `status` tinyint(4) DEFAULT '0' COMMENT '状态: 0-未激活, 1-已激活, 2-已过期',
  140. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除: 0-否, 1-是',
  141. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  142. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  143. PRIMARY KEY (`id`),
  144. UNIQUE KEY `uk_card_code` (`card_code`),
  145. KEY `idx_user_id` (`user_id`),
  146. KEY `idx_status` (`status`),
  147. KEY `idx_software_code` (`software_code`)
  148. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='卡密表';
  149. -- ----------------------------
  150. -- Table structure for cards_his (卡密表历史记录)
  151. -- ----------------------------
  152. DROP TABLE IF EXISTS `cards_his`;
  153. CREATE TABLE `cards_his` (
  154. `id` int(11) NOT NULL COMMENT '原表主键ID',
  155. `card_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '卡密代码',
  156. `software_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件特征码',
  157. `days` int(11) NOT NULL COMMENT '天数',
  158. `discount` int(11) DEFAULT '100' COMMENT '折扣',
  159. `user_id` int(11) DEFAULT NULL COMMENT '激活用户ID',
  160. `activated_at` datetime DEFAULT NULL COMMENT '激活时间',
  161. `expire_time` datetime DEFAULT NULL COMMENT '到期时间',
  162. `status` tinyint(4) DEFAULT '0' COMMENT '状态',
  163. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  164. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  165. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  166. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  167. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  168. PRIMARY KEY (`id`, `his_created_at`)
  169. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='卡密表历史记录';
  170. -- ----------------------------
  171. -- Table structure for recharge_records (充值记录表)
  172. -- ----------------------------
  173. DROP TABLE IF EXISTS `recharge_records`;
  174. CREATE TABLE `recharge_records` (
  175. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  176. `user_id` int(11) NOT NULL COMMENT '用户ID',
  177. `card_id` int(11) NOT NULL COMMENT '卡密ID',
  178. `software_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件特征码',
  179. `days` int(11) NOT NULL COMMENT '充值天数',
  180. `expire_time_before` datetime DEFAULT NULL COMMENT '充值前到期时间',
  181. `expire_time_after` datetime DEFAULT NULL COMMENT '充值后到期时间',
  182. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  183. PRIMARY KEY (`id`),
  184. KEY `idx_user_id` (`user_id`),
  185. KEY `idx_card_id` (`card_id`),
  186. KEY `idx_created_at` (`created_at`)
  187. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='充值记录表';
  188. -- ----------------------------
  189. -- Table structure for recharge_records_his (充值记录表历史记录)
  190. -- ----------------------------
  191. DROP TABLE IF EXISTS `recharge_records_his`;
  192. CREATE TABLE `recharge_records_his` (
  193. `id` int(11) NOT NULL COMMENT '原表主键ID',
  194. `user_id` int(11) NOT NULL COMMENT '用户ID',
  195. `card_id` int(11) NOT NULL COMMENT '卡密ID',
  196. `software_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '软件特征码',
  197. `days` int(11) NOT NULL COMMENT '充值天数',
  198. `expire_time_before` datetime DEFAULT NULL COMMENT '充值前到期时间',
  199. `expire_time_after` datetime DEFAULT NULL COMMENT '充值后到期时间',
  200. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  201. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  202. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  203. PRIMARY KEY (`id`, `his_created_at`)
  204. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='充值记录表历史记录';
  205. -- ==================== 系统配置模块 ====================
  206. -- ----------------------------
  207. -- Table structure for system_config (系统配置表 - 纵表设计)
  208. -- ----------------------------
  209. DROP TABLE IF EXISTS `system_config`;
  210. CREATE TABLE `system_config` (
  211. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  212. `config_key` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '配置键名',
  213. `config_value` text COLLATE utf8mb4_unicode_ci COMMENT '配置值',
  214. `config_type` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'string' COMMENT '类型: int/string/bool/json',
  215. `app_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所属应用(backend-admin/backend-client)',
  216. `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配置描述',
  217. `is_system` tinyint(1) DEFAULT '0' COMMENT '是否系统配置',
  218. `is_editable` tinyint(1) DEFAULT '1' COMMENT '是否可编辑',
  219. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除: 0-否, 1-是',
  220. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  221. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  222. PRIMARY KEY (`id`),
  223. UNIQUE KEY `uk_config_key_app` (`config_key`, `app_name`),
  224. KEY `idx_app_name` (`app_name`)
  225. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
  226. -- ----------------------------
  227. -- 客户端核心配置数据 (初始数据)
  228. -- ----------------------------
  229. INSERT INTO `system_config` (`config_key`, `config_value`, `config_type`, `app_name`, `description`, `is_system`) VALUES
  230. -- 心跳相关配置
  231. ('heartbeat_interval_seconds', '10', 'int', 'backend-client', '心跳检测间隔秒数', 0),
  232. ('max_heartbeat_failures', '100', 'int', 'backend-client', '心跳最大失败次数', 0),
  233. -- Session自动续期配置
  234. ('session_renewal_threshold', '1800', 'int', 'backend-client', 'Session续期阈值(秒),剩余时间小于此值时触发续期', 0),
  235. ('session_extension_duration', '3600', 'int', 'backend-client', 'Session延长时间(秒),续期时延长的时长', 0),
  236. ('session_default_expiry_seconds', '86400', 'int', 'backend-client', 'Session默认有效期(秒),新登录时创建的有效期', 0),
  237. -- 安全相关配置
  238. ('timestamp_tolerance_seconds', '300', 'int', 'backend-client', '时间戳容忍秒数(±5分钟)', 0),
  239. ('prevent_duplicate_login', 'true', 'bool', 'backend-client', '是否防止重复登录', 0),
  240. -- 登录相关配置
  241. ('max_login_attempts', '5', 'int', 'backend-client', '最大登录失败次数', 0),
  242. ('login_lockout_minutes', '60', 'int', 'backend-client', '登录锁定分钟数', 0),
  243. -- 公告相关配置
  244. ('announcement_cache_seconds', '300', 'int', 'backend-client', '公告缓存秒数', 0),
  245. -- 密钥相关配置 (客户端只读)
  246. ('key_sync_interval_seconds', '60', 'int', 'backend-client', '密钥同步间隔秒数', 0);
  247. -- ----------------------------
  248. -- Table structure for system_config_his (系统配置表历史记录)
  249. -- ----------------------------
  250. DROP TABLE IF EXISTS `system_config_his`;
  251. CREATE TABLE `system_config_his` (
  252. `id` int(11) NOT NULL COMMENT '原表主键ID',
  253. `config_key` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '配置键名',
  254. `config_value` text COLLATE utf8mb4_unicode_ci COMMENT '配置值',
  255. `config_type` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'string' COMMENT '类型',
  256. `app_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所属应用',
  257. `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配置描述',
  258. `is_system` tinyint(1) DEFAULT '0' COMMENT '是否系统配置',
  259. `is_editable` tinyint(1) DEFAULT '1' COMMENT '是否可编辑',
  260. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  261. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  262. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  263. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  264. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  265. PRIMARY KEY (`id`, `his_created_at`)
  266. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表历史记录';
  267. -- ==================== 公告模块 ====================
  268. -- ----------------------------
  269. -- Table structure for announcements (公告表)
  270. -- ----------------------------
  271. DROP TABLE IF EXISTS `announcements`;
  272. CREATE TABLE `announcements` (
  273. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  274. `title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '公告标题',
  275. `content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '公告内容',
  276. `priority` tinyint(4) DEFAULT '0' COMMENT '优先级:0-普通,1-重要,2-紧急',
  277. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用:1-启用,0-禁用',
  278. `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
  279. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除:0-否,1-是',
  280. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  281. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  282. PRIMARY KEY (`id`),
  283. KEY `idx_is_active` (`is_active`),
  284. KEY `idx_priority` (`priority`),
  285. KEY `idx_publish_time` (`publish_time`)
  286. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公告表';
  287. -- ----------------------------
  288. -- Table structure for announcements_his (公告表历史记录)
  289. -- ----------------------------
  290. DROP TABLE IF EXISTS `announcements_his`;
  291. CREATE TABLE `announcements_his` (
  292. `id` int(11) NOT NULL COMMENT '原表主键ID',
  293. `title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '公告标题',
  294. `content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '公告内容',
  295. `priority` tinyint(4) DEFAULT '0' COMMENT '优先级',
  296. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用',
  297. `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
  298. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  299. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  300. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  301. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  302. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  303. PRIMARY KEY (`id`, `his_created_at`)
  304. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公告表历史记录';
  305. -- ==================== Steam账号模块 ====================
  306. -- ----------------------------
  307. -- Table structure for steam_accounts (Steam账号绑定表)
  308. -- ----------------------------
  309. DROP TABLE IF EXISTS `steam_accounts`;
  310. CREATE TABLE `steam_accounts` (
  311. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  312. `user_id` int(11) NOT NULL COMMENT '用户ID',
  313. `steam_username` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Steam用户名',
  314. `steam_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Steam ID',
  315. `shared_secret` text COLLATE utf8mb4_unicode_ci COMMENT 'Steam Guard共享密钥(加密存储)',
  316. `identity_secret` text COLLATE utf8mb4_unicode_ci COMMENT 'Steam Guard身份密钥(加密存储)',
  317. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用',
  318. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除: 0-否, 1-是',
  319. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  320. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  321. PRIMARY KEY (`id`),
  322. KEY `idx_user_id` (`user_id`)
  323. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Steam账号绑定表';
  324. -- ----------------------------
  325. -- Table structure for steam_accounts_his (Steam账号绑定表历史记录)
  326. -- ----------------------------
  327. DROP TABLE IF EXISTS `steam_accounts_his`;
  328. CREATE TABLE `steam_accounts_his` (
  329. `id` int(11) NOT NULL COMMENT '原表主键ID',
  330. `user_id` int(11) NOT NULL COMMENT '用户ID',
  331. `steam_username` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Steam用户名',
  332. `steam_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Steam ID',
  333. `shared_secret` text COLLATE utf8mb4_unicode_ci COMMENT 'Steam Guard共享密钥',
  334. `identity_secret` text COLLATE utf8mb4_unicode_ci COMMENT 'Steam Guard身份密钥',
  335. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用',
  336. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  337. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  338. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  339. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  340. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  341. PRIMARY KEY (`id`, `his_created_at`)
  342. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Steam账号绑定表历史记录';
  343. -- ==================== API密钥管理模块 ====================
  344. -- ----------------------------
  345. -- Table structure for api_keys (API密钥表)
  346. -- ----------------------------
  347. DROP TABLE IF EXISTS `api_keys`;
  348. CREATE TABLE `api_keys` (
  349. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  350. `public_key` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RSA公钥(PEM格式)',
  351. `private_key` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RSA私钥(PEM格式,加密存储)',
  352. `key_version` int(11) NOT NULL COMMENT '密钥版本号',
  353. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活:1-激活,0-非激活',
  354. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除:0-否,1-是',
  355. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  356. `expire_at` datetime DEFAULT NULL COMMENT '过期时间(创建时间+10天)',
  357. `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
  358. PRIMARY KEY (`id`),
  359. KEY `idx_key_version` (`key_version`),
  360. KEY `idx_is_active` (`is_active`),
  361. KEY `idx_expire_at` (`expire_at`)
  362. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API密钥表';
  363. -- ----------------------------
  364. -- Table structure for api_keys_his (API密钥表历史记录)
  365. -- ----------------------------
  366. DROP TABLE IF EXISTS `api_keys_his`;
  367. CREATE TABLE `api_keys_his` (
  368. `id` int(11) NOT NULL COMMENT '原表主键ID',
  369. `public_key` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RSA公钥',
  370. `private_key` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RSA私钥',
  371. `key_version` int(11) NOT NULL COMMENT '密钥版本号',
  372. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
  373. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  374. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  375. `expire_at` datetime DEFAULT NULL COMMENT '过期时间',
  376. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  377. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  378. PRIMARY KEY (`id`, `his_created_at`)
  379. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API密钥表历史记录';
  380. -- ==================== API安全模块 ====================
  381. -- ----------------------------
  382. -- Table structure for api_nonces (API Nonce防重放表)
  383. -- ----------------------------
  384. DROP TABLE IF EXISTS `api_nonces`;
  385. CREATE TABLE `api_nonces` (
  386. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  387. `nonce` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '随机字符串',
  388. `endpoint` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '接口路径',
  389. `session_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '会话ID',
  390. `user_id` int(11) DEFAULT NULL COMMENT '用户ID',
  391. `expires_at` datetime NOT NULL COMMENT '过期时间',
  392. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  393. PRIMARY KEY (`id`),
  394. UNIQUE KEY `uk_nonce_endpoint` (`nonce`, `endpoint`),
  395. KEY `idx_expires_at` (`expires_at`)
  396. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API Nonce防重放表';
  397. -- ----------------------------
  398. -- Table structure for api_nonces_his (API Nonce表历史记录)
  399. -- ----------------------------
  400. DROP TABLE IF EXISTS `api_nonces_his`;
  401. CREATE TABLE `api_nonces_his` (
  402. `id` int(11) NOT NULL COMMENT '原表主键ID',
  403. `nonce` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '随机字符串',
  404. `endpoint` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '接口路径',
  405. `session_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '会话ID',
  406. `user_id` int(11) DEFAULT NULL COMMENT '用户ID',
  407. `expires_at` datetime NOT NULL COMMENT '过期时间',
  408. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  409. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  410. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  411. PRIMARY KEY (`id`, `his_created_at`)
  412. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API Nonce表历史记录';
  413. -- ----------------------------
  414. -- Table structure for api_logs (API请求日志表)
  415. -- ----------------------------
  416. DROP TABLE IF EXISTS `api_logs`;
  417. CREATE TABLE `api_logs` (
  418. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  419. `user_id` int(11) DEFAULT NULL COMMENT '用户ID(可为NULL)',
  420. `endpoint` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '接口路径',
  421. `method` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'HTTP方法',
  422. `request_data` text COLLATE utf8mb4_unicode_ci COMMENT '加密前的原始请求参数',
  423. `response_data` text COLLATE utf8mb4_unicode_ci COMMENT '解密后的原始响应数据',
  424. `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户端IP',
  425. `user_agent` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户代理',
  426. `response_code` int(11) DEFAULT NULL COMMENT '响应状态码',
  427. `execution_time` int(11) DEFAULT NULL COMMENT '执行时间(毫秒)',
  428. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  429. PRIMARY KEY (`id`),
  430. KEY `idx_user_id_created_at` (`user_id`, `created_at`),
  431. KEY `idx_endpoint` (`endpoint`),
  432. KEY `idx_created_at` (`created_at`)
  433. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API请求日志表';
  434. -- ----------------------------
  435. -- Table structure for api_logs_his (API日志表历史记录)
  436. -- ----------------------------
  437. DROP TABLE IF EXISTS `api_logs_his`;
  438. CREATE TABLE `api_logs_his` (
  439. `id` int(11) NOT NULL COMMENT '原表主键ID',
  440. `user_id` int(11) DEFAULT NULL COMMENT '用户ID',
  441. `endpoint` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '接口路径',
  442. `method` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'HTTP方法',
  443. `request_data` text COLLATE utf8mb4_unicode_ci COMMENT '请求参数',
  444. `response_data` text COLLATE utf8mb4_unicode_ci COMMENT '响应数据',
  445. `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户端IP',
  446. `user_agent` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户代理',
  447. `response_code` int(11) DEFAULT NULL COMMENT '响应状态码',
  448. `execution_time` int(11) DEFAULT NULL COMMENT '执行时间(毫秒)',
  449. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  450. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  451. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  452. PRIMARY KEY (`id`, `his_created_at`)
  453. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API请求日志表历史记录';
  454. SET FOREIGN_KEY_CHECKS = 1;