create.sql 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. -- 任务分类表
  2. DROP TABLE IF EXISTS `kku_task_categories`;
  3. CREATE TABLE `kku_task_categories` (
  4. `id` int NOT NULL AUTO_INCREMENT COMMENT '分类ID,主键',
  5. `name` varchar(100) NOT NULL COMMENT '分类名称',
  6. `code` varchar(50) NOT NULL COMMENT '分类编码(唯一)',
  7. `description` varchar(255) DEFAULT NULL COMMENT '分类描述',
  8. `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序顺序',
  9. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  10. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `idx_code` (`code`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务分类表';
  14. -- 任务定义表
  15. DROP TABLE IF EXISTS `kku_task_tasks`;
  16. CREATE TABLE `kku_task_tasks` (
  17. `id` int NOT NULL AUTO_INCREMENT COMMENT '任务ID,主键',
  18. `category_id` int NOT NULL COMMENT '任务分类ID,外键关联kku_task_categories表',
  19. `name` varchar(100) NOT NULL COMMENT '任务名称',
  20. `description` varchar(500) DEFAULT NULL COMMENT '任务描述',
  21. `type` varchar(20) NOT NULL COMMENT '任务类型(daily, weekly, achievement, event, tutorial, team)',
  22. `target_type` varchar(30) NOT NULL COMMENT '目标类型(plant, harvest, upgrade_land等)',
  23. `target_params` json DEFAULT NULL COMMENT '目标参数(JSON格式,如特定作物ID)',
  24. `target_count` int NOT NULL DEFAULT '1' COMMENT '目标数量',
  25. `rewards` json NOT NULL COMMENT '奖励内容(JSON格式)',
  26. `prerequisite_tasks` json DEFAULT NULL COMMENT '前置任务ID(JSON格式)',
  27. `level_required` int NOT NULL DEFAULT '0' COMMENT '所需等级',
  28. `time_limit` int DEFAULT NULL COMMENT '时间限制(秒,NULL表示无限制)',
  29. `reset_type` varchar(20) NOT NULL DEFAULT 'none' COMMENT '重置类型(none, daily, weekly, monthly)',
  30. `is_active` tinyint NOT NULL DEFAULT '1' COMMENT '是否激活(0:否, 1:是)',
  31. `start_time` timestamp NULL DEFAULT NULL COMMENT '开始时间(NULL表示立即开始)',
  32. `end_time` timestamp NULL DEFAULT NULL COMMENT '结束时间(NULL表示永不结束)',
  33. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  34. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  35. PRIMARY KEY (`id`),
  36. KEY `idx_category` (`category_id`),
  37. KEY `idx_type` (`type`),
  38. KEY `idx_target_type` (`target_type`),
  39. KEY `idx_active_time` (`is_active`, `start_time`, `end_time`)
  40. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务定义表';
  41. -- 用户任务关联表
  42. DROP TABLE IF EXISTS `kku_task_user_tasks`;
  43. CREATE TABLE `kku_task_user_tasks` (
  44. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  45. `user_id` int NOT NULL COMMENT '用户ID',
  46. `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表',
  47. `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0:未接取, 1:进行中, 2:已完成, 3:已领取奖励, 4:已失败, 5:已过期)',
  48. `progress` int NOT NULL DEFAULT '0' COMMENT '当前进度',
  49. `completed_at` timestamp NULL DEFAULT NULL COMMENT '完成时间',
  50. `rewarded_at` timestamp NULL DEFAULT NULL COMMENT '奖励发放时间',
  51. `expire_at` timestamp NULL DEFAULT NULL COMMENT '过期时间',
  52. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  53. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  54. PRIMARY KEY (`id`),
  55. UNIQUE KEY `idx_user_task` (`user_id`, `task_id`),
  56. KEY `idx_user_status` (`user_id`, `status`),
  57. KEY `idx_task` (`task_id`),
  58. KEY `idx_expire` (`expire_at`)
  59. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户任务关联表';
  60. -- 用户任务进度表
  61. DROP TABLE IF EXISTS `kku_task_user_progress`;
  62. CREATE TABLE `kku_task_user_progress` (
  63. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  64. `user_id` int NOT NULL COMMENT '用户ID',
  65. `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表',
  66. `target_id` varchar(100) NOT NULL COMMENT '目标ID(如特定作物ID、物品ID等)',
  67. `current_count` int NOT NULL DEFAULT '0' COMMENT '当前计数',
  68. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  69. `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  70. PRIMARY KEY (`id`),
  71. UNIQUE KEY `idx_user_task_target` (`user_id`, `task_id`, `target_id`),
  72. KEY `idx_user_task` (`user_id`, `task_id`)
  73. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户任务进度表';
  74. -- 任务完成日志表
  75. DROP TABLE IF EXISTS `kku_task_completion_logs`;
  76. CREATE TABLE `kku_task_completion_logs` (
  77. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  78. `user_id` int NOT NULL COMMENT '用户ID',
  79. `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表',
  80. `completed_at` timestamp NOT NULL COMMENT '完成时间',
  81. `time_spent` int DEFAULT NULL COMMENT '完成耗时(秒)',
  82. `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP地址',
  83. `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息',
  84. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  85. PRIMARY KEY (`id`),
  86. KEY `idx_user` (`user_id`),
  87. KEY `idx_task` (`task_id`),
  88. KEY `idx_completed_at` (`completed_at`)
  89. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务完成日志表';
  90. -- 任务奖励发放日志表
  91. DROP TABLE IF EXISTS `kku_task_reward_logs`;
  92. CREATE TABLE `kku_task_reward_logs` (
  93. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  94. `user_id` int NOT NULL COMMENT '用户ID',
  95. `task_id` int NOT NULL COMMENT '任务ID,外键关联kku_task_tasks表',
  96. `user_task_id` int NOT NULL COMMENT '用户任务ID,外键关联kku_task_user_tasks表',
  97. `rewards` json NOT NULL COMMENT '奖励内容(JSON格式)',
  98. `rewarded_at` timestamp NOT NULL COMMENT '奖励发放时间',
  99. `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP地址',
  100. `device_info` varchar(255) DEFAULT NULL COMMENT '设备信息',
  101. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  102. PRIMARY KEY (`id`),
  103. KEY `idx_user` (`user_id`),
  104. KEY `idx_task` (`task_id`),
  105. KEY `idx_user_task` (`user_task_id`),
  106. KEY `idx_rewarded_at` (`rewarded_at`)
  107. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务奖励发放日志表';
  108. -- 任务重置日志表
  109. DROP TABLE IF EXISTS `kku_task_reset_logs`;
  110. CREATE TABLE `kku_task_reset_logs` (
  111. `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
  112. `reset_type` varchar(20) NOT NULL COMMENT '重置类型(daily, weekly, monthly)',
  113. `reset_time` timestamp NOT NULL COMMENT '重置时间',
  114. `affected_tasks` json DEFAULT NULL COMMENT '受影响的任务ID列表(JSON格式)',
  115. `affected_count` int NOT NULL DEFAULT '0' COMMENT '受影响的任务数量',
  116. `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  117. PRIMARY KEY (`id`),
  118. KEY `idx_reset_type` (`reset_type`),
  119. KEY `idx_reset_time` (`reset_time`)
  120. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务重置日志表';