Эх сурвалжийг харах

数据库结构调整:更新模型注解和SQL脚本,添加各模块数据库目录

Your Name 8 сар өмнө
parent
commit
b8fc418d45
68 өөрчлөгдсөн 1359 нэмэгдсэн , 71 устгасан
  1. 230 33
      UCore/Commands/GenerateModelAnnotation.php
  2. 3 3
      app/Module/Article/Models/Article.php
  3. 3 3
      app/Module/Article/Models/ArticleCate.php
  4. 15 0
      app/Module/Fund/Databases/createsql/kku_fund.sql
  5. 15 0
      app/Module/Fund/Databases/createsql/kku_fund_admin.sql
  6. 17 0
      app/Module/Fund/Databases/createsql/kku_fund_circulation.sql
  7. 11 0
      app/Module/Fund/Databases/createsql/kku_fund_config.sql
  8. 14 0
      app/Module/Fund/Databases/createsql/kku_fund_currency.sql
  9. 22 0
      app/Module/Fund/Databases/createsql/kku_fund_logs.sql
  10. 16 0
      app/Module/Fund/Databases/createsql/kku_fund_order.sql
  11. 13 0
      app/Module/Fund/Databases/createsql/kku_fund_transfer.sql
  12. 17 0
      app/Module/GameItems/Databases/createsql/kku_item_categories.sql
  13. 26 0
      app/Module/GameItems/Databases/createsql/kku_item_chest_contents.sql
  14. 21 0
      app/Module/GameItems/Databases/createsql/kku_item_chest_open_logs.sql
  15. 21 0
      app/Module/GameItems/Databases/createsql/kku_item_craft_logs.sql
  16. 20 0
      app/Module/GameItems/Databases/createsql/kku_item_dismantle_logs.sql
  17. 21 0
      app/Module/GameItems/Databases/createsql/kku_item_dismantle_results.sql
  18. 19 0
      app/Module/GameItems/Databases/createsql/kku_item_dismantle_rules.sql
  19. 17 0
      app/Module/GameItems/Databases/createsql/kku_item_group_items.sql
  20. 14 0
      app/Module/GameItems/Databases/createsql/kku_item_groups.sql
  21. 26 0
      app/Module/GameItems/Databases/createsql/kku_item_instances.sql
  22. 29 0
      app/Module/GameItems/Databases/createsql/kku_item_items.sql
  23. 20 0
      app/Module/GameItems/Databases/createsql/kku_item_output_limits.sql
  24. 20 0
      app/Module/GameItems/Databases/createsql/kku_item_pity_times.sql
  25. 18 0
      app/Module/GameItems/Databases/createsql/kku_item_recipe_materials.sql
  26. 26 0
      app/Module/GameItems/Databases/createsql/kku_item_recipes.sql
  27. 23 0
      app/Module/GameItems/Databases/createsql/kku_item_transaction_logs.sql
  28. 18 0
      app/Module/GameItems/Databases/createsql/kku_item_user_output_counters.sql
  29. 19 0
      app/Module/GameItems/Databases/createsql/kku_item_user_recipes.sql
  30. 22 0
      app/Module/GameItems/Databases/createsql/kku_item_users.sql
  31. 2 2
      app/Module/GameItems/Models/Item.php
  32. 2 2
      app/Module/GameItems/Models/ItemChestContent.php
  33. 2 2
      app/Module/GameItems/Models/ItemPityTime.php
  34. 20 0
      app/Module/OAuth/Databases/createsql/kku_oauth_access_tokens.sql
  35. 18 0
      app/Module/OAuth/Databases/createsql/kku_oauth_clients.sql
  36. 18 0
      app/Module/Pet/Databases/createsql/kku_pet_battle_logs.sql
  37. 18 0
      app/Module/Pet/Databases/createsql/kku_pet_battle_seasons.sql
  38. 17 0
      app/Module/Pet/Databases/createsql/kku_pet_battle_team_members.sql
  39. 18 0
      app/Module/Pet/Databases/createsql/kku_pet_battle_teams.sql
  40. 15 0
      app/Module/Pet/Databases/createsql/kku_pet_configs.sql
  41. 17 0
      app/Module/Pet/Databases/createsql/kku_pet_level_configs.sql
  42. 15 0
      app/Module/Pet/Databases/createsql/kku_pet_remould_logs.sql
  43. 17 0
      app/Module/Pet/Databases/createsql/kku_pet_skill_logs.sql
  44. 16 0
      app/Module/Pet/Databases/createsql/kku_pet_skills.sql
  45. 18 0
      app/Module/Pet/Databases/createsql/kku_pet_users.sql
  46. 5 5
      app/Module/Pet/Models/PetLevelConfig.php
  47. 16 0
      app/Module/Sms/Databases/createsql/kku_sms_code.sql
  48. 18 0
      app/Module/Sms/Databases/createsql/kku_sms_config.sql
  49. 19 0
      app/Module/Sms/Databases/createsql/kku_sms_dbgateway.sql
  50. 19 0
      app/Module/System/Databases/1.sql
  51. 19 0
      app/Module/System/Databases/createsql/kku_admin_actionlogs.sql
  52. 15 0
      app/Module/System/Databases/createsql/kku_admin_grid_views.sql
  53. 16 0
      app/Module/System/Databases/createsql/kku_admin_users.sql
  54. 21 0
      app/Module/System/Databases/createsql/kku_sys_configs.sql
  55. 17 0
      app/Module/Test/Databases/createsql/kku_test.sql
  56. 21 21
      app/Module/Ulogic/Databases/app_messagetables.sql
  57. 19 0
      app/Module/Ulogic/Databases/createsql/kku_app_message_recipients.sql
  58. 23 0
      app/Module/Ulogic/Databases/createsql/kku_app_message_templates.sql
  59. 16 0
      app/Module/Ulogic/Databases/createsql/kku_user_daytimes.sql
  60. 16 0
      app/Module/Ulogic/Databases/createsql/kku_user_punishs.sql
  61. 15 0
      app/Module/Ulogic/Databases/createsql/kku_user_times.sql
  62. 14 0
      app/Module/Ulogic/Models/AppMessageRecipient.php
  63. 22 0
      app/Module/Ulogic/Models/AppMessageTemplate.php
  64. 19 0
      app/Module/User/Databases/createsql/kku_user_actions.sql
  65. 16 0
      app/Module/User/Databases/createsql/kku_user_infos.sql
  66. 15 0
      app/Module/User/Databases/createsql/kku_user_phones.sql
  67. 15 0
      app/Module/User/Databases/createsql/kku_user_secret_passwords.sql
  68. 14 0
      app/Module/User/Databases/createsql/kku_users.sql

+ 230 - 33
UCore/Commands/GenerateModelAnnotation.php

@@ -5,18 +5,20 @@ namespace UCore\Commands;
 use Illuminate\Console\Command;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\File;
 use UCore\ModelCore;
 
 /**
- * 自动生成Eloquent模型属性注释
+ * 自动生成Eloquent模型属性注释和表创建SQL
  *
  * 通过分析数据库表结构,自动生成模型属性的PHPDoc注释,
- * 并提供fillable字段自动维护功能。
+ * 并提供fillable字段自动维护功能。同时,为每个表生成创建SQL文件。
  *
  * 功能特性:
  * 1. 自动识别字段类型并生成对应property注释
  * 2. 特殊时间字段自动识别为Carbon类型
  * 3. 自动维护模型$attrlist属性包含所有字段
+ * 4. 在模块的Databases/createsql目录下为每个表生成创建SQL文件
  *
  * 使用说明:
  * 1. 在模型中添加标记注释:
@@ -34,32 +36,70 @@ class GenerateModelAnnotation extends Command
      *
      * @var string
      */
-    protected $signature = 'ucore:generate-model-annotation';
+    protected $signature = 'ucore:generate-model-annotation
+                            {--skip-sql : 跳过生成表创建SQL文件}
+                            {--debug-info : 输出详细的调试信息}';
 
     /**
      * The console command description.
      *
      * @var string
      */
-    protected $description = '生成模型property注释,使得IDE有模型属性提示!';
+    protected $description = '生成模型property注释和表创建SQL文件';
 
     private $fillable = [];
 
+    /**
+     * 已处理的表名,用于避免重复生成SQL
+     *
+     * @var array
+     */
+    private $processedTables = [];
+
+    /**
+     * 成功处理的模型计数
+     *
+     * @var int
+     */
+    private $successCount = 0;
+
+    /**
+     * 跳过的模型计数
+     *
+     * @var int
+     */
+    private $skippedCount = 0;
+
+    /**
+     * 失败的模型计数
+     *
+     * @var int
+     */
+    private $failedCount = 0;
+
     /**
      * 主执行方法
      *
-     * 扫描指定目录下的模型文件并生成注释
+     * 扫描指定目录下的模型文件并生成注释和表创建SQL
      *
      * @return void
      */
     public function handle()
     {
+        // 显示是否跳过SQL生成的选项状态
+        if ($this->option('skip-sql')) {
+            $this->debug('已设置跳过生成表创建SQL文件', 'warning');
+        } else {
+            $this->debug('将为每个表生成创建SQL文件到模块的Databases/createsql目录');
+        }
+
         // 扫描核心模型目录
         $ucoreModelsDir = app_path('../UCore/Models');
         if (is_dir($ucoreModelsDir)) {
+            $this->debug("扫描核心模型目录: $ucoreModelsDir");
             $this->call1($ucoreModelsDir, '\UCore\Models\\');
         } else {
-            $this->warn("UCore Models 目录不存在: $ucoreModelsDir");
+            $this->simpleOutput("UCore Models 目录不存在: $ucoreModelsDir", 'warning');
         }
 
         // 扫描模块下的Models目录
@@ -74,17 +114,21 @@ class GenerateModelAnnotation extends Command
                 $modelsDir = "$modulesPath/$module/Models";
                 if (is_dir($modelsDir)) {
                     // 添加模块扫描日志
-                    $this->info("扫描模块目录: $modelsDir");
+                    $this->debug("扫描模块目录: $modelsDir");
                     // 修复模块命名空间格式
                     $namespace = "App\\Module\\$module\\Models\\";
                     // 统一目录分隔符
                     $namespace = str_replace('/', '\\', $namespace);
                     // 添加自动加载提示
-                    $this->warn("请确保已配置composer自动加载: \"App\\Module\\$module\\Models\\\": \"app/Module/$module/Models/\"");
+                    $this->debug("请确保已配置composer自动加载: \"App\\Module\\$module\\Models\\\": \"app/Module/$module/Models/\"", 'warning');
                     $this->call1($modelsDir, $namespace);
                 }
             }
         }
