create.sql 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. -- GameItems模块数据库表结构
  2. -- 游戏物品模块,负责游戏内所有物品的管理
  3. -- 物品分类表
  4. CREATE TABLE `kku_item_categories` (
  5. `id` int NOT NULL AUTO_INCREMENT COMMENT '分类ID,主键',
  6. `name` varchar(255) NOT NULL COMMENT '分类名称',
  7. `code` varchar(100) NOT NULL COMMENT '分类编码(唯一)',
  8. `icon` varchar(255) DEFAULT NULL COMMENT '分类图标',
  9. `sort` int DEFAULT '0' COMMENT '排序权重',
  10. `parent_id` int DEFAULT NULL COMMENT '父分类ID(可为空,用于实现分类层级)',
  11. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  12. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  13. PRIMARY KEY (`id`),
  14. UNIQUE KEY `idx_code` (`code`),
  15. KEY `idx_parent_id` (`parent_id`)
  16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分类表';
  17. -- 统一属性物品表
  18. CREATE TABLE `kku_item_items` (
  19. `id` int NOT NULL AUTO_INCREMENT COMMENT '物品ID,主键',
  20. `name` varchar(255) NOT NULL COMMENT '物品名称',
  21. `description` text COMMENT '物品描述',
  22. `category_id` int NOT NULL COMMENT '物品分类ID,外键关联kku_item_categories表',
  23. `type` tinyint NOT NULL COMMENT '物品类型(1:可使用, 2:可装备, 3:可合成, 4:可交任务, 5:可开启...)',
  24. `is_unique` tinyint DEFAULT '0' COMMENT '是否是单独属性物品(0:否,默认, 1:是)',
  25. `icon` varchar(255) DEFAULT NULL COMMENT '物品图标路径',
  26. `max_stack` int DEFAULT '1' COMMENT '最大堆叠数量',
  27. `sell_price` int DEFAULT '0' COMMENT '出售价格',
  28. `tradable` tinyint DEFAULT '1' COMMENT '是否可交易(0:不可交易, 1:可交易,默认)',
  29. `dismantlable` tinyint DEFAULT '1' COMMENT '是否可分解(0:不可分解, 1:可分解,默认)',
  30. `default_expire_seconds` int DEFAULT '0' COMMENT '玩家获取物品后的默认有效秒数(0表示永久有效)',
  31. `display_attributes` json DEFAULT NULL COMMENT '展示属性,以JSON格式存储键值对,用于界面展示和描述的属性',
  32. `numeric_attributes` json DEFAULT NULL COMMENT '数值属性,以JSON格式存储键值对,用于计算和游戏逻辑的属性',
  33. `global_expire_at` timestamp NULL DEFAULT NULL COMMENT '物品全局过期时间(可为空)',
  34. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  35. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  36. PRIMARY KEY (`id`),
  37. KEY `idx_category_id` (`category_id`),
  38. KEY `idx_type` (`type`),
  39. KEY `idx_is_unique` (`is_unique`),
  40. KEY `idx_tradable` (`tradable`),
  41. KEY `idx_dismantlable` (`dismantlable`),
  42. KEY `idx_global_expire_at` (`global_expire_at`)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='统一属性物品表';
  44. -- 单独属性物品表
  45. CREATE TABLE `kku_item_instances` (
  46. `id` int NOT NULL AUTO_INCREMENT COMMENT '唯一物品ID,主键',
  47. `item_id` int NOT NULL COMMENT '关联的基础物品ID,外键关联kku_item_items表',
  48. `name` varchar(255) DEFAULT NULL COMMENT '物品名称(可以与基础物品不同)',
  49. `display_attributes` json DEFAULT NULL COMMENT '展示属性,以JSON格式存储键值对',
  50. `numeric_attributes` json DEFAULT NULL COMMENT '数值属性,以JSON格式存储键值对',
  51. `tradable` tinyint DEFAULT '1' COMMENT '是否可交易(0:不可交易, 1:可交易,默认)',
  52. `is_bound` tinyint DEFAULT '0' COMMENT '是否已绑定(0:未绑定, 1:已绑定)',
  53. `bound_to` varchar(255) DEFAULT NULL COMMENT '绑定对象(账号ID或角色ID)',
  54. `bind_exp_time` timestamp NULL DEFAULT NULL COMMENT '绑定过期时间(为空表示永久绑定)',
  55. `expire_at` timestamp NULL DEFAULT NULL COMMENT '物品过期时间(可为空)',
  56. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  57. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  58. PRIMARY KEY (`id`),
  59. KEY `idx_item_id` (`item_id`),
  60. KEY `idx_tradable` (`tradable`),
  61. KEY `idx_is_bound` (`is_bound`),
  62. KEY `idx_bound_to` (`bound_to`),
  63. KEY `idx_bind_exp_time` (`bind_exp_time`),
  64. KEY `idx_expire_at` (`expire_at`),
  65. CONSTRAINT `fk_instance_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
  66. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='单独属性物品表';
  67. -- 用户物品关联表
  68. CREATE TABLE `kku_item_users` (
  69. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  70. `user_id` int NOT NULL COMMENT '用户ID',
  71. `item_id` int NOT NULL COMMENT '统一属性物品ID,外键关联kku_item_items表',
  72. `instance_id` int DEFAULT NULL COMMENT '单独属性物品ID,外键关联kku_item_instances表(可为空)',
  73. `quantity` int NOT NULL DEFAULT '1' COMMENT '数量(对于单独属性物品,该值始终为1)',
  74. `expire_at` timestamp NULL DEFAULT NULL COMMENT '用户物品过期时间(可为空)',
  75. `created_at` timestamp NULL DEFAULT NULL COMMENT '获取时间',
  76. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  77. PRIMARY KEY (`id`),
  78. KEY `idx_user_item` (`user_id`, `item_id`),
  79. KEY `idx_user_instance` (`user_id`, `instance_id`),
  80. KEY `idx_expire_at` (`expire_at`),
  81. CONSTRAINT `fk_user_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
  82. CONSTRAINT `fk_user_instance` FOREIGN KEY (`instance_id`) REFERENCES `kku_item_instances` (`id`) ON DELETE CASCADE
  83. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户物品关联表';
  84. -- 物品组表
  85. CREATE TABLE `kku_item_groups` (
  86. `id` int NOT NULL AUTO_INCREMENT COMMENT '物品组ID,主键',
  87. `name` varchar(255) NOT NULL COMMENT '物品组名称',
  88. `code` varchar(100) NOT NULL COMMENT '物品组编码(唯一)',
  89. `description` text COMMENT '物品组描述',
  90. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  91. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  92. PRIMARY KEY (`id`),
  93. UNIQUE KEY `idx_code` (`code`)
  94. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品组表';
  95. -- 物品组内容表
  96. CREATE TABLE `kku_item_group_items` (
  97. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  98. `group_id` int NOT NULL COMMENT '物品组ID,外键关联kku_item_groups表',
  99. `item_id` int NOT NULL COMMENT '物品ID,外键关联kku_item_items表',
  100. `weight` decimal(5,3) NOT NULL COMMENT '权重,决定从物品组中选择该物品的概率',
  101. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  102. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  103. PRIMARY KEY (`id`),
  104. KEY `idx_group_id` (`group_id`),
  105. KEY `idx_item_id` (`item_id`),
  106. CONSTRAINT `fk_group_group` FOREIGN KEY (`group_id`) REFERENCES `kku_item_groups` (`id`) ON DELETE CASCADE,
  107. CONSTRAINT `fk_group_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
  108. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品组内容表';
  109. -- 宝箱内容配置表
  110. CREATE TABLE `kku_item_chest_contents` (
  111. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  112. `chest_id` int NOT NULL COMMENT '宝箱物品ID,外键关联kku_item_items表',
  113. `item_id` int DEFAULT NULL COMMENT '可能获得的物品ID,外键关联kku_item_items表(与group_id二选一)',
  114. `group_id` int DEFAULT NULL COMMENT '物品组ID,外键关联kku_item_groups表(与item_id二选一)',
  115. `min_quantity` int DEFAULT '1' COMMENT '最小数量',
  116. `max_quantity` int DEFAULT '1' COMMENT '最大数量',
  117. `weight` decimal(5,3) NOT NULL COMMENT '权重,决定获取概率',
  118. `allow_duplicate` tinyint DEFAULT '0' COMMENT '是否允许在同一宝箱中重复掉落(0:不允许, 1:允许)',
  119. `pity_count` int DEFAULT '0' COMMENT '保底次数,当玩家连续未获得该内容达到次数后必定获得(0表示不启用保底)',
  120. `pity_weight_factor` float DEFAULT '1.0' COMMENT '保底权重因子,用于递增概率计算(默认1.0)',
  121. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  122. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  123. PRIMARY KEY (`id`),
  124. KEY `idx_chest_id` (`chest_id`),
  125. KEY `idx_item_id` (`item_id`),
  126. KEY `idx_group_id` (`group_id`),
  127. KEY `idx_pity_count` (`pity_count`),
  128. CONSTRAINT `fk_chest_content_chest` FOREIGN KEY (`chest_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
  129. CONSTRAINT `fk_chest_content_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
  130. CONSTRAINT `fk_chest_content_group` FOREIGN KEY (`group_id`) REFERENCES `kku_item_groups` (`id`) ON DELETE CASCADE
  131. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='宝箱内容配置表';
  132. -- 用户宝箱内容保底计数表
  133. CREATE TABLE `kku_item_pity_times` (
  134. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  135. `user_id` int NOT NULL COMMENT '用户ID',
  136. `chest_id` int NOT NULL COMMENT '宝箱ID,外键关联kku_item_items表',
  137. `chest_content_id` int NOT NULL COMMENT '宝箱内容ID,外键关联kku_item_chest_contents表',
  138. `current_count` int NOT NULL DEFAULT '0' COMMENT '当前计数,每开启一次宝箱增加1',
  139. `last_reset_time` timestamp NULL DEFAULT NULL COMMENT '上次重置时间(可用于周期性重置)',
  140. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  141. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  142. PRIMARY KEY (`id`),
  143. UNIQUE KEY `idx_user_chest_content` (`user_id`, `chest_id`, `chest_content_id`),
  144. CONSTRAINT `fk_pity_chest` FOREIGN KEY (`chest_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
  145. CONSTRAINT `fk_pity_content` FOREIGN KEY (`chest_content_id`) REFERENCES `kku_item_chest_contents` (`id`) ON DELETE CASCADE
  146. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户宝箱内容保底计数表';
  147. -- 物品产出限制表
  148. CREATE TABLE `kku_item_output_limits` (
  149. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  150. `item_id` int NOT NULL COMMENT '物品ID,外键关联kku_item_items表',
  151. `limit_type` tinyint NOT NULL COMMENT '限制类型(1:全局总量, 2:单个用户, 3:单日全局, 4:单日用户)',
  152. `max_quantity` int NOT NULL COMMENT '最大产出数量',
  153. `current_quantity` int DEFAULT '0' COMMENT '当前已产出数量(全局限制时使用)',
  154. `reset_type` tinyint DEFAULT '0' COMMENT '重置类型(0:不重置, 1:每日, 2:每周, 3:每月)',
  155. `last_reset_time` timestamp NULL DEFAULT NULL COMMENT '上次重置时间',
  156. `related_items` json DEFAULT NULL COMMENT '关联物品ID列表,这些物品共享同一个限制额度',
  157. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  158. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  159. PRIMARY KEY (`id`),
  160. KEY `idx_item_id` (`item_id`),
  161. KEY `idx_limit_reset` (`limit_type`, `reset_type`),
  162. CONSTRAINT `fk_limit_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
  163. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品产出限制表';
  164. -- 用户物品产出限制计数表
  165. CREATE TABLE `kku_item_user_output_counters` (
  166. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  167. `user_id` int NOT NULL COMMENT '用户ID',
  168. `limit_id` int NOT NULL COMMENT '产出限制ID,外键关联kku_item_output_limits表',
  169. `current_count` int NOT NULL DEFAULT '0' COMMENT '当前产出计数',
  170. `record_date` date DEFAULT NULL COMMENT '记录日期(用于日期统计和重置)',
  171. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  172. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  173. PRIMARY KEY (`id`),
  174. KEY `idx_user_limit` (`user_id`, `limit_id`),
  175. KEY `idx_record_date` (`record_date`),
  176. CONSTRAINT `fk_user_limit` FOREIGN KEY (`limit_id`) REFERENCES `kku_item_output_limits` (`id`) ON DELETE CASCADE
  177. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户物品产出限制计数表';
  178. -- 物品获取/消耗记录表
  179. CREATE TABLE `kku_item_transaction_logs` (
  180. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  181. `user_id` int NOT NULL COMMENT '用户ID',
  182. `item_id` int NOT NULL COMMENT '物品ID,外键关联kku_item_items表',
  183. `instance_id` int DEFAULT NULL COMMENT '单独属性物品ID,外键关联kku_item_instances表(可为空)',
  184. `quantity` int NOT NULL COMMENT '数量(正数表示获取,负数表示消耗)',
  185. `transaction_type` tinyint NOT NULL COMMENT '交易类型(1:获取, 2:消耗, 3:交易获得, 4:交易失去, 5:过期失效)',
  186. `source_type` varchar(100) DEFAULT NULL COMMENT '来源类型(如任务奖励、商店购买、宝箱开启等)',
  187. `source_id` int DEFAULT NULL COMMENT '来源ID(如任务ID、订单ID、宝箱ID等)',
  188. `attributes` json DEFAULT NULL COMMENT '额外属性,存储交易相关的详细信息',
  189. `expire_at` timestamp NULL DEFAULT NULL COMMENT '物品过期时间(如果有)',
  190. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  191. `ip_address` varchar(100) DEFAULT NULL COMMENT '操作的IP地址(用于安全审计)',
  192. `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息(用于安全审计)',
  193. PRIMARY KEY (`id`),
  194. KEY `idx_user_created` (`user_id`, `created_at`),
  195. KEY `idx_item_id` (`item_id`),
  196. KEY `idx_transaction_source` (`transaction_type`, `source_type`)
  197. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品获取/消耗记录表';
  198. -- 宝箱开启记录表
  199. CREATE TABLE `kku_item_chest_open_logs` (
  200. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  201. `user_id` int NOT NULL COMMENT '用户ID',
  202. `chest_id` int NOT NULL COMMENT '宝箱ID,外键关联kku_item_items表',
  203. `open_time` timestamp NULL DEFAULT NULL COMMENT '开启时间',
  204. `open_quantity` int NOT NULL COMMENT '开启数量',
  205. `result_items` json NOT NULL COMMENT '获得的物品列表,包含物品ID、数量等信息',
  206. `pity_triggered` tinyint DEFAULT '0' COMMENT '是否触发保底机制(0:否, 1:是)',
  207. `pity_content_id` int DEFAULT NULL COMMENT '触发保底的内容ID,外键关联kku_item_chest_contents表(可为空)',
  208. `ip_address` varchar(100) DEFAULT NULL COMMENT '操作的IP地址(用于安全审计)',
  209. `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息(用于安全审计)',
  210. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  211. PRIMARY KEY (`id`),
  212. KEY `idx_user_open` (`user_id`, `open_time`),
  213. KEY `idx_chest_id` (`chest_id`),
  214. KEY `idx_pity_triggered` (`pity_triggered`)
  215. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='宝箱开启记录表';
  216. -- 物品合成配方表
  217. CREATE TABLE `kku_item_recipes` (
  218. `id` int NOT NULL AUTO_INCREMENT COMMENT '配方ID,主键',
  219. `name` varchar(255) NOT NULL COMMENT '配方名称',
  220. `result_item_id` int NOT NULL COMMENT '产出物品ID,外键关联kku_item_items表',
  221. `result_min_quantity` int DEFAULT '1' COMMENT '最小产出数量',
  222. `result_max_quantity` int DEFAULT '1' COMMENT '最大产出数量',
  223. `success_rate` decimal(5,2) NOT NULL COMMENT '成功率(百分比,最大100)',
  224. `coin_cost` json DEFAULT NULL COMMENT '货币成本,以JSON格式存储多种货币类型和数量',
  225. `level_required` int DEFAULT '1' COMMENT '所需等级',
  226. `is_default_unlocked` tinyint DEFAULT '0' COMMENT '是否默认解锁(0:否, 1:是)',
  227. `unlock_condition` json DEFAULT NULL COMMENT '解锁条件,以JSON格式存储',
  228. `cooldown_seconds` int DEFAULT '0' COMMENT '冷却时间(秒)',
  229. `category_id` int DEFAULT NULL COMMENT '配方分类ID',
  230. `sort_order` int DEFAULT '0' COMMENT '排序权重',
  231. `is_active` tinyint DEFAULT '1' COMMENT '是否激活(0:否, 1:是)',
  232. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  233. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  234. PRIMARY KEY (`id`),
  235. KEY `idx_result_item` (`result_item_id`),
  236. KEY `idx_category` (`category_id`),
  237. CONSTRAINT `fk_recipe_item` FOREIGN KEY (`result_item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
  238. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品合成配方表';
  239. -- 配方材料需求表
  240. CREATE TABLE `kku_item_recipe_materials` (
  241. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  242. `recipe_id` int NOT NULL COMMENT '配方ID,外键关联kku_item_recipes表',
  243. `item_id` int NOT NULL COMMENT '材料物品ID,外键关联kku_item_items表',
  244. `quantity` int NOT NULL COMMENT '所需数量',
  245. `is_consumed` tinyint DEFAULT '1' COMMENT '是否消耗(0:不消耗, 1:消耗)',
  246. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  247. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  248. PRIMARY KEY (`id`),
  249. KEY `idx_recipe_id` (`recipe_id`),
  250. KEY `idx_item_id` (`item_id`),
  251. CONSTRAINT `fk_material_recipe` FOREIGN KEY (`recipe_id`) REFERENCES `kku_item_recipes` (`id`) ON DELETE CASCADE,
  252. CONSTRAINT `fk_material_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
  253. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='配方材料需求表';
  254. -- 用户配方解锁状态表
  255. CREATE TABLE `kku_item_user_recipes` (
  256. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  257. `user_id` int NOT NULL COMMENT '用户ID',
  258. `recipe_id` int NOT NULL COMMENT '配方ID,外键关联kku_item_recipes表',
  259. `is_unlocked` tinyint DEFAULT '0' COMMENT '是否已解锁(0:否, 1:是)',
  260. `unlock_time` timestamp NULL DEFAULT NULL COMMENT '解锁时间',
  261. `last_craft_time` timestamp NULL DEFAULT NULL COMMENT '最后合成时间',
  262. `craft_count` int DEFAULT '0' COMMENT '合成次数',
  263. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  264. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  265. PRIMARY KEY (`id`),
  266. UNIQUE KEY `idx_user_recipe` (`user_id`, `recipe_id`),
  267. CONSTRAINT `fk_user_recipe` FOREIGN KEY (`recipe_id`) REFERENCES `kku_item_recipes` (`id`) ON DELETE CASCADE
  268. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户配方解锁状态表';
  269. -- 物品合成记录表
  270. CREATE TABLE `kku_item_craft_logs` (
  271. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  272. `user_id` int NOT NULL COMMENT '用户ID',
  273. `recipe_id` int NOT NULL COMMENT '配方ID,外键关联kku_item_recipes表',
  274. `materials` json NOT NULL COMMENT '消耗的材料,以JSON格式存储',
  275. `result_item_id` int NOT NULL COMMENT '获得的物品ID,外键关联kku_item_items表',
  276. `result_instance_id` int DEFAULT NULL COMMENT '获得的单独属性物品ID,外键关联kku_item_instances表(可为空)',
  277. `result_quantity` int NOT NULL COMMENT '获得的物品数量',
  278. `is_success` tinyint NOT NULL COMMENT '是否成功(0:失败, 1:成功)',
  279. `craft_time` timestamp NULL DEFAULT NULL COMMENT '合成时间',
  280. `ip_address` varchar(100) DEFAULT NULL COMMENT '操作的IP地址',
  281. `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息',
  282. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  283. PRIMARY KEY (`id`),
  284. KEY `idx_user_recipe` (`user_id`, `recipe_id`),
  285. KEY `idx_craft_time` (`craft_time`)
  286. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品合成记录表';
  287. -- 物品分解规则表
  288. CREATE TABLE `kku_item_dismantle_rules` (
  289. `id` int NOT NULL AUTO_INCREMENT COMMENT '规则ID,主键',
  290. `item_id` int DEFAULT NULL COMMENT '物品ID,外键关联kku_item_items表',
  291. `category_id` int DEFAULT NULL COMMENT '分类ID,外键关联kku_item_categories表',
  292. `min_rarity` tinyint DEFAULT '1' COMMENT '最小适用稀有度',
  293. `max_rarity` tinyint DEFAULT '1' COMMENT '最大适用稀有度',
  294. `priority` int DEFAULT '0' COMMENT '规则优先级',
  295. `is_active` tinyint DEFAULT '1' COMMENT '是否激活(0:否, 1:是)',
  296. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  297. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  298. PRIMARY KEY (`id`),
  299. KEY `idx_item_id` (`item_id`),
  300. KEY `idx_category_id` (`category_id`),
  301. KEY `idx_priority` (`priority`)
  302. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分解规则表';
  303. -- 物品分解结果配置表
  304. CREATE TABLE `kku_item_dismantle_results` (
  305. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  306. `rule_id` int NOT NULL COMMENT '分解规则ID,外键关联kku_item_dismantle_rules表',
  307. `result_item_id` int NOT NULL COMMENT '结果物品ID,外键关联kku_item_items表',
  308. `min_quantity` int DEFAULT '1' COMMENT '最小数量',
  309. `max_quantity` int DEFAULT '1' COMMENT '最大数量',
  310. `base_chance` decimal(5,2) NOT NULL COMMENT '基础获取概率(百分比,最大100)',
  311. `rarity_factor` decimal(5,2) DEFAULT '1.0' COMMENT '稀有度影响因子',
  312. `quality_factor` decimal(5,2) DEFAULT '1.0' COMMENT '品质影响因子',
  313. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  314. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  315. PRIMARY KEY (`id`),
  316. KEY `idx_rule_id` (`rule_id`),
  317. KEY `idx_result_item` (`result_item_id`),
  318. CONSTRAINT `fk_result_rule` FOREIGN KEY (`rule_id`) REFERENCES `kku_item_dismantle_rules` (`id`) ON DELETE CASCADE,
  319. CONSTRAINT `fk_result_item` FOREIGN KEY (`result_item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
  320. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分解结果配置表';
  321. -- 物品分解记录表
  322. CREATE TABLE `kku_item_dismantle_logs` (
  323. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  324. `user_id` int NOT NULL COMMENT '用户ID',
  325. `item_id` int NOT NULL COMMENT '被分解的物品ID,外键关联kku_item_items表',
  326. `instance_id` int DEFAULT NULL COMMENT '被分解的单独属性物品ID,外键关联kku_item_instances表(可为空)',
  327. `quantity` int NOT NULL COMMENT '分解数量',
  328. `rule_id` int NOT NULL COMMENT '使用的分解规则ID,外键关联kku_item_dismantle_rules表',
  329. `results` json NOT NULL COMMENT '分解结果,包含获得的物品ID、数量等信息',
  330. `dismantle_time` timestamp NULL DEFAULT NULL COMMENT '分解时间',
  331. `ip_address` varchar(100) DEFAULT NULL COMMENT '操作的IP地址',
  332. `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息',
  333. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  334. PRIMARY KEY (`id`),
  335. KEY `idx_user_item` (`user_id`, `item_id`),
  336. KEY `idx_dismantle_time` (`dismantle_time`)
  337. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分解记录表';