create.sql 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. -- 团队模块数据库创建脚本
  2. -- 包含所有团队模块相关表的创建语句
  3. -- 1. 用户推荐关系表 (promotion_user_referrals)
  4. -- 存储用户与其直接推荐人(直接上级)的关系
  5. CREATE TABLE IF NOT EXISTS `kku_promotion_user_referrals` (
  6. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  7. `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  8. `referrer_id` bigint(20) NOT NULL COMMENT '直接推荐人ID',
  9. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  10. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `idx_user_id` (`user_id`),
  13. KEY `idx_referrer_id` (`referrer_id`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户直接推荐关系表';
  15. -- 2. 达人等级表 (promotion_user_talents)
  16. -- 存储用户的达人等级信息,包括直推人数和团队总人数
  17. CREATE TABLE IF NOT EXISTS `kku_promotion_user_talents` (
  18. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  19. `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  20. `talent_level` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '达人等级:0无,1初级,2中级,3高级,4资深,5顶级',
  21. `direct_count` int(11) NOT NULL DEFAULT '0' COMMENT '直推人数',
  22. `promotion_count` int(11) NOT NULL DEFAULT '0' COMMENT '团队总人数',
  23. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  24. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  25. PRIMARY KEY (`id`),
  26. UNIQUE KEY `idx_user_id` (`user_id`),
  27. KEY `idx_talent_level` (`talent_level`)
  28. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='达人等级表';
  29. -- 3. 团队收益记录表 (promotion_profits)
  30. -- 记录团队成员产生的分成收益
  31. CREATE TABLE IF NOT EXISTS `kku_promotion_profits` (
  32. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  33. `user_id` bigint(20) NOT NULL COMMENT '获得收益的用户ID',
  34. `promotion_member_id` bigint(20) NOT NULL COMMENT '团队成员ID',
  35. `source_id` bigint(20) NOT NULL COMMENT '收益来源ID',
  36. `source_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收益来源类型',
  37. `item_id` bigint(20) NOT NULL COMMENT '物品ID',
  38. `profit_amount` int(11) NOT NULL COMMENT '分成收益数量',
  39. `profit_rate` decimal(5,4) NOT NULL COMMENT '分成比例',
  40. `relation_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '关系类型:1直推,2间推',
  41. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  42. PRIMARY KEY (`id`),
  43. KEY `idx_user_id` (`user_id`),
  44. KEY `idx_promotion_member_id` (`promotion_member_id`),
  45. KEY `idx_source` (`source_type`,`source_id`),
  46. KEY `idx_relation_type` (`relation_type`),
  47. KEY `idx_created_at` (`created_at`)
  48. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='团队收益记录表';
  49. -- 4. 推荐码表 (promotion_referral_codes)
  50. -- 存储用户的推荐码信息
  51. CREATE TABLE IF NOT EXISTS `kku_promotion_referral_codes` (
  52. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  53. `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  54. `code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '推荐码',
  55. `usage_count` int(11) NOT NULL DEFAULT '0' COMMENT '使用次数',
  56. `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1有效,0无效',
  57. `expire_time` timestamp NULL DEFAULT NULL COMMENT '过期时间,NULL表示永不过期',
  58. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  59. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  60. PRIMARY KEY (`id`),
  61. UNIQUE KEY `idx_code` (`code`),
  62. UNIQUE KEY `idx_user_id` (`user_id`),
  63. KEY `idx_status` (`status`)
  64. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐码表';
  65. -- 5. 达人等级配置表 (promotion_talent_configs)
  66. -- 存储不同达人等级的配置信息
  67. CREATE TABLE IF NOT EXISTS `kku_promotion_talent_configs` (
  68. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  69. `level` tinyint(3) unsigned NOT NULL COMMENT '等级',
  70. `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '等级名称',
  71. `direct_count_required` int(11) NOT NULL COMMENT '所需直推人数',
  72. `promotion_count_required` int(11) NOT NULL COMMENT '所需团队总人数',
  73. `profit_rate` decimal(5,4) NOT NULL COMMENT '间推分成比例',
  74. `benefits` json DEFAULT NULL COMMENT '等级权益',
  75. `icon` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '等级图标',
  76. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  77. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  78. PRIMARY KEY (`id`),
  79. UNIQUE KEY `idx_level` (`level`)
  80. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='达人等级配置表';
  81. -- 6. 收益分成规则表 (promotion_profit_rules)
  82. -- 存储不同来源的收益分成规则
  83. CREATE TABLE IF NOT EXISTS `kku_promotion_profit_rules` (
  84. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  85. `source_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源类型',
  86. `direct_profit_rate` decimal(5,4) NOT NULL COMMENT '直推分成比例',
  87. `max_indirect_level` int(11) NOT NULL DEFAULT '20' COMMENT '最大间推层级',
  88. `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1有效,0无效',
  89. `rules` json DEFAULT NULL COMMENT '特殊规则',
  90. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  91. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  92. PRIMARY KEY (`id`),
  93. UNIQUE KEY `idx_source_type` (`source_type`),
  94. KEY `idx_status` (`status`)
  95. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收益分成规则表';
  96. -- 7. 推荐关系修改记录表 (promotion_referral_changes)
  97. -- 记录用户推荐关系的修改历史
  98. CREATE TABLE IF NOT EXISTS `kku_promotion_referral_changes` (
  99. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  100. `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  101. `old_referrer_id` bigint(20) DEFAULT NULL COMMENT '旧推荐人ID',
  102. `new_referrer_id` bigint(20) NOT NULL COMMENT '新推荐人ID',
  103. `change_time` timestamp NOT NULL COMMENT '修改时间',
  104. `change_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改原因',
  105. `changed_by` bigint(20) NOT NULL COMMENT '操作人ID',
  106. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  107. PRIMARY KEY (`id`),
  108. KEY `idx_user_id` (`user_id`),
  109. KEY `idx_change_time` (`change_time`)
  110. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐关系修改记录表';
  111. -- 8. 用户关系缓存表 (promotion_user_relation_cache)
  112. -- 用于存储用户之间的所有推荐关系(包括上下级关系)
  113. CREATE TABLE IF NOT EXISTS `kku_promotion_user_relation_cache` (
  114. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  115. `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  116. `related_user_id` bigint(20) NOT NULL COMMENT '关联用户ID(上级)',
  117. `level` tinyint(3) unsigned NOT NULL COMMENT '关系层级:1直接,2间接',
  118. `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '关系路径,格式:1,2,3',
  119. `depth` tinyint(3) unsigned NOT NULL COMMENT '层级深度,从1开始',
  120. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  121. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  122. PRIMARY KEY (`id`),
  123. UNIQUE KEY `idx_user_relation` (`user_id`,`related_user_id`),
  124. KEY `idx_user_id` (`user_id`),
  125. KEY `idx_related_user_id` (`related_user_id`),
  126. KEY `idx_level` (`level`),
  127. KEY `idx_depth` (`depth`)
  128. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户关系缓存表';
  129. -- 9. 邀请奖励记录表 (promotion_invite_rewards)
  130. -- 用于记录用户邀请他人注册时获得的奖励
  131. CREATE TABLE IF NOT EXISTS `kku_promotion_invite_rewards` (
  132. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  133. `user_id` bigint(20) NOT NULL COMMENT '获得奖励的用户ID',
  134. `invited_user_id` bigint(20) NOT NULL COMMENT '被邀请的用户ID',
  135. `reward_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖励类型:item=物品,coin=货币,exp=经验',
  136. `reward_id` bigint(20) NOT NULL COMMENT '奖励ID(物品ID或货币类型ID)',
  137. `reward_amount` int(11) NOT NULL COMMENT '奖励数量',
  138. `reward_source` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'register' COMMENT '奖励来源:register=注册,upgrade=升级,task=任务',
  139. `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=未发放,1=已发放,2=已过期',
  140. `remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
  141. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  142. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  143. PRIMARY KEY (`id`),
  144. KEY `idx_user_id` (`user_id`),
  145. KEY `idx_invited_user_id` (`invited_user_id`),
  146. KEY `idx_reward_type` (`reward_type`),
  147. KEY `idx_reward_source` (`reward_source`),
  148. KEY `idx_status` (`status`),
  149. KEY `idx_created_at` (`created_at`)
  150. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='邀请奖励记录表';
  151. -- 10. 邀请码使用记录表 (promotion_referral_code_usages)
  152. -- 用于详细记录每次邀请码的使用情况
  153. CREATE TABLE IF NOT EXISTS `kku_promotion_referral_code_usages` (
  154. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  155. `code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '使用的邀请码',
  156. `code_owner_id` bigint(20) NOT NULL COMMENT '邀请码所有者用户ID',
  157. `user_id` bigint(20) NOT NULL COMMENT '使用邀请码的用户ID',
  158. `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '使用时的IP地址',
  159. `user_agent` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '使用时的用户代理',
  160. `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=失败,1=成功,2=已撤销',
  161. `result` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '使用结果描述',
  162. `remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
  163. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  164. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  165. PRIMARY KEY (`id`),
  166. KEY `idx_code` (`code`),
  167. KEY `idx_code_owner_id` (`code_owner_id`),
  168. KEY `idx_user_id` (`user_id`),
  169. KEY `idx_status` (`status`),
  170. KEY `idx_created_at` (`created_at`)
  171. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='邀请码使用记录表';
  172. -- 初始化数据
  173. -- 1. 达人等级配置数据
  174. INSERT INTO `kku_promotion_talent_configs` (`level`, `name`, `direct_count_required`, `promotion_count_required`, `profit_rate`, `benefits`) VALUES
  175. (1, '初级达人', 5, 10, 0.0100, '{"farm_output_bonus": 0.01}'),
  176. (2, '中级达人', 10, 30, 0.0150, '{"farm_output_bonus": 0.02}'),
  177. (3, '高级达人', 20, 50, 0.0200, '{"farm_output_bonus": 0.03, "daily_gift": {"item_id": 1001, "amount": 1}}'),
  178. (4, '资深达人', 30, 100, 0.0250, '{"farm_output_bonus": 0.04, "daily_gift": {"item_id": 1001, "amount": 2}}'),
  179. (5, '顶级达人', 50, 200, 0.0300, '{"farm_output_bonus": 0.05, "daily_gift": {"item_id": 1001, "amount": 3}, "special_privileges": ["vip_customer_service", "exclusive_avatar_frame"]}');
  180. -- 2. 收益分成规则数据
  181. INSERT INTO `kku_promotion_profit_rules` (`source_type`, `direct_profit_rate`, `max_indirect_level`, `status`, `rules`) VALUES
  182. ('farm_harvest', 0.0500, 20, 1, '{"min_amount": 10, "max_amount": 1000}'),
  183. ('task_complete', 0.0300, 10, 1, '{"min_amount": 5, "max_amount": 500}'),
  184. ('item_sell', 0.0200, 5, 1, '{"min_amount": 1, "max_amount": 100, "excluded_items": [1001, 1002]}');