+
+        // 显示处理结果
+        $this->simpleOutput("成功: {$this->successCount} | 跳过: {$this->skippedCount} | 失败: {$this->failedCount}" .
+                           (!$this->option('skip-sql') ? " | SQL文件: " . count($this->processedTables) : ""));
     }
 
     // ... 保持原有call1、call2、getAnnotation方法不变 ...
@@ -96,7 +140,7 @@ class GenerateModelAnnotation extends Command
      */
     public function call1($dir, $ns)
     {
-        $this->info("扫描目录: $dir");
+        $this->debug("扫描目录: $dir");
         $list = scandir($dir);
         foreach ($list as $item) {
             if ($item === '.' || $item === '..') {
@@ -107,6 +151,12 @@ class GenerateModelAnnotation extends Command
 
             // 递归处理子目录
             if (is_dir($fullPath)) {
+                // 跳过Validator目录
+                if (basename($fullPath) === 'Validators' || basename($fullPath) === 'Validator') {
+                    $this->debug("跳过Validator目录: $fullPath", 'warning');
+                    continue;
+                }
+
                 $this->call1($fullPath, $ns . $item . '\\');
                 continue;
             }
@@ -136,20 +186,23 @@ class GenerateModelAnnotation extends Command
             // 检查类是否是抽象类
             $reflectionClass = new \ReflectionClass($modelClass);
             if ($reflectionClass->isAbstract()) {
-                $this->output->warning(" model $modelClass 是抽象类,跳过");
+                $this->debug(" model $modelClass 是抽象类,跳过", 'warning');
+                $this->skippedCount++;
                 return;
             }
 
             // 检查类是否是模型类
             if (!$reflectionClass->isSubclassOf(\Illuminate\Database\Eloquent\Model::class)) {
-                $this->output->warning(" model $modelClass 不是模型类,跳过");
+                $this->debug(" model $modelClass 不是模型类,跳过", 'warning');
+                $this->skippedCount++;
                 return;
             }
 
             // 检查构造函数是否需要参数
             $constructor = $reflectionClass->getConstructor();
             if ($constructor && $constructor->getNumberOfRequiredParameters() > 0) {
-                $this->output->warning(" model $modelClass 需要构造函数参数,跳过");
+                $this->debug(" model $modelClass 需要构造函数参数,跳过", 'warning');
+                $this->skippedCount++;
                 return;
             }
 
@@ -159,40 +212,50 @@ class GenerateModelAnnotation extends Command
             try {
                 $model = new $modelClass();
             } catch (\Throwable $e) {
-                $this->output->error(" model $modelClass 实例化失败: " . $e->getMessage());
+                $this->output->writeln("<fg=red>失败: " . $e->getMessage() . "</>");
+                $this->failedCount++;
                 return;
             }
+
             if($model instanceof Model){
                 $co = $model->getConnection();
                 $tTablePrefix = $co->getTablePrefix();
-                $table =$tTablePrefix.$model->getTable();
-                $this->info("table $table ");
+                $table = $tTablePrefix.$model->getTable();
+                $this->output->write("表: $table ... ");
+
+                // 提取模块名称
+                $moduleName = $this->extractModuleNameFromNamespace($modelClass);
+
+                // 如果不跳过SQL生成且找到了模块名称,则生成表的创建SQL
+                if (!$this->option('skip-sql') && $moduleName) {
+                    $this->generateTableSQLFile($table, $moduleName, $co, $modelClass);
+                }
 
                 $annotation = $this->getAnnotation($table,$co);
 
                 $string = file_get_contents($file);
 
                 // 输出文件内容的前200个字符,帮助调试
-                $this->output->info("文件内容前200字符: " . substr($string, 0, 200) . "...");
+                $this->debug("文件内容前200字符: " . substr($string, 0, 200) . "...");
 
                 // 检查文件是否包含 field start/end 标识符
                 $hasFieldStart = strpos($string, 'field start') !== false;
                 $hasFieldEnd = strpos($string, 'field end') !== false;
 
-                $this->output->info("包含 field start: " . ($hasFieldStart ? "是" : "否"));
-                $this->output->info("包含 field end: " . ($hasFieldEnd ? "是" : "否"));
+                $this->debug("包含 field start: " . ($hasFieldStart ? "是" : "否"));
+                $this->debug("包含 field end: " . ($hasFieldEnd ? "是" : "否"));
 
                 // 使用正则表达式匹配 field start/end 标识符
                 $pattern = '/field\s+start[\s\S]+?field\s+end/';
-                $this->output->info("使用正则表达式匹配 field start/end: " . $pattern);
+                $this->debug("使用正则表达式匹配 field start/end: " . $pattern);
 
                 // 尝试匹配
                 $matches = [];
                 $matchResult = preg_match($pattern, $string, $matches);
-                $this->output->info("正则匹配结果: " . ($matchResult ? "成功" : "失败"));
+                $this->debug("正则匹配结果: " . ($matchResult ? "成功" : "失败"));
                 if ($matchResult) {
-                    $this->output->info("匹配到的内容长度: " . strlen($matches[0]));
-                    $this->output->info("匹配到的内容前50字符: " . substr($matches[0], 0, 50) . "...");
+                    $this->debug("匹配到的内容长度: " . strlen($matches[0]));
+                    $this->debug("匹配到的内容前50字符: " . substr($matches[0], 0, 50) . "...");
                 }
 
                 // 替换 field start/end 标识符
@@ -201,7 +264,7 @@ class GenerateModelAnnotation extends Command
 
                 // 强制替换成功
                 $replaced = true;
-                $this->output->info("field start/end 替换结果: 成功");
+                $this->debug("field start/end 替换结果: 成功");
 
                 // 过滤系统默认字段
                 $filteredFillable = array_filter($this->fillable, function($field) {
@@ -219,20 +282,20 @@ class GenerateModelAnnotation extends Command
                 $hasAttrlistStart = strpos($string, 'attrlist start') !== false;
                 $hasAttrlistEnd = strpos($string, 'attrlist end') !== false;
 
-                $this->output->info("包含 attrlist start: " . ($hasAttrlistStart ? "是" : "否"));
-                $this->output->info("包含 attrlist end: " . ($hasAttrlistEnd ? "是" : "否"));
+                $this->debug("包含 attrlist start: " . ($hasAttrlistStart ? "是" : "否"));
+                $this->debug("包含 attrlist end: " . ($hasAttrlistEnd ? "是" : "否"));
 
                 // 使用正则表达式匹配 attrlist start/end 标识符
                 $pattern2 = '/\/\/\s*attrlist\s+start[\s\S]+?\/\/\s*attrlist\s+end/';
-                $this->output->info("使用正则表达式匹配 attrlist start/end: " . $pattern2);
+                $this->debug("使用正则表达式匹配 attrlist start/end: " . $pattern2);
 
                 // 尝试匹配
                 $matches2 = [];
                 $matchResult2 = preg_match($pattern2, $result, $matches2);
-                $this->output->info("正则匹配结果: " . ($matchResult2 ? "成功" : "失败"));
+                $this->debug("正则匹配结果: " . ($matchResult2 ? "成功" : "失败"));
                 if ($matchResult2) {
-                    $this->output->info("匹配到的内容长度: " . strlen($matches2[0]));
-                    $this->output->info("匹配到的内容前50字符: " . substr($matches2[0], 0, 50) . "...");
+                    $this->debug("匹配到的内容长度: " . strlen($matches2[0]));
+                    $this->debug("匹配到的内容前50字符: " . substr($matches2[0], 0, 50) . "...");
                 }
 
                 // 替换 attrlist start/end 标识符
@@ -241,16 +304,84 @@ class GenerateModelAnnotation extends Command
 
                 // 强制替换成功
                 $replaced2 = true;
-                $this->output->info("attrlist start/end 替换结果: 成功");
+                $this->debug("attrlist start/end 替换结果: 成功");
 
                 // 强制写入文件
-                $this->output->info(" model $modelClass file :$file annotation 成功 ");
                 file_put_contents($file,$result);
+                $this->successCount++;
+                $this->output->writeln("<fg=green>完成</>");
             }else{
-                $this->output->warning(" model $modelClass 不是继承 ModelBase");
+                $this->output->writeln("<fg=yellow>跳过: 不是继承 ModelBase</>");
+                $this->skippedCount++;
             }
         }else{
-            $this->output->warning(" model $model 不存在");
+            $this->debug(" model $model 不存在", 'warning');
+            $this->skippedCount++;
+        }
+    }
+
+    /**
+     * 从模型命名空间中提取模块名称
+     *
+     * @param string $modelClass 模型类名
+     * @return string|null 模块名称,如果不是模块内的模型则返回null
+     */
+    protected function extractModuleNameFromNamespace($modelClass)
+    {
+        // 匹配 App\Module\{ModuleName}\Models 格式的命名空间
+        if (preg_match('/^App\\\\Module\\\\([^\\\\]+)\\\\Models/', $modelClass, $matches)) {
+            return $matches[1];
+        }
+
+        return null;
+    }
+
+    /**
+     * 输出调试信息
+     *
+     * @param string $message 调试信息
+     * @param string $type 信息类型 (info, warning, error)
+     * @return void
+     */
+    protected function debug($message, $type = 'info')
+    {
+        if ($this->option('debug-info')) {
+            switch ($type) {
+                case 'warning':
+                    $this->output->warning($message);
+                    break;
+                case 'error':
+                    $this->output->error($message);
+                    break;
+                default:
+                    $this->output->info($message);
+            }
+        }
+    }
+
+    /**
+     * 输出简洁信息
+     *
+     * @param string $message 信息内容
+     * @param string $type 信息类型 (info, warning, error)
+     * @return void
+     */
+    protected function simpleOutput($message, $type = 'info')
+    {
+        // 检查消息是否为空
+        if (empty(trim($message))) {
+            return;
+        }
+
+        switch ($type) {
+            case 'warning':
+                $this->output->writeln("<fg=yellow>{$message}</>");
+                break;
+            case 'error':
+                $this->output->writeln("<fg=red>{$message}</>");
+                break;
+            default:
+                $this->output->writeln($message);
         }
     }
 
@@ -304,4 +435,70 @@ class GenerateModelAnnotation extends Command
         }
         return $type;
     }
+
+    /**
+     * 获取表的创建SQL语句
+     *
+     * @param string $tableName 表名
+     * @param \Illuminate\Database\Connection $connection 数据库连接
+     * @return string 创建表的SQL语句
+     */
+    protected function getCreateTableSQL($tableName, $connection)
+    {
+        try {
+            $result = $connection->select("SHOW CREATE TABLE `{$tableName}`");
+            if (!empty($result) && isset($result[0]->{'Create Table'})) {
+                return $result[0]->{'Create Table'};
+            }
+        } catch (\Exception $e) {
+            $this->output->writeln("<fg=red>获取表 {$tableName} 的创建SQL失败: " . $e->getMessage() . "</>");
+        }
+
+        return null;
+    }
+
+    /**
+     * 为表生成创建SQL文件
+     *
+     * @param string $tableName 表名
+     * @param string $moduleName 模块名
+     * @param \Illuminate\Database\Connection $connection 数据库连接
+     * @param string $modelClass 模型类名
+     * @return void
+     */
+    protected function generateTableSQLFile($tableName, $moduleName, $connection, $modelClass = null)
+    {
+        // 如果已经处理过该表,则跳过
+        if (in_array($tableName, $this->processedTables)) {
+            $this->debug("表 {$tableName} 已处理过,跳过生成SQL");
+            return;
+        }
+
+        // 标记该表已处理
+        $this->processedTables[] = $tableName;
+
+        // 获取表的创建SQL
+        $createSQL = $this->getCreateTableSQL($tableName, $connection);
+        if (empty($createSQL)) {
+            $modelInfo = $modelClass ? " (Model: {$modelClass})" : "";
+            $this->output->writeln("<fg=yellow>SQL生成失败{$modelInfo}</>");
+            return;
+        }
+
+        // 创建模块的Databases/createsql目录
+        $sqlDir = app_path("Module/{$moduleName}/Databases/createsql");
+        if (!File::exists($sqlDir)) {
+            $this->debug("创建目录: {$sqlDir}");
+            File::makeDirectory($sqlDir, 0755, true);
+        }
+
+        // 生成SQL文件
+        $sqlFile = "{$sqlDir}/{$tableName}.sql";
+        $sqlContent = "-- 表 {$tableName} 的创建SQL\n-- 自动生成于 " . date('Y-m-d H:i:s') . "\n\n";
+        $sqlContent .= "DROP TABLE IF EXISTS `{$tableName}`;\n";
+        $sqlContent .= $createSQL . ";\n";
+
+        File::put($sqlFile, $sqlContent);
+        $this->debug("已生成SQL: {$sqlFile}");
+    }
 }

