|
|
@@ -0,0 +1,197 @@
|
|
|
+-- 团队模块数据库创建脚本
|
|
|
+-- 包含所有团队模块相关表的创建语句
|
|
|
+
|
|
|
+-- 1. 用户推荐关系表 (team_user_referrals)
|
|
|
+-- 存储用户与其直接推荐人(直接上级)的关系
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_user_referrals` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
+ `referrer_id` bigint(20) NOT NULL COMMENT '直接推荐人ID',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_referrer_id` (`referrer_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户直接推荐关系表';
|
|
|
+
|
|
|
+-- 2. 达人等级表 (team_user_talents)
|
|
|
+-- 存储用户的达人等级信息,包括直推人数和团队总人数
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_user_talents` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
+ `talent_level` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '达人等级:0无,1初级,2中级,3高级,4资深,5顶级',
|
|
|
+ `direct_count` int(11) NOT NULL DEFAULT '0' COMMENT '直推人数',
|
|
|
+ `team_count` int(11) NOT NULL DEFAULT '0' COMMENT '团队总人数',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_talent_level` (`talent_level`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='达人等级表';
|
|
|
+
|
|
|
+-- 3. 团队收益记录表 (team_profits)
|
|
|
+-- 记录团队成员产生的分成收益
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_profits` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '获得收益的用户ID',
|
|
|
+ `team_member_id` bigint(20) NOT NULL COMMENT '团队成员ID',
|
|
|
+ `source_id` bigint(20) NOT NULL COMMENT '收益来源ID',
|
|
|
+ `source_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收益来源类型',
|
|
|
+ `item_id` bigint(20) NOT NULL COMMENT '物品ID',
|
|
|
+ `profit_amount` int(11) NOT NULL COMMENT '分成收益数量',
|
|
|
+ `profit_rate` decimal(5,4) NOT NULL COMMENT '分成比例',
|
|
|
+ `relation_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '关系类型:1直推,2间推',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_team_member_id` (`team_member_id`),
|
|
|
+ KEY `idx_source` (`source_type`,`source_id`),
|
|
|
+ KEY `idx_relation_type` (`relation_type`),
|
|
|
+ KEY `idx_created_at` (`created_at`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='团队收益记录表';
|
|
|
+
|
|
|
+-- 4. 推荐码表 (team_referral_codes)
|
|
|
+-- 存储用户的推荐码信息
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_referral_codes` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
+ `code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '推荐码',
|
|
|
+ `usage_count` int(11) NOT NULL DEFAULT '0' COMMENT '使用次数',
|
|
|
+ `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1有效,0无效',
|
|
|
+ `expire_time` timestamp NULL DEFAULT NULL COMMENT '过期时间,NULL表示永不过期',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `idx_code` (`code`),
|
|
|
+ UNIQUE KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_status` (`status`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐码表';
|
|
|
+
|
|
|
+-- 5. 达人等级配置表 (team_talent_configs)
|
|
|
+-- 存储不同达人等级的配置信息
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_talent_configs` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `level` tinyint(3) unsigned NOT NULL COMMENT '等级',
|
|
|
+ `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '等级名称',
|
|
|
+ `direct_count_required` int(11) NOT NULL COMMENT '所需直推人数',
|
|
|
+ `team_count_required` int(11) NOT NULL COMMENT '所需团队总人数',
|
|
|
+ `profit_rate` decimal(5,4) NOT NULL COMMENT '间推分成比例',
|
|
|
+ `benefits` json DEFAULT NULL COMMENT '等级权益',
|
|
|
+ `icon` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '等级图标',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `idx_level` (`level`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='达人等级配置表';
|
|
|
+
|
|
|
+-- 6. 收益分成规则表 (team_profit_rules)
|
|
|
+-- 存储不同来源的收益分成规则
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_profit_rules` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `source_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源类型',
|
|
|
+ `direct_profit_rate` decimal(5,4) NOT NULL COMMENT '直推分成比例',
|
|
|
+ `max_indirect_level` int(11) NOT NULL DEFAULT '20' COMMENT '最大间推层级',
|
|
|
+ `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1有效,0无效',
|
|
|
+ `rules` json DEFAULT NULL COMMENT '特殊规则',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `idx_source_type` (`source_type`),
|
|
|
+ KEY `idx_status` (`status`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收益分成规则表';
|
|
|
+
|
|
|
+-- 7. 推荐关系修改记录表 (team_referral_changes)
|
|
|
+-- 记录用户推荐关系的修改历史
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_referral_changes` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
+ `old_referrer_id` bigint(20) DEFAULT NULL COMMENT '旧推荐人ID',
|
|
|
+ `new_referrer_id` bigint(20) NOT NULL COMMENT '新推荐人ID',
|
|
|
+ `change_time` timestamp NOT NULL COMMENT '修改时间',
|
|
|
+ `change_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改原因',
|
|
|
+ `changed_by` bigint(20) NOT NULL COMMENT '操作人ID',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_change_time` (`change_time`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐关系修改记录表';
|
|
|
+
|
|
|
+-- 8. 用户关系缓存表 (team_user_relation_cache)
|
|
|
+-- 用于存储用户之间的所有推荐关系(包括上下级关系)
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_user_relation_cache` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
+ `related_user_id` bigint(20) NOT NULL COMMENT '关联用户ID(上级)',
|
|
|
+ `level` tinyint(3) unsigned NOT NULL COMMENT '关系层级:1直接,2间接',
|
|
|
+ `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '关系路径,格式:1,2,3',
|
|
|
+ `depth` tinyint(3) unsigned NOT NULL COMMENT '层级深度,从1开始',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `idx_user_relation` (`user_id`,`related_user_id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_related_user_id` (`related_user_id`),
|
|
|
+ KEY `idx_level` (`level`),
|
|
|
+ KEY `idx_depth` (`depth`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户关系缓存表';
|
|
|
+
|
|
|
+-- 9. 邀请奖励记录表 (team_invite_rewards)
|
|
|
+-- 用于记录用户邀请他人注册时获得的奖励
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_invite_rewards` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '获得奖励的用户ID',
|
|
|
+ `invited_user_id` bigint(20) NOT NULL COMMENT '被邀请的用户ID',
|
|
|
+ `reward_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖励类型:item=物品,coin=货币,exp=经验',
|
|
|
+ `reward_id` bigint(20) NOT NULL COMMENT '奖励ID(物品ID或货币类型ID)',
|
|
|
+ `reward_amount` int(11) NOT NULL COMMENT '奖励数量',
|
|
|
+ `reward_source` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'register' COMMENT '奖励来源:register=注册,upgrade=升级,task=任务',
|
|
|
+ `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=未发放,1=已发放,2=已过期',
|
|
|
+ `remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_invited_user_id` (`invited_user_id`),
|
|
|
+ KEY `idx_reward_type` (`reward_type`),
|
|
|
+ KEY `idx_reward_source` (`reward_source`),
|
|
|
+ KEY `idx_status` (`status`),
|
|
|
+ KEY `idx_created_at` (`created_at`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='邀请奖励记录表';
|
|
|
+
|
|
|
+-- 10. 邀请码使用记录表 (team_referral_code_usages)
|
|
|
+-- 用于详细记录每次邀请码的使用情况
|
|
|
+CREATE TABLE IF NOT EXISTS `kku_team_referral_code_usages` (
|
|
|
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '使用的邀请码',
|
|
|
+ `code_owner_id` bigint(20) NOT NULL COMMENT '邀请码所有者用户ID',
|
|
|
+ `user_id` bigint(20) NOT NULL COMMENT '使用邀请码的用户ID',
|
|
|
+ `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '使用时的IP地址',
|
|
|
+ `user_agent` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '使用时的用户代理',
|
|
|
+ `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=失败,1=成功,2=已撤销',
|
|
|
+ `result` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '使用结果描述',
|
|
|
+ `remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
|
|
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_code` (`code`),
|
|
|
+ KEY `idx_code_owner_id` (`code_owner_id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_status` (`status`),
|
|
|
+ KEY `idx_created_at` (`created_at`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='邀请码使用记录表';
|
|
|
+
|
|
|
+-- 初始化数据
|
|
|
+
|
|
|
+-- 1. 达人等级配置数据
|
|
|
+INSERT INTO `kku_team_talent_configs` (`level`, `name`, `direct_count_required`, `team_count_required`, `profit_rate`, `benefits`) VALUES
|
|
|
+(1, '初级达人', 5, 10, 0.0100, '{"farm_output_bonus": 0.01}'),
|
|
|
+(2, '中级达人', 10, 30, 0.0150, '{"farm_output_bonus": 0.02}'),
|
|
|
+(3, '高级达人', 20, 50, 0.0200, '{"farm_output_bonus": 0.03, "daily_gift": {"item_id": 1001, "amount": 1}}'),
|
|
|
+(4, '资深达人', 30, 100, 0.0250, '{"farm_output_bonus": 0.04, "daily_gift": {"item_id": 1001, "amount": 2}}'),
|
|
|
+(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"]}');
|
|
|
+
|
|
|
+-- 2. 收益分成规则数据
|
|
|
+INSERT INTO `kku_team_profit_rules` (`source_type`, `direct_profit_rate`, `max_indirect_level`, `status`, `rules`) VALUES
|
|
|
+('farm_harvest', 0.0500, 20, 1, '{"min_amount": 10, "max_amount": 1000}'),
|
|
|
+('task_complete', 0.0300, 10, 1, '{"min_amount": 5, "max_amount": 500}'),
|
|
|
+('item_sell', 0.0200, 5, 1, '{"min_amount": 1, "max_amount": 100, "excluded_items": [1001, 1002]}');
|