-- 任务分类表 DROP TABLE IF EXISTS `kku_task_categories`; CREATE TABLE `kku_task_categories` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '分类ID,主键', `name` varchar(100) NOT NULL COMMENT '分类名称', `code` varchar(50) NOT NULL COMMENT '分类编码(唯一)', `description` varchar(255) DEFAULT NULL COMMENT '分类描述', `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序顺序', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `idx_code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务分类表'; -- 任务定义表 DROP TABLE IF EXISTS `kku_task_tasks`; CREATE TABLE `kku_task_tasks` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '任务ID,主键', `category_id` int NOT NULL COMMENT '任务分类ID,外键关联kku_task_categories表', `name` varchar(100) NOT NULL COMMENT '任务名称', `description` varchar(500) DEFAULT NULL COMMENT '任务描述', `type` varchar(20) NOT NULL COMMENT '任务类型(daily, weekly, achievement, event, tutorial, team)', `target_type` varchar(30) NOT NULL COMMENT '目标类型(plant, harvest, upgrade_land等)', `target_params` json DEFAULT NULL COMMENT '目标参数(JSON格式,如特定作物ID)', `target_count` int NOT NULL DEFAULT '1' COMMENT '目标数量', `rewards` json NOT NULL COMMENT '奖励内容(JSON格式)', `prerequisite_tasks` json DEFAULT NULL COMMENT '前置任务ID(JSON格式)', `level_required` int NOT NULL DEFAULT '0' COMMENT '所需等级', `time_limit` int DEFAULT NULL COMMENT '时间限制(秒,NULL表示无限制)', `reset_type` varchar(20) NOT NULL DEFAULT 'none' COMMENT '重置类型(none, daily, weekly, monthly)', `is_active` tinyint NOT NULL DEFAULT '1' COMMENT '是否激活(0:否, 1:是)', `start_time` timestamp NULL DEFAULT NULL COMMENT '开始时间(NULL表示立即开始)', `end_time` timestamp NULL DEFAULT NULL COMMENT '结束时间(NULL表示永不结束)', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_category` (`category_id`), KEY `idx_type` (`type`), KEY `idx_target_type` (`target_type`), KEY `idx_active_time` (`is_active`, `start_time`, `end_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务定义表'; -- 用户任务关联表 DROP TABLE IF EXISTS `kku_task_user_tasks`; CREATE TABLE `kku_task_user_tasks` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键', `user_id` int NOT NULL COMMENT '用户ID', `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0:未接取, 1:进行中, 2:已完成, 3:已领取奖励, 4:已失败, 5:已过期)', `progress` int NOT NULL DEFAULT '0' COMMENT '当前进度', `completed_at` timestamp NULL DEFAULT NULL COMMENT '完成时间', `rewarded_at` timestamp NULL DEFAULT NULL COMMENT '奖励发放时间', `expire_at` timestamp NULL DEFAULT NULL COMMENT '过期时间', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `idx_user_task` (`user_id`, `task_id`), KEY `idx_user_status` (`user_id`, `status`), KEY `idx_task` (`task_id`), KEY `idx_expire` (`expire_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户任务关联表'; -- 用户任务进度表 DROP TABLE IF EXISTS `kku_task_user_progress`; CREATE TABLE `kku_task_user_progress` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键', `user_id` int NOT NULL COMMENT '用户ID', `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表', `target_id` varchar(100) NOT NULL COMMENT '目标ID(如特定作物ID、物品ID等)', `current_count` int NOT NULL DEFAULT '0' COMMENT '当前计数', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `idx_user_task_target` (`user_id`, `task_id`, `target_id`), KEY `idx_user_task` (`user_id`, `task_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户任务进度表'; -- 任务完成日志表 DROP TABLE IF EXISTS `kku_task_completion_logs`; CREATE TABLE `kku_task_completion_logs` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键', `user_id` int NOT NULL COMMENT '用户ID', `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表', `completed_at` timestamp NOT NULL COMMENT '完成时间', `time_spent` int DEFAULT NULL COMMENT '完成耗时(秒)', `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP地址', `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_task` (`task_id`), KEY `idx_completed_at` (`completed_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务完成日志表'; -- 任务奖励发放日志表 DROP TABLE IF EXISTS `kku_task_reward_logs`; CREATE TABLE `kku_task_reward_logs` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键', `user_id` int NOT NULL COMMENT '用户ID', `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表', `user_task_id` int NOT NULL COMMENT '用户任务ID,外键关联kku_task_user_tasks表', `rewards` json NOT NULL COMMENT '奖励内容(JSON格式)', `rewarded_at` timestamp NOT NULL COMMENT '奖励发放时间', `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP地址', `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_task` (`task_id`), KEY `idx_user_task` (`user_task_id`), KEY `idx_rewarded_at` (`rewarded_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务奖励发放日志表'; -- 任务重置日志表 DROP TABLE IF EXISTS `kku_task_reset_logs`; CREATE TABLE `kku_task_reset_logs` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键', `reset_type` varchar(20) NOT NULL COMMENT '重置类型(daily, weekly, monthly)', `reset_time` timestamp NOT NULL COMMENT '重置时间', `affected_tasks` json DEFAULT NULL COMMENT '受影响的任务ID列表(JSON格式)', `affected_count` int NOT NULL DEFAULT '0' COMMENT '受影响的任务数量', `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_reset_type` (`reset_type`), KEY `idx_reset_time` (`reset_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务重置日志表';