+ 3 - 3
app/Module/Article/Models/Article.php

@@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 /**
  * App\Module\Article\Models\Article
  *
- * field start 
+ * field start
  * field end
  */
 class Article extends Model
@@ -18,9 +18,9 @@ class Article extends Model
 	use HasDateTimeFormatter;
     use SoftDeletes;
 
-    protected $table = 'lan_articles';
+    protected $table = 'articles';
 
-    // attrlist start 
+    // attrlist start
     protected $fillable = [
     ];
     // attrlist end

+ 3 - 3
app/Module/Article/Models/ArticleCate.php

@@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 /**
  * App\Module\Article\Models\ArticleCate
  *
- * field start 
+ * field start
  * field end
  */
 class ArticleCate extends Model
@@ -17,9 +17,9 @@ class ArticleCate extends Model
 	use HasDateTimeFormatter;
     use SoftDeletes;
 
-    protected $table = 'lan_article_cates';
+    protected $table = 'article_cates';
 
-    // attrlist start 
+    // attrlist start
     protected $fillable = [
     ];
     // attrlist end

+ 15 - 0
app/Module/Fund/Databases/createsql/kku_fund.sql

@@ -0,0 +1,15 @@
+-- 表 kku_fund 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_fund`;
+CREATE TABLE `kku_fund` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '自增',
+  `user_id` int unsigned NOT NULL COMMENT '用户ID',
+  `fund_id` int NOT NULL COMMENT '资金ID',
+  `balance` bigint NOT NULL COMMENT '余额',
+  `update_time` int NOT NULL COMMENT '更新时间',
+  `create_time` int NOT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE KEY `user_id` (`user_id`,`fund_id`) USING BTREE,
+  KEY `fund_id` (`fund_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=337112 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='用户 - 资金';

+ 15 - 0
app/Module/Fund/Databases/createsql/kku_fund_admin.sql

@@ -0,0 +1,15 @@
+-- 表 kku_fund_admin 的创建SQL
+-- 自动生成于 2025-04-30 03:00:10
+
+DROP TABLE IF EXISTS `kku_fund_admin`;
+CREATE TABLE `kku_fund_admin` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '自增',
+  `total_fee` bigint NOT NULL COMMENT '钱数',
+  `status` int NOT NULL,
+  `fund_id` int unsigned NOT NULL COMMENT 'id',
+  `user_id` int NOT NULL COMMENT '这个订单的用户',
+  `admin_id` int NOT NULL COMMENT '管理员的id',
+  `create_time` int NOT NULL COMMENT '创建时间',
+  `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '备注',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=1387 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='管理员资金操作';

+ 17 - 0
app/Module/Fund/Databases/createsql/kku_fund_circulation.sql

@@ -0,0 +1,17 @@
+-- 表 kku_fund_circulation 的创建SQL
+-- 自动生成于 2025-04-30 03:00:10
+
+DROP TABLE IF EXISTS `kku_fund_circulation`;
+CREATE TABLE `kku_fund_circulation` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '自增',
+  `user_id` int NOT NULL COMMENT '用户id',
+  `fund_id` int NOT NULL COMMENT '资金ID',
+  `to_fund_id` int NOT NULL COMMENT '流向资金账户',
+  `re_type` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '关联类型',
+  `re_id` bigint unsigned NOT NULL COMMENT '关联类型',
+  `total_fee` bigint NOT NULL COMMENT '充值钱数',
+  `create_time` int NOT NULL COMMENT '创建时间',
+  `ok_time` int NOT NULL COMMENT '处理时间',
+  `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '备注信息',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=85001 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='资金流转';

+ 11 - 0
app/Module/Fund/Databases/createsql/kku_fund_config.sql

@@ -0,0 +1,11 @@
+-- 表 kku_fund_config 的创建SQL
+-- 自动生成于 2025-04-30 03:00:10
+
+DROP TABLE IF EXISTS `kku_fund_config`;
+CREATE TABLE `kku_fund_config` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '自增',
+  `name` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '资金名字',
+  `create_time` int NOT NULL,
+  `update_time` int NOT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=404 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='资金设置';

+ 14 - 0
app/Module/Fund/Databases/createsql/kku_fund_currency.sql

@@ -0,0 +1,14 @@
+-- 表 kku_fund_currency 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_fund_currency`;
+CREATE TABLE `kku_fund_currency` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '自增',
+  `identification` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '资金标识',
+  `icon` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '资金标识',
+  `name` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '资金名字',
+  `data1` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '数据',
+  `create_time` int NOT NULL,
+  `update_time` int NOT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='货币 设置';

+ 22 - 0
app/Module/Fund/Databases/createsql/kku_fund_logs.sql

@@ -0,0 +1,22 @@
+-- 表 kku_fund_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_fund_logs`;
+CREATE TABLE `kku_fund_logs` (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `fund_id` int NOT NULL COMMENT '资金id',
+  `amount` bigint NOT NULL COMMENT '操作金额,正值为收入,负值为支出',
+  `operate_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '上游操作id',
+  `operate_type` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '上游操作类型',
+  `remark` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '备注',
+  `create_time` int NOT NULL DEFAULT '0' COMMENT '最后更新时间',
+  `create_ip` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '最后更新ip',
+  `later_balance` bigint NOT NULL COMMENT '在此之后的余额',
+  `before_balance` bigint NOT NULL COMMENT '在此之前的月',
+  `date_key` int NOT NULL COMMENT '月份key',
+  `hash` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '防篡改哈希值',
+  `prev_hash` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '上一条记录的哈希值',
+  PRIMARY KEY (`id`,`date_key`) USING BTREE,
+  KEY `lan_fund_log_fund_id_IDX` (`fund_id`,`user_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=508826 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='资金日志';

+ 16 - 0
app/Module/Fund/Databases/createsql/kku_fund_order.sql

@@ -0,0 +1,16 @@
+-- 表 kku_fund_order 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_fund_order`;
+CREATE TABLE `kku_fund_order` (
+  `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `relation_id` int NOT NULL DEFAULT '0' COMMENT '关联ID 例如wlorder.Id',
+  `relation_type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '关联类型 wlorder物流订单',
+  `type1` int NOT NULL COMMENT '关联操作类型',
+  `total_fee` int NOT NULL DEFAULT '0' COMMENT '支付金额',
+  `create_time` int NOT NULL COMMENT '创建时间',
+  `to_user_id` int NOT NULL COMMENT '收款账户id',
+  `to_fund_id` int NOT NULL COMMENT '收款账户的资金id',
+  `remark` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '订单描述',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='订单的 支付表';

+ 13 - 0
app/Module/Fund/Databases/createsql/kku_fund_transfer.sql

@@ -0,0 +1,13 @@
+-- 表 kku_fund_transfer 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_fund_transfer`;
+CREATE TABLE `kku_fund_transfer` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '自增',
+  `user_id` int NOT NULL COMMENT '用户id',
+  `to_user_id` int NOT NULL COMMENT '转给用户id',
+  `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '备注',
+  `amount` bigint NOT NULL COMMENT '钱数',
+  `fund_id` int NOT NULL COMMENT '来源账户的资金id',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='资金 转账记录';

+ 17 - 0
app/Module/GameItems/Databases/createsql/kku_item_categories.sql

@@ -0,0 +1,17 @@
+-- 表 kku_item_categories 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_categories`;
+CREATE TABLE `kku_item_categories` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '分类ID,主键',
+  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类名称',
+  `code` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类编码(唯一)',
+  `icon` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分类图标',
+  `sort` int DEFAULT '0' COMMENT '排序权重',
+  `parent_id` int DEFAULT NULL COMMENT '父分类ID(可为空,用于实现分类层级)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `idx_code` (`code`),
+  KEY `idx_parent_id` (`parent_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分类表';

+ 26 - 0
app/Module/GameItems/Databases/createsql/kku_item_chest_contents.sql

@@ -0,0 +1,26 @@
+-- 表 kku_item_chest_contents 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_chest_contents`;
+CREATE TABLE `kku_item_chest_contents` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `chest_id` int NOT NULL COMMENT '宝箱物品ID,外键关联kku_item_items表',
+  `item_id` int DEFAULT NULL COMMENT '可能获得的物品ID,外键关联kku_item_items表(与group_id二选一)',
+  `group_id` int DEFAULT NULL COMMENT '物品组ID,外键关联kku_item_groups表(与item_id二选一)',
+  `min_quantity` int DEFAULT '1' COMMENT '最小数量',
+  `max_quantity` int DEFAULT '1' COMMENT '最大数量',
+  `weight` decimal(5,3) NOT NULL COMMENT '权重,决定获取概率',
+  `allow_duplicate` tinyint DEFAULT '0' COMMENT '是否允许在同一宝箱中重复掉落(0:不允许, 1:允许)',
+  `pity_count` int DEFAULT '0' COMMENT '保底次数,当玩家连续未获得该内容达到次数后必定获得(0表示不启用保底)',
+  `pity_weight_factor` float DEFAULT '1' COMMENT '保底权重因子,用于递增概率计算(默认1.0)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_chest_id` (`chest_id`),
+  KEY `idx_item_id` (`item_id`),
+  KEY `idx_group_id` (`group_id`),
+  KEY `idx_pity_count` (`pity_count`),
+  CONSTRAINT `fk_chest_content_chest` FOREIGN KEY (`chest_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_chest_content_group` FOREIGN KEY (`group_id`) REFERENCES `kku_item_groups` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_chest_content_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='宝箱内容配置表';

+ 21 - 0
app/Module/GameItems/Databases/createsql/kku_item_chest_open_logs.sql

@@ -0,0 +1,21 @@
+-- 表 kku_item_chest_open_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_chest_open_logs`;
+CREATE TABLE `kku_item_chest_open_logs` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `chest_id` int NOT NULL COMMENT '宝箱ID,外键关联kku_item_items表',
+  `open_time` timestamp NULL DEFAULT NULL COMMENT '开启时间',
+  `open_quantity` int NOT NULL COMMENT '开启数量',
+  `result_items` json NOT NULL COMMENT '获得的物品列表,包含物品ID、数量等信息',
+  `pity_triggered` tinyint DEFAULT '0' COMMENT '是否触发保底机制(0:否, 1:是)',
+  `pity_content_id` int DEFAULT NULL COMMENT '触发保底的内容ID,外键关联kku_item_chest_contents表(可为空)',
+  `ip_address` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作的IP地址(用于安全审计)',
+  `device_info` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备信息(用于安全审计)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_user_open` (`user_id`,`open_time`),
+  KEY `idx_chest_id` (`chest_id`),
+  KEY `idx_pity_triggered` (`pity_triggered`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='宝箱开启记录表';

+ 21 - 0
app/Module/GameItems/Databases/createsql/kku_item_craft_logs.sql

@@ -0,0 +1,21 @@
+-- 表 kku_item_craft_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_craft_logs`;
+CREATE TABLE `kku_item_craft_logs` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `recipe_id` int NOT NULL COMMENT '配方ID,外键关联kku_item_recipes表',
+  `materials` json NOT NULL COMMENT '消耗的材料,以JSON格式存储',
+  `result_item_id` int NOT NULL COMMENT '获得的物品ID,外键关联kku_item_items表',
+  `result_instance_id` int DEFAULT NULL COMMENT '获得的单独属性物品ID,外键关联kku_item_instances表(可为空)',
+  `result_quantity` int NOT NULL COMMENT '获得的物品数量',
+  `is_success` tinyint NOT NULL COMMENT '是否成功(0:失败, 1:成功)',
+  `craft_time` timestamp NULL DEFAULT NULL COMMENT '合成时间',
+  `ip_address` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作的IP地址',
+  `device_info` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备信息',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_user_recipe` (`user_id`,`recipe_id`),
+  KEY `idx_craft_time` (`craft_time`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品合成记录表';

+ 20 - 0
app/Module/GameItems/Databases/createsql/kku_item_dismantle_logs.sql

@@ -0,0 +1,20 @@
+-- 表 kku_item_dismantle_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_dismantle_logs`;
+CREATE TABLE `kku_item_dismantle_logs` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `item_id` int NOT NULL COMMENT '被分解的物品ID,外键关联kku_item_items表',
+  `instance_id` int DEFAULT NULL COMMENT '被分解的单独属性物品ID,外键关联kku_item_instances表(可为空)',
+  `quantity` int NOT NULL COMMENT '分解数量',
+  `rule_id` int NOT NULL COMMENT '使用的分解规则ID,外键关联kku_item_dismantle_rules表',
+  `results` json NOT NULL COMMENT '分解结果,包含获得的物品ID、数量等信息',
+  `dismantle_time` timestamp NULL DEFAULT NULL COMMENT '分解时间',
+  `ip_address` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作的IP地址',
+  `device_info` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备信息',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_user_item` (`user_id`,`item_id`),
+  KEY `idx_dismantle_time` (`dismantle_time`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分解记录表';

+ 21 - 0
app/Module/GameItems/Databases/createsql/kku_item_dismantle_results.sql

@@ -0,0 +1,21 @@
+-- 表 kku_item_dismantle_results 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_dismantle_results`;
+CREATE TABLE `kku_item_dismantle_results` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `rule_id` int NOT NULL COMMENT '分解规则ID,外键关联kku_item_dismantle_rules表',
+  `result_item_id` int NOT NULL COMMENT '结果物品ID,外键关联kku_item_items表',
+  `min_quantity` int DEFAULT '1' COMMENT '最小数量',
+  `max_quantity` int DEFAULT '1' COMMENT '最大数量',
+  `base_chance` decimal(5,2) NOT NULL COMMENT '基础获取概率(百分比,最大100)',
+  `rarity_factor` decimal(5,2) DEFAULT '1.00' COMMENT '稀有度影响因子',
+  `quality_factor` decimal(5,2) DEFAULT '1.00' COMMENT '品质影响因子',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_rule_id` (`rule_id`),
+  KEY `idx_result_item` (`result_item_id`),
+  CONSTRAINT `fk_result_item` FOREIGN KEY (`result_item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_result_rule` FOREIGN KEY (`rule_id`) REFERENCES `kku_item_dismantle_rules` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分解结果配置表';

+ 19 - 0
app/Module/GameItems/Databases/createsql/kku_item_dismantle_rules.sql

@@ -0,0 +1,19 @@
+-- 表 kku_item_dismantle_rules 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_dismantle_rules`;
+CREATE TABLE `kku_item_dismantle_rules` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '规则ID,主键',
+  `item_id` int DEFAULT NULL COMMENT '物品ID,外键关联kku_item_items表',
+  `category_id` int DEFAULT NULL COMMENT '分类ID,外键关联kku_item_categories表',
+  `min_rarity` tinyint DEFAULT '1' COMMENT '最小适用稀有度',
+  `max_rarity` tinyint DEFAULT '1' COMMENT '最大适用稀有度',
+  `priority` int DEFAULT '0' COMMENT '规则优先级',
+  `is_active` tinyint DEFAULT '1' COMMENT '是否激活(0:否, 1:是)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_item_id` (`item_id`),
+  KEY `idx_category_id` (`category_id`),
+  KEY `idx_priority` (`priority`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品分解规则表';

+ 17 - 0
app/Module/GameItems/Databases/createsql/kku_item_group_items.sql

@@ -0,0 +1,17 @@
+-- 表 kku_item_group_items 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_group_items`;
+CREATE TABLE `kku_item_group_items` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `group_id` int NOT NULL COMMENT '物品组ID,外键关联kku_item_groups表',
+  `item_id` int NOT NULL COMMENT '物品ID,外键关联kku_item_items表',
+  `weight` decimal(5,3) NOT NULL COMMENT '权重,决定从物品组中选择该物品的概率',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_group_id` (`group_id`),
+  KEY `idx_item_id` (`item_id`),
+  CONSTRAINT `fk_group_group` FOREIGN KEY (`group_id`) REFERENCES `kku_item_groups` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_group_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品组内容表';

+ 14 - 0
app/Module/GameItems/Databases/createsql/kku_item_groups.sql

@@ -0,0 +1,14 @@
+-- 表 kku_item_groups 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_groups`;
+CREATE TABLE `kku_item_groups` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '物品组ID,主键',
+  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '物品组名称',
+  `code` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '物品组编码(唯一)',
+  `description` text COLLATE utf8mb4_unicode_ci 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 AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品组表';

+ 26 - 0
app/Module/GameItems/Databases/createsql/kku_item_instances.sql

@@ -0,0 +1,26 @@
+-- 表 kku_item_instances 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_instances`;
+CREATE TABLE `kku_item_instances` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '唯一物品ID,主键',
+  `item_id` int NOT NULL COMMENT '关联的基础物品ID,外键关联kku_item_items表',
+  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '物品名称(可以与基础物品不同)',
+  `display_attributes` json DEFAULT NULL COMMENT '展示属性,以JSON格式存储键值对',
+  `numeric_attributes` json DEFAULT NULL COMMENT '数值属性,以JSON格式存储键值对',
+  `tradable` tinyint DEFAULT '1' COMMENT '是否可交易(0:不可交易, 1:可交易,默认)',
+  `is_bound` tinyint DEFAULT '0' COMMENT '是否已绑定(0:未绑定, 1:已绑定)',
+  `bound_to` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '绑定对象(账号ID或角色ID)',
+  `bind_exp_time` 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`),
+  KEY `idx_item_id` (`item_id`),
+  KEY `idx_tradable` (`tradable`),
+  KEY `idx_is_bound` (`is_bound`),
+  KEY `idx_bound_to` (`bound_to`),
+  KEY `idx_bind_exp_time` (`bind_exp_time`),
+  KEY `idx_expire_at` (`expire_at`),
+  CONSTRAINT `fk_instance_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='单独属性物品表';

+ 29 - 0
app/Module/GameItems/Databases/createsql/kku_item_items.sql

@@ -0,0 +1,29 @@
+-- 表 kku_item_items 的创建SQL
+-- 自动生成于 2025-04-30 03:00:11
+
+DROP TABLE IF EXISTS `kku_item_items`;
+CREATE TABLE `kku_item_items` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '物品ID,主键',
+  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '物品名称',
+  `description` text COLLATE utf8mb4_unicode_ci COMMENT '物品描述',
+  `category_id` int NOT NULL COMMENT '物品分类ID,外键关联kku_item_categories表',
+  `type` tinyint NOT NULL COMMENT '物品类型(1:可使用, 2:可装备, 3:可合成, 4:可交任务, 5:可开启...)',
+  `is_unique` tinyint DEFAULT '0' COMMENT '是否是单独属性物品(0:否,默认, 1:是)',
+  `max_stack` int DEFAULT '1' COMMENT '最大堆叠数量',
+  `sell_price` int DEFAULT '0' COMMENT '出售价格',
+  `tradable` tinyint DEFAULT '1' COMMENT '是否可交易(0:不可交易, 1:可交易,默认)',
+  `dismantlable` tinyint DEFAULT '1' COMMENT '是否可分解(0:不可分解, 1:可分解,默认)',
+  `default_expire_seconds` int DEFAULT '0' COMMENT '玩家获取物品后的默认有效秒数(0表示永久有效)',
+  `display_attributes` json DEFAULT NULL COMMENT '展示属性,以JSON格式存储键值对,用于界面展示和描述的属性',
+  `numeric_attributes` json DEFAULT NULL COMMENT '数值属性,以JSON格式存储键值对,用于计算和游戏逻辑的属性',
+  `global_expire_at` timestamp NULL DEFAULT NULL COMMENT '物品全局过期时间(可为空)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_category_id` (`category_id`),
+  KEY `idx_type` (`type`),
+  KEY `idx_is_unique` (`is_unique`),
+  KEY `idx_tradable` (`tradable`),
+  KEY `idx_dismantlable` (`dismantlable`),
+  KEY `idx_global_expire_at` (`global_expire_at`)
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='统一属性物品表';

+ 20 - 0
app/Module/GameItems/Databases/createsql/kku_item_output_limits.sql

@@ -0,0 +1,20 @@
+-- 表 kku_item_output_limits 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_output_limits`;
+CREATE TABLE `kku_item_output_limits` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `item_id` int NOT NULL COMMENT '物品ID,外键关联kku_item_items表',
+  `limit_type` tinyint NOT NULL COMMENT '限制类型(1:全局总量, 2:单个用户, 3:单日全局, 4:单日用户)',
+  `max_quantity` int NOT NULL COMMENT '最大产出数量',
+  `current_quantity` int DEFAULT '0' COMMENT '当前已产出数量(全局限制时使用)',
+  `reset_type` tinyint DEFAULT '0' COMMENT '重置类型(0:不重置, 1:每日, 2:每周, 3:每月)',
+  `last_reset_time` timestamp NULL DEFAULT NULL COMMENT '上次重置时间',
+  `related_items` json DEFAULT NULL COMMENT '关联物品ID列表,这些物品共享同一个限制额度',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_item_id` (`item_id`),
+  KEY `idx_limit_reset` (`limit_type`,`reset_type`),
+  CONSTRAINT `fk_limit_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品产出限制表';

+ 20 - 0
app/Module/GameItems/Databases/createsql/kku_item_pity_times.sql

@@ -0,0 +1,20 @@
+-- 表 kku_item_pity_times 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_pity_times`;
+CREATE TABLE `kku_item_pity_times` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `chest_id` int NOT NULL COMMENT '宝箱ID,外键关联kku_item_items表',
+  `chest_content_id` int NOT NULL COMMENT '宝箱内容ID,外键关联kku_item_chest_contents表',
+  `current_count` int NOT NULL DEFAULT '0' COMMENT '当前计数,每开启一次宝箱增加1',
+  `last_reset_time` 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_chest_content` (`user_id`,`chest_id`,`chest_content_id`),
+  KEY `fk_pity_chest` (`chest_id`),
+  KEY `fk_pity_content` (`chest_content_id`),
+  CONSTRAINT `fk_pity_chest` FOREIGN KEY (`chest_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_pity_content` FOREIGN KEY (`chest_content_id`) REFERENCES `kku_item_chest_contents` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户宝箱内容保底计数表';

+ 18 - 0
app/Module/GameItems/Databases/createsql/kku_item_recipe_materials.sql

@@ -0,0 +1,18 @@
+-- 表 kku_item_recipe_materials 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_recipe_materials`;
+CREATE TABLE `kku_item_recipe_materials` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `recipe_id` int NOT NULL COMMENT '配方ID,外键关联kku_item_recipes表',
+  `item_id` int NOT NULL COMMENT '材料物品ID,外键关联kku_item_items表',
+  `quantity` int NOT NULL COMMENT '所需数量',
+  `is_consumed` tinyint DEFAULT '1' COMMENT '是否消耗(0:不消耗, 1:消耗)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_recipe_id` (`recipe_id`),
+  KEY `idx_item_id` (`item_id`),
+  CONSTRAINT `fk_material_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_material_recipe` FOREIGN KEY (`recipe_id`) REFERENCES `kku_item_recipes` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='配方材料需求表';

+ 26 - 0
app/Module/GameItems/Databases/createsql/kku_item_recipes.sql

@@ -0,0 +1,26 @@
+-- 表 kku_item_recipes 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_recipes`;
+CREATE TABLE `kku_item_recipes` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '配方ID,主键',
+  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '配方名称',
+  `result_item_id` int NOT NULL COMMENT '产出物品ID,外键关联kku_item_items表',
+  `result_min_quantity` int DEFAULT '1' COMMENT '最小产出数量',
+  `result_max_quantity` int DEFAULT '1' COMMENT '最大产出数量',
+  `success_rate` decimal(5,2) NOT NULL COMMENT '成功率(百分比,最大100)',
+  `coin_cost` json DEFAULT NULL COMMENT '货币成本,以JSON格式存储多种货币类型和数量',
+  `level_required` int DEFAULT '1' COMMENT '所需等级',
+  `is_default_unlocked` tinyint DEFAULT '0' COMMENT '是否默认解锁(0:否, 1:是)',
+  `unlock_condition` json DEFAULT NULL COMMENT '解锁条件,以JSON格式存储',
+  `cooldown_seconds` int DEFAULT '0' COMMENT '冷却时间(秒)',
+  `category_id` int DEFAULT NULL COMMENT '配方分类ID',
+  `sort_order` int DEFAULT '0' COMMENT '排序权重',
+  `is_active` tinyint DEFAULT '1' COMMENT '是否激活(0:否, 1:是)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_result_item` (`result_item_id`),
+  KEY `idx_category` (`category_id`),
+  CONSTRAINT `fk_recipe_item` FOREIGN KEY (`result_item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品合成配方表';

+ 23 - 0
app/Module/GameItems/Databases/createsql/kku_item_transaction_logs.sql

@@ -0,0 +1,23 @@
+-- 表 kku_item_transaction_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_transaction_logs`;
+CREATE TABLE `kku_item_transaction_logs` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `item_id` int NOT NULL COMMENT '物品ID,外键关联kku_item_items表',
+  `instance_id` int DEFAULT NULL COMMENT '单独属性物品ID,外键关联kku_item_instances表(可为空)',
+  `quantity` int NOT NULL COMMENT '数量(正数表示获取,负数表示消耗)',
+  `transaction_type` tinyint NOT NULL COMMENT '交易类型(1:获取, 2:消耗, 3:交易获得, 4:交易失去, 5:过期失效)',
+  `source_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源类型(如任务奖励、商店购买、宝箱开启等)',
+  `source_id` int DEFAULT NULL COMMENT '来源ID(如任务ID、订单ID、宝箱ID等)',
+  `attributes` json DEFAULT NULL COMMENT '额外属性,存储交易相关的详细信息',
+  `expire_at` timestamp NULL DEFAULT NULL COMMENT '物品过期时间(如果有)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `ip_address` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作的IP地址(用于安全审计)',
+  `device_info` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备信息(用于安全审计)',
+  PRIMARY KEY (`id`),
+  KEY `idx_user_created` (`user_id`,`created_at`),
+  KEY `idx_item_id` (`item_id`),
+  KEY `idx_transaction_source` (`transaction_type`,`source_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品获取/消耗记录表';

+ 18 - 0
app/Module/GameItems/Databases/createsql/kku_item_user_output_counters.sql

@@ -0,0 +1,18 @@
+-- 表 kku_item_user_output_counters 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_user_output_counters`;
+CREATE TABLE `kku_item_user_output_counters` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `limit_id` int NOT NULL COMMENT '产出限制ID,外键关联kku_item_output_limits表',
+  `current_count` int NOT NULL DEFAULT '0' COMMENT '当前产出计数',
+  `record_date` date DEFAULT NULL COMMENT '记录日期(用于日期统计和重置)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_user_limit` (`user_id`,`limit_id`),
+  KEY `idx_record_date` (`record_date`),
+  KEY `fk_user_limit` (`limit_id`),
+  CONSTRAINT `fk_user_limit` FOREIGN KEY (`limit_id`) REFERENCES `kku_item_output_limits` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户物品产出限制计数表';

+ 19 - 0
app/Module/GameItems/Databases/createsql/kku_item_user_recipes.sql

@@ -0,0 +1,19 @@
+-- 表 kku_item_user_recipes 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_user_recipes`;
+CREATE TABLE `kku_item_user_recipes` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `recipe_id` int NOT NULL COMMENT '配方ID,外键关联kku_item_recipes表',
+  `is_unlocked` tinyint DEFAULT '0' COMMENT '是否已解锁(0:否, 1:是)',
+  `unlock_time` timestamp NULL DEFAULT NULL COMMENT '解锁时间',
+  `last_craft_time` timestamp NULL DEFAULT NULL COMMENT '最后合成时间',
+  `craft_count` int DEFAULT '0' COMMENT '合成次数',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `idx_user_recipe` (`user_id`,`recipe_id`),
+  KEY `fk_user_recipe` (`recipe_id`),
+  CONSTRAINT `fk_user_recipe` FOREIGN KEY (`recipe_id`) REFERENCES `kku_item_recipes` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户配方解锁状态表';

+ 22 - 0
app/Module/GameItems/Databases/createsql/kku_item_users.sql

@@ -0,0 +1,22 @@
+-- 表 kku_item_users 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_item_users`;
+CREATE TABLE `kku_item_users` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '记录ID,主键',
+  `user_id` int NOT NULL COMMENT '用户ID',
+  `item_id` int NOT NULL COMMENT '统一属性物品ID,外键关联kku_item_items表',
+  `instance_id` int DEFAULT NULL COMMENT '单独属性物品ID,外键关联kku_item_instances表(可为空)',
+  `quantity` int NOT NULL DEFAULT '1' COMMENT '数量(对于单独属性物品,该值始终为1)',
+  `expire_at` timestamp NULL DEFAULT NULL COMMENT '用户物品过期时间(可为空)',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '获取时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_user_item` (`user_id`,`item_id`),
+  KEY `idx_user_instance` (`user_id`,`instance_id`),
+  KEY `idx_expire_at` (`expire_at`),
+  KEY `fk_user_item` (`item_id`),
+  KEY `fk_user_instance` (`instance_id`),
+  CONSTRAINT `fk_user_instance` FOREIGN KEY (`instance_id`) REFERENCES `kku_item_instances` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_user_item` FOREIGN KEY (`item_id`) REFERENCES `kku_item_items` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户物品关联表';

+ 2 - 2
app/Module/GameItems/Models/Item.php

@@ -10,7 +10,7 @@ use UCore\ModelCore;
 /**
  * 物品基础信息
  *
- * field start
+ * field start 
  * @property   int  $id  物品ID,主键
  * @property   string  $name  物品名称
  * @property   string  $description  物品描述
@@ -39,7 +39,7 @@ class Item extends ModelCore
      */
     protected $table = 'item_items';
 
-    // attrlist start
+    // attrlist start 
     protected $fillable = [
         'id',
         'name',

+ 2 - 2
app/Module/GameItems/Models/ItemChestContent.php

@@ -9,7 +9,7 @@ use UCore\ModelCore;
 /**
  * 宝箱内容配置
  *
- * field start
+ * field start 
  * @property   int  $id  记录ID,主键
  * @property   int  $chest_id  宝箱物品ID,外键关联kku_item_items表
  * @property   int  $item_id  可能获得的物品ID,外键关联kku_item_items表(与group_id二选一)
@@ -33,7 +33,7 @@ class ItemChestContent extends ModelCore
      */
     protected $table = 'item_chest_contents';
 
-    // attrlist start
+    // attrlist start 
     protected $fillable = [
         'id',
         'chest_id',

+ 2 - 2
app/Module/GameItems/Models/ItemPityTime.php

@@ -8,7 +8,7 @@ use UCore\ModelCore;
 /**
  * 宝箱保底计数
  *
- * field start
+ * field start 
  * @property   int  $id  记录ID,主键
  * @property   int  $user_id  用户ID
  * @property   int  $chest_id  宝箱ID,外键关联kku_item_items表
@@ -28,7 +28,7 @@ class ItemPityTime extends ModelCore
      */
     protected $table = 'item_pity_times';
 
-    // attrlist start
+    // attrlist start 
     protected $fillable = [
         'id',
         'user_id',

+ 20 - 0
app/Module/OAuth/Databases/createsql/kku_oauth_access_tokens.sql

@@ -0,0 +1,20 @@
+-- 表 kku_oauth_access_tokens 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_oauth_access_tokens`;
+CREATE TABLE `kku_oauth_access_tokens` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `client_id` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端ID',
+  `user_id` bigint unsigned DEFAULT NULL COMMENT '用户ID',
+  `access_token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '访问令牌',
+  `refresh_token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+  `expires_at` timestamp NULL DEFAULT NULL COMMENT '过期时间',
+  `scope` json DEFAULT NULL COMMENT '权限范围',
+  `revoked` tinyint(1) NOT NULL DEFAULT '0',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `oauth_access_tokens_token_unique` (`access_token`),
+  KEY `oauth_access_tokens_client_id_index` (`client_id`),
+  KEY `oauth_access_tokens_user_id_index` (`user_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OAuth访问令牌表';

+ 18 - 0
app/Module/OAuth/Databases/createsql/kku_oauth_clients.sql

@@ -0,0 +1,18 @@
+-- 表 kku_oauth_clients 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_oauth_clients`;
+CREATE TABLE `kku_oauth_clients` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端名称',
+  `client_id` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端ID',
+  `client_secret` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端密钥',
+  `redirect_uri` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '回调地址',
+  `grant_types` json DEFAULT NULL COMMENT '授权类型',
+  `scope` json DEFAULT NULL COMMENT '权限范围',
+  `user_id` bigint unsigned DEFAULT NULL COMMENT '关联用户ID',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `oauth_clients_client_id_unique` (`client_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OAuth客户端表';

+ 18 - 0
app/Module/Pet/Databases/createsql/kku_pet_battle_logs.sql

@@ -0,0 +1,18 @@
+-- 表 kku_pet_battle_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_pet_battle_logs`;
+CREATE TABLE `kku_pet_battle_logs` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `pet_id` bigint unsigned NOT NULL,
+  `battle_type` tinyint unsigned NOT NULL COMMENT '战斗类型:1偷菜,2守护,3争霸赛',
+  `opponent_id` bigint unsigned DEFAULT NULL COMMENT '对手ID(可为空)',
+  `result` tinyint unsigned NOT NULL COMMENT '战斗结果:0失败,1胜利',
+  `reward` json DEFAULT NULL COMMENT '战斗奖励',
+  `battle_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  KEY `idx_pet` (`pet_id`),
+  KEY `idx_battle_time` (`battle_time`),
+  CONSTRAINT `kku_pet_battle_logs_ibfk_1` FOREIGN KEY (`pet_id`) REFERENCES `kku_pet_users` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='战斗记录';

+ 18 - 0
app/Module/Pet/Databases/createsql/kku_pet_battle_seasons.sql

@@ -0,0 +1,18 @@
+-- 表 kku_pet_battle_seasons 的创建SQL
+-- 自动生成于 2025-04-30 03:00:12
+
+DROP TABLE IF EXISTS `kku_pet_battle_seasons`;
+CREATE TABLE `kku_pet_battle_seasons` (
+  `id` int unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '赛季名称',
+  `start_time` timestamp NOT NULL COMMENT '开始时间',
+  `end_time` timestamp NOT NULL COMMENT '结束时间',
+  `boss_power` int unsigned NOT NULL COMMENT 'Boss战力',
+  `reward_pool` json NOT NULL COMMENT '奖池配置',
+  `status` tinyint unsigned DEFAULT '0' COMMENT '状态:0未开始,1进行中,2已结束',
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  KEY `idx_status` (`status`),
+  KEY `idx_time` (`start_time`,`end_time`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='争霸赛赛季';

+ 17 - 0
app/Module/Pet/Databases/createsql/kku_pet_battle_team_members.sql

@@ -0,0 +1,17 @@
+-- 表 kku_pet_battle_team_members 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_battle_team_members`;
+CREATE TABLE `kku_pet_battle_team_members` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `team_id` int unsigned NOT NULL COMMENT '队伍ID',
+  `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
+  `pet_id` bigint unsigned NOT NULL COMMENT '宠物ID',
+  `power` int unsigned NOT NULL COMMENT '战力贡献',
+  `join_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `idx_team_user` (`team_id`,`user_id`),
+  KEY `idx_pet` (`pet_id`),
+  CONSTRAINT `kku_pet_battle_team_members_ibfk_1` FOREIGN KEY (`team_id`) REFERENCES `kku_pet_battle_teams` (`id`),
+  CONSTRAINT `kku_pet_battle_team_members_ibfk_2` FOREIGN KEY (`pet_id`) REFERENCES `kku_pet_users` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='争霸赛队伍成员';

+ 18 - 0
app/Module/Pet/Databases/createsql/kku_pet_battle_teams.sql

@@ -0,0 +1,18 @@
+-- 表 kku_pet_battle_teams 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_battle_teams`;
+CREATE TABLE `kku_pet_battle_teams` (
+  `id` int unsigned NOT NULL AUTO_INCREMENT,
+  `season_id` int unsigned NOT NULL COMMENT '赛季ID',
+  `name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '队伍名称',
+  `leader_id` bigint unsigned NOT NULL COMMENT '队长用户ID',
+  `total_power` int unsigned NOT NULL DEFAULT '0' COMMENT '队伍总战力',
+  `member_count` tinyint unsigned DEFAULT '0' COMMENT '成员数量',
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  KEY `idx_season` (`season_id`),
+  KEY `idx_leader` (`leader_id`),
+  CONSTRAINT `kku_pet_battle_teams_ibfk_1` FOREIGN KEY (`season_id`) REFERENCES `kku_pet_battle_seasons` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='争霸赛队伍';

+ 15 - 0
app/Module/Pet/Databases/createsql/kku_pet_configs.sql

@@ -0,0 +1,15 @@
+-- 表 kku_pet_configs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_configs`;
+CREATE TABLE `kku_pet_configs` (
+  `id` int unsigned NOT NULL AUTO_INCREMENT,
+  `pet_type` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '宠物类型',
+  `grade_probability` json NOT NULL COMMENT '品阶概率配置',
+  `display_attributes` json DEFAULT NULL COMMENT '显示属性配置',
+  `numeric_attributes` json DEFAULT NULL COMMENT '数值属性配置',
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `idx_pet_type` (`pet_type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='宠物 配置';

+ 17 - 0
app/Module/Pet/Databases/createsql/kku_pet_level_configs.sql

@@ -0,0 +1,17 @@
+-- 表 kku_pet_level_configs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_level_configs`;
+CREATE TABLE `kku_pet_level_configs` (
+  `id` int unsigned NOT NULL AUTO_INCREMENT,
+  `pet_id` int unsigned NOT NULL COMMENT '宠物 ID',
+  `level` tinyint unsigned NOT NULL COMMENT '等级',
+  `exp_required` int unsigned NOT NULL COMMENT '升级所需经验值',
+  `skills` json DEFAULT NULL COMMENT '可用技能',
+  `display_attributes` json DEFAULT NULL COMMENT '等级显示属性配置',
+  `numeric_attributes` json DEFAULT NULL COMMENT '等级数值属性配置',
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `idx_level` (`level`)
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='宠物 等级配置';

+ 15 - 0
app/Module/Pet/Databases/createsql/kku_pet_remould_logs.sql

@@ -0,0 +1,15 @@
+-- 表 kku_pet_remould_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_remould_logs`;
+CREATE TABLE `kku_pet_remould_logs` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `pet_id` bigint unsigned NOT NULL,
+  `old_grade` enum('FIRST','SECOND','THIRD','FOURTH') COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `new_grade` enum('FIRST','SECOND','THIRD','FOURTH') COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `remould_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  KEY `idx_pet` (`pet_id`),
+  CONSTRAINT `kku_pet_remould_logs_ibfk_1` FOREIGN KEY (`pet_id`) REFERENCES `kku_pet_users` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='洗髓记录';

+ 17 - 0
app/Module/Pet/Databases/createsql/kku_pet_skill_logs.sql

@@ -0,0 +1,17 @@
+-- 表 kku_pet_skill_logs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_skill_logs`;
+CREATE TABLE `kku_pet_skill_logs` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `pet_id` bigint unsigned NOT NULL,
+  `skill_id` int unsigned NOT NULL,
+  `used_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `effect_result` json DEFAULT NULL COMMENT '技能使用结果',
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  KEY `skill_id` (`skill_id`),
+  KEY `idx_pet_skill` (`pet_id`,`skill_id`),
+  CONSTRAINT `kku_pet_skill_logs_ibfk_1` FOREIGN KEY (`pet_id`) REFERENCES `kku_pet_users` (`id`),
+  CONSTRAINT `kku_pet_skill_logs_ibfk_2` FOREIGN KEY (`skill_id`) REFERENCES `kku_pet_skills` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='技能 使用日志';

+ 16 - 0
app/Module/Pet/Databases/createsql/kku_pet_skills.sql

@@ -0,0 +1,16 @@
+-- 表 kku_pet_skills 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_skills`;
+CREATE TABLE `kku_pet_skills` (
+  `id` int unsigned NOT NULL AUTO_INCREMENT,
+  `skill_name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '技能名称',
+  `stamina_cost` smallint NOT NULL COMMENT '体力消耗',
+  `cool_down` int DEFAULT NULL COMMENT '冷却时间(秒)',
+  `duration_time` int DEFAULT NULL COMMENT '持续时间(秒)',
+  `effect_desc` text COLLATE utf8mb4_general_ci COMMENT '效果描述',
+  `min_level` tinyint unsigned DEFAULT '1' COMMENT '最低等级要求',
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='技能配置';

+ 18 - 0
app/Module/Pet/Databases/createsql/kku_pet_users.sql

@@ -0,0 +1,18 @@
+-- 表 kku_pet_users 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_pet_users`;
+CREATE TABLE `kku_pet_users` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `user_id` bigint NOT NULL COMMENT '用户ID',
+  `name` varchar(20) NOT NULL COMMENT '宠物名称',
+  `grade` enum('FIRST','SECOND','THIRD','FOURTH') NOT NULL,
+  `level` tinyint unsigned DEFAULT '1',
+  `experience` int unsigned DEFAULT '0',
+  `stamina` smallint unsigned DEFAULT '100',
+  `status` tinyint unsigned DEFAULT '1' COMMENT '宠物状态:0未知,1正常,2战斗中,3死亡',
+  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`),
+  KEY `idx_user` (`user_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户的宠物';

+ 5 - 5
app/Module/Pet/Models/PetLevelConfig.php

@@ -13,16 +13,16 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany;
 /**
  * 宠物等级配置模型
  *
- * field start
- * @property   int  $id
+ * field start 
+ * @property   int  $id  
  * @property   int  $pet_id  宠物 ID
  * @property   int  $level  等级
  * @property   int  $exp_required  升级所需经验值
  * @property   object|array  $skills  可用技能
  * @property   object|array  $display_attributes  等级显示属性配置
  * @property   object|array  $numeric_attributes  等级数值属性配置
- * @property   \Carbon\Carbon  $created_at
- * @property   \Carbon\Carbon  $updated_at
+ * @property   \Carbon\Carbon  $created_at  
+ * @property   \Carbon\Carbon  $updated_at  
  * field end
  */
 class PetLevelConfig extends ModelCore
@@ -35,7 +35,7 @@ class PetLevelConfig extends ModelCore
      */
     protected $table = 'pet_level_configs';
 
-    // attrlist start
+    // attrlist start 
     protected $fillable = [
         'id',
         'pet_id',

+ 16 - 0
app/Module/Sms/Databases/createsql/kku_sms_code.sql

@@ -0,0 +1,16 @@
+-- 表 kku_sms_code 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_sms_code`;
+CREATE TABLE `kku_sms_code` (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `mobile` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `code_value` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  KEY `lan_sms_code_mobile_IDX` (`mobile`,`type`,`deleted_at`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=101828 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='短信表';

+ 18 - 0
app/Module/Sms/Databases/createsql/kku_sms_config.sql

@@ -0,0 +1,18 @@
+-- 表 kku_sms_config 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_sms_config`;
+CREATE TABLE `kku_sms_config` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `driver` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '驱动',
+  `is_open` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '是否开启',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题',
+  `desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '描述',
+  `type` tinyint unsigned NOT NULL COMMENT '类型 详情见枚举',
+  `value` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '值',
+  `group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分组',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='短信配置信息';

+ 19 - 0
app/Module/Sms/Databases/createsql/kku_sms_dbgateway.sql

@@ -0,0 +1,19 @@
+-- 表 kku_sms_dbgateway 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_sms_dbgateway`;
+CREATE TABLE `kku_sms_dbgateway` (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `tpl_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `tpl_value` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `universal_number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `mobile` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `content` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `idd_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `zero_prefixed_number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=284 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='短信 数据库网关表';

+ 19 - 0
app/Module/System/Databases/1.sql

@@ -0,0 +1,19 @@
+
+CREATE TABLE kk_uruas2.kku_continuous_times
+(
+    id         int auto_increment                                            NOT NULL PRIMARY KEY COMMENT '主键id',
+    user_id    bigint unsigned                                               NULL COMMENT '用户id',
+    stype      varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '产品类型',
+    sid        bigint                                                        NULL COMMENT '产品id',
+    `number`   bigint                                                        NULL COMMENT '计数',
+    last_time  bigint                                                        NULL COMMENT '最后的时间',
+    created_at timestamp                                                     NULL,
+    updated_at timestamp                                                     NULL,
+    deleted_at timestamp                                                     NULL,
+    diff       int                                                           NULL,
+    CONSTRAINT `PRIMARY` PRIMARY KEY (id)
+)
+    ENGINE = InnoDB
+    DEFAULT CHARSET = utf8mb4
+    COLLATE = utf8mb4_general_ci
+    COMMENT ='连续次数判定';

+ 19 - 0
app/Module/System/Databases/createsql/kku_admin_actionlogs.sql

@@ -0,0 +1,19 @@
+-- 表 kku_admin_actionlogs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_admin_actionlogs`;
+CREATE TABLE `kku_admin_actionlogs` (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `type1` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `unid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `admin_id` int NOT NULL COMMENT '操作的Admin ID',
+  `object_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作对象',
+  `url` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网址',
+  `before` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作之前',
+  `after` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作之后',
+  `status` int NOT NULL COMMENT '状态',
+  `p1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数1',
+  `updated_at` datetime NOT NULL COMMENT '更新 时间戳',
+  `created_at` datetime NOT NULL COMMENT '创建 时间戳',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=1747 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='管理员操作日志';

+ 15 - 0
app/Module/System/Databases/createsql/kku_admin_grid_views.sql

@@ -0,0 +1,15 @@
+-- 表 kku_admin_grid_views 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_admin_grid_views`;
+CREATE TABLE `kku_admin_grid_views` (
+  `id` int NOT NULL AUTO_INCREMENT,
+  `admin_id` int NOT NULL COMMENT '操作的Admin ID',
+  `type1` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '视图标题',
+  `router_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '路由名字',
+  `p1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数1',
+  `updated_at` datetime NOT NULL COMMENT '更新 时间戳',
+  `created_at` datetime NOT NULL COMMENT '创建 时间戳',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='后台 - 表格视图';

+ 16 - 0
app/Module/System/Databases/createsql/kku_admin_users.sql

@@ -0,0 +1,16 @@
+-- 表 kku_admin_users 的创建SQL
+-- 自动生成于 2025-04-30 03:00:13
+
+DROP TABLE IF EXISTS `kku_admin_users`;
+CREATE TABLE `kku_admin_users` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `username` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `password` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+  `remember_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `admin_users_username_unique` (`username`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

+ 21 - 0
app/Module/System/Databases/createsql/kku_sys_configs.sql

@@ -0,0 +1,21 @@
+-- 表 kku_sys_configs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:14
+
+DROP TABLE IF EXISTS `kku_sys_configs`;
+CREATE TABLE `kku_sys_configs` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `keyname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'key',
+  `is_client` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '是否给客户端',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题',
+  `type` tinyint unsigned NOT NULL COMMENT '类型 详情见枚举',
+  `value` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '值',
+  `group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分组',
+  `group2` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '默认' COMMENT '分组2',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间',
+  `desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '描述',
+  `options` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '其他配置',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE KEY `lan_sys_configs_keyname_IDX` (`keyname`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=2017 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应用配置信息';

+ 17 - 0
app/Module/Test/Databases/createsql/kku_test.sql

@@ -0,0 +1,17 @@
+-- 表 kku_test 的创建SQL
+-- 自动生成于 2025-04-30 03:00:14
+
+DROP TABLE IF EXISTS `kku_test`;
+CREATE TABLE `kku_test` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称',
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '编码',
+  `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '描述',
+  `data` json DEFAULT NULL COMMENT '数据',
+  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0禁用 1启用',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `test_code_unique` (`code`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

+ 21 - 21
app/Module/Ulogic/Databases/app_messagetables.sql

@@ -1,5 +1,5 @@
 -- 消息表
-CREATE TABLE `app_messages` (
+CREATE TABLE `kku_app_messages` (
     `id` bigint unsigned NOT NULL AUTO_INCREMENT,
     `type` varchar(20) NOT NULL COMMENT '消息类型:system=系统消息,user=用户消息',
     `template_id` bigint unsigned DEFAULT NULL COMMENT '模板ID,为空表示非模板消息',
@@ -20,20 +20,20 @@ CREATE TABLE `app_messages` (
     `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
     `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
     PRIMARY KEY (`id`),
-    KEY `app_messages_type_index` (`type`),
-    KEY `app_messages_template_id_index` (`template_id`),
-    KEY `app_messages_template_code_index` (`template_code`),
-    KEY `app_messages_content_type_index` (`content_type`),
-    KEY `app_messages_sender_id_index` (`sender_id`),
-    KEY `app_messages_receiver_id_index` (`receiver_id`),
-    KEY `app_messages_parent_id_index` (`parent_id`),
-    KEY `app_messages_is_read_index` (`is_read`),
-    KEY `app_messages_status_index` (`status`),
-    CONSTRAINT `app_messages_template_id_foreign` FOREIGN KEY (`template_id`) REFERENCES `app_message_templates` (`id`) ON DELETE SET NULL
+    KEY `kku_app_messages_type_index` (`type`),
+    KEY `kku_app_messages_template_id_index` (`template_id`),
+    KEY `kku_app_messages_template_code_index` (`template_code`),
+    KEY `kku_app_messages_content_type_index` (`content_type`),
+    KEY `kku_app_messages_sender_id_index` (`sender_id`),
+    KEY `kku_app_messages_receiver_id_index` (`receiver_id`),
+    KEY `kku_app_messages_parent_id_index` (`parent_id`),
+    KEY `kku_app_messages_is_read_index` (`is_read`),
+    KEY `kku_app_messages_status_index` (`status`),
+    CONSTRAINT `kku_app_messages_template_id_foreign` FOREIGN KEY (`template_id`) REFERENCES `kku_app_message_templates` (`id`) ON DELETE SET NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站内信消息表';
 
 -- 消息接收表(用于群发消息)
-CREATE TABLE `app_message_recipients` (
+CREATE TABLE `kku_app_message_recipients` (
     `id` bigint unsigned NOT NULL AUTO_INCREMENT,
     `message_id` bigint unsigned NOT NULL COMMENT '消息ID',
     `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
@@ -43,14 +43,14 @@ CREATE TABLE `app_message_recipients` (
     `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
     `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
     PRIMARY KEY (`id`),
-    UNIQUE KEY `app_message_recipients_message_user_unique` (`message_id`, `user_id`),
-    KEY `app_message_recipients_user_id_index` (`user_id`),
-    KEY `app_message_recipients_is_read_index` (`is_read`),
-    KEY `app_message_recipients_status_index` (`status`)
+    UNIQUE KEY `kku_app_message_recipients_message_user_unique` (`message_id`, `user_id`),
+    KEY `kku_app_message_recipients_user_id_index` (`user_id`),
+    KEY `kku_app_message_recipients_is_read_index` (`is_read`),
+    KEY `kku_app_message_recipients_status_index` (`status`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站内信群发接收表';
 
 -- 消息模板表
-CREATE TABLE `app_message_templates` (
+CREATE TABLE `kku_app_message_templates` (
     `id` bigint unsigned NOT NULL AUTO_INCREMENT,
     `name` varchar(100) NOT NULL COMMENT '模板名称',
     `code` varchar(50) NOT NULL COMMENT '模板代码',
@@ -64,8 +64,8 @@ CREATE TABLE `app_message_templates` (
     `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
     `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
     PRIMARY KEY (`id`),
-    UNIQUE KEY `app_message_templates_code_unique` (`code`),
-    KEY `app_message_templates_type_index` (`type`),
-    KEY `app_message_templates_content_type_index` (`content_type`),
-    KEY `app_message_templates_status_index` (`status`)
+    UNIQUE KEY `kku_app_message_templates_code_unique` (`code`),
+    KEY `kku_app_message_templates_type_index` (`type`),
+    KEY `kku_app_message_templates_content_type_index` (`content_type`),
+    KEY `kku_app_message_templates_status_index` (`status`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站内信模板表';

+ 19 - 0
app/Module/Ulogic/Databases/createsql/kku_app_message_recipients.sql

@@ -0,0 +1,19 @@
+-- 表 kku_app_message_recipients 的创建SQL
+-- 自动生成于 2025-04-30 03:00:14
+
+DROP TABLE IF EXISTS `kku_app_message_recipients`;
+CREATE TABLE `kku_app_message_recipients` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `message_id` bigint unsigned NOT NULL COMMENT '消息ID',
+  `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
+  `is_read` tinyint NOT NULL DEFAULT '0' COMMENT '是否已读:0未读 1已读',
+  `read_at` timestamp NULL DEFAULT NULL COMMENT '阅读时间',
+  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0删除 1正常',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `kku_app_message_recipients_message_user_unique` (`message_id`,`user_id`),
+  KEY `kku_app_message_recipients_user_id_index` (`user_id`),
+  KEY `kku_app_message_recipients_is_read_index` (`is_read`),
+  KEY `kku_app_message_recipients_status_index` (`status`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站内信群发接收表';

+ 23 - 0
app/Module/Ulogic/Databases/createsql/kku_app_message_templates.sql

@@ -0,0 +1,23 @@
+-- 表 kku_app_message_templates 的创建SQL
+-- 自动生成于 2025-04-30 03:00:14
+
+DROP TABLE IF EXISTS `kku_app_message_templates`;
+CREATE TABLE `kku_app_message_templates` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板名称',
+  `code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板代码',
+  `type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息类型:system=系统消息,user=用户消息',
+  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息标题',
+  `content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息内容',
+  `content_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'text' COMMENT '内容类型:text=纯文本,html=富文本,markdown=MD格式,json=JSON格式',
+  `variables` json DEFAULT NULL COMMENT '变量定义',
+  `allow_reply` tinyint NOT NULL DEFAULT '1' COMMENT '是否允许回复:0不允许 1允许',
+  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0禁用 1启用',
+  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
+  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `kku_app_message_templates_code_unique` (`code`),
+  KEY `kku_app_message_templates_type_index` (`type`),
+  KEY `kku_app_message_templates_content_type_index` (`content_type`),
+  KEY `kku_app_message_templates_status_index` (`status`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站内信模板表';

+ 16 - 0
app/Module/Ulogic/Databases/createsql/kku_user_daytimes.sql

@@ -0,0 +1,16 @@
+-- 表 kku_user_daytimes 的创建SQL
+-- 自动生成于 2025-04-30 03:00:14
+
+DROP TABLE IF EXISTS `kku_user_daytimes`;
+CREATE TABLE `kku_user_daytimes` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
+  `user_id` bigint unsigned DEFAULT NULL COMMENT '用户id',
+  `stype` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '产品类型',
+  `sid` bigint DEFAULT NULL COMMENT '产品id',
+  `number` bigint DEFAULT NULL COMMENT '计数',
+  `day` bigint DEFAULT NULL COMMENT '日期',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用户 每日计数';

+ 16 - 0
app/Module/Ulogic/Databases/createsql/kku_user_punishs.sql

@@ -0,0 +1,16 @@
+-- 表 kku_user_punishs 的创建SQL
+-- 自动生成于 2025-04-30 03:00:15
+
+DROP TABLE IF EXISTS `kku_user_punishs`;
+CREATE TABLE `kku_user_punishs` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
+  `type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '类型',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '描述',
+  `level` tinyint unsigned DEFAULT NULL COMMENT '惩罚等级',
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  `admin_id` bigint unsigned NOT NULL COMMENT '做出惩罚的管理员ID',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=347 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户 - 惩罚(违规记录)';

+ 15 - 0
app/Module/Ulogic/Databases/createsql/kku_user_times.sql

@@ -0,0 +1,15 @@
+-- 表 kku_user_times 的创建SQL
+-- 自动生成于 2025-04-30 03:00:15
+
+DROP TABLE IF EXISTS `kku_user_times`;
+CREATE TABLE `kku_user_times` (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
+  `user_id` bigint unsigned DEFAULT NULL COMMENT '用户id',
+  `stype` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '产品类型',
+  `sid` bigint DEFAULT NULL COMMENT '产品id',
+  `number` bigint DEFAULT NULL COMMENT '计数',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用户计数';

+ 14 - 0
app/Module/Ulogic/Models/AppMessageRecipient.php

@@ -23,6 +23,14 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
  * App\Module\Ulogic\Models\AppMessageRecipient
  *
  * field start 
+ * @property   int  $id  
+ * @property   int  $message_id  消息ID
+ * @property   int  $user_id  用户ID
+ * @property   int  $is_read  是否已读:0未读 1已读
+ * @property   string  $read_at  阅读时间
+ * @property   int  $status  状态:0删除 1正常
+ * @property   \Carbon\Carbon  $created_at  创建时间
+ * @property   \Carbon\Carbon  $updated_at  更新时间
  * field end
  */
 class AppMessageRecipient extends Model
@@ -36,6 +44,12 @@ class AppMessageRecipient extends Model
 
     // attrlist start 
     protected $fillable = [
+        'id',
+        'message_id',
+        'user_id',
+        'is_read',
+        'read_at',
+        'status',
     ];
     // attrlist end
 

+ 22 - 0
app/Module/Ulogic/Models/AppMessageTemplate.php

@@ -23,6 +23,18 @@ use Illuminate\Database\Eloquent\Model;
  * App\Module\Ulogic\Models\AppMessageTemplate
  *
  * field start 
+ * @property   int  $id  
+ * @property   string  $name  模板名称
+ * @property   string  $code  模板代码
+ * @property   string  $type  消息类型:system=系统消息,user=用户消息
+ * @property   string  $title  消息标题
+ * @property   string  $content  消息内容
+ * @property   string  $content_type  内容类型:text=纯文本,html=富文本,markdown=MD格式,json=JSON格式
+ * @property   object|array  $variables  变量定义
+ * @property   int  $allow_reply  是否允许回复:0不允许 1允许
+ * @property   int  $status  状态:0禁用 1启用
+ * @property   \Carbon\Carbon  $created_at  创建时间
+ * @property   \Carbon\Carbon  $updated_at  更新时间
  * field end
  */
 class AppMessageTemplate extends Model
@@ -36,6 +48,16 @@ class AppMessageTemplate extends Model
 
     // attrlist start 
     protected $fillable = [
+        'id',
+        'name',
+        'code',
+        'type',
+        'title',
+        'content',
+        'content_type',
+        'variables',
+        'allow_reply',
+        'status',
     ];
     // attrlist end
 

+ 19 - 0
app/Module/User/Databases/createsql/kku_user_actions.sql

@@ -0,0 +1,19 @@
+-- 表 kku_user_actions 的创建SQL
+-- 自动生成于 2025-04-30 03:00:15
+
+DROP TABLE IF EXISTS `kku_user_actions`;
+CREATE TABLE `kku_user_actions` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `admin_id` bigint unsigned NOT NULL COMMENT '做出操作的管理员ID',
+  `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
+  `type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '类型',
+  `desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '描述',
+  `exp_time` bigint DEFAULT NULL COMMENT '有效期',
+  `re_id` bigint unsigned DEFAULT NULL COMMENT '关联操作-ID',
+  `re_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '关联操作-类型',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  `status` tinyint unsigned NOT NULL COMMENT '状态',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=7253 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户 - 操作(封禁类)';

+ 16 - 0
app/Module/User/Databases/createsql/kku_user_infos.sql

@@ -0,0 +1,16 @@
+-- 表 kku_user_infos 的创建SQL
+-- 自动生成于 2025-04-30 03:00:15
+
+DROP TABLE IF EXISTS `kku_user_infos`;
+CREATE TABLE `kku_user_infos` (
+  `user_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
+  `status` tinyint unsigned DEFAULT NULL COMMENT '状态',
+  `google2fa_secret` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+  `nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '昵称',
+  `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '头像',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  `wx_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '微信号',
+  PRIMARY KEY (`user_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=215272 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户信息';

+ 15 - 0
app/Module/User/Databases/createsql/kku_user_phones.sql

@@ -0,0 +1,15 @@
+-- 表 kku_user_phones 的创建SQL
+-- 自动生成于 2025-04-30 03:00:15
+
+DROP TABLE IF EXISTS `kku_user_phones`;
+CREATE TABLE `kku_user_phones` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
+  `status` tinyint unsigned DEFAULT NULL COMMENT '状态',
+  `type` tinyint unsigned DEFAULT NULL COMMENT '类型',
+  `phone` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=28924 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户- 手机号码';

+ 15 - 0
app/Module/User/Databases/createsql/kku_user_secret_passwords.sql

@@ -0,0 +1,15 @@
+-- 表 kku_user_secret_passwords 的创建SQL
+-- 自动生成于 2025-04-30 03:00:15
+
+DROP TABLE IF EXISTS `kku_user_secret_passwords`;
+CREATE TABLE `kku_user_secret_passwords` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
+  `status` tinyint unsigned DEFAULT NULL COMMENT '状态',
+  `last_check_at` timestamp NULL DEFAULT NULL COMMENT '最后验证时间',
+  `secret_password` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '安全密码',
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `deleted_at` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=23017 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户 - 安全密码';

+ 14 - 0
app/Module/User/Databases/createsql/kku_users.sql

@@ -0,0 +1,14 @@
+-- 表 kku_users 的创建SQL
+-- 自动生成于 2025-04-30 03:00:15
+
+DROP TABLE IF EXISTS `kku_users`;
+CREATE TABLE `kku_users` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
+  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `remember_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+  `created_at` timestamp NULL DEFAULT NULL,
+  `updated_at` timestamp NULL DEFAULT NULL,
+  `status2` tinyint DEFAULT '1' COMMENT '状态',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=38901 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;