feat(timer): 新增定时任务表的数据库迁移文件

补充 system_timer_config 和 system_timer_log 的数据库迁移,确保全新安装时 migrate:run 能正确建表

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
augushong
2026-05-27 20:22:09 +08:00
parent a2916d7505
commit f2f2dcad98
2 changed files with 93 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
<?php
use think\migration\Migrator;
class SystemTimerConfig extends Migrator
{
/**
* Change Method.
*
* Write your reversible migrations using this method.
*
* More information on writing migrations is available here:
* http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
*
* The following commands can be used in this method and Phinx will
* automatically reverse them when rolling back:
*
* createTable
* renameTable
* addColumn
* renameColumn
* addIndex
* addForeignKey
*
* Remember to call "create()" or "update()" and NOT "save()" when working
* with the Table class.
*/
public function change()
{
$table = $this->table('system_timer_config')
->setComment('定时任务协调配置表')
->addColumn('task_name', 'string', ['limit' => 100, 'null' => false, 'comment' => '任务名称'])
->addColumn('run_type', 'string', ['limit' => 20, 'default' => 'auto', 'comment' => '运行类型:main/auto/all/manual'])
->addColumn('status', 'integer', ['limit' => 4, 'null' => false, 'default' => 1, 'comment' => '状态:0=停用,1=启用'])
->addColumn('is_synced', 'integer', ['limit' => 4, 'null' => false, 'default' => 0, 'comment' => '是否已同步:0=未同步,1=已同步'])
->addColumn('last_execute_node', 'string', ['limit' => 100, 'null' => true, 'comment' => '最后执行节点ID'])
->addColumn('last_execute_time', 'integer', ['limit' => 11, 'default' => 0, 'comment' => '最后执行时间戳', 'signed' => false])
->addColumn('manual_trigger', 'integer', ['limit' => 4, 'null' => false, 'default' => 0, 'comment' => '手动触发标记:0=未触发,1=已触发'])
->addColumn('create_time', 'integer', ['limit' => 11, 'comment' => '创建时间', 'signed' => false])
->addColumn('update_time', 'integer', ['limit' => 11, 'comment' => '更新时间', 'signed' => false])
->addIndex('task_name', ['unique' => true])
->create();
}
}

View File

@@ -0,0 +1,49 @@
<?php
use think\migration\Migrator;
class SystemTimerLog extends Migrator
{
/**
* Change Method.
*
* Write your reversible migrations using this method.
*
* More information on writing migrations is available here:
* http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
*
* The following commands can be used in this method and Phinx will
* automatically reverse them when rolling back:
*
* createTable
* renameTable
* addColumn
* renameColumn
* addIndex
* addForeignKey
*
* Remember to call "create()" or "update()" and NOT "save()" when working
* with the Table class.
*/
public function change()
{
$table = $this->table('system_timer_log')
->setComment('定时器执行日志表')
->addColumn('task_name', 'string', ['limit' => 100, 'null' => false, 'comment' => '任务名称'])
->addColumn('node_id', 'string', ['limit' => 100, 'null' => false, 'comment' => '执行节点ID'])
->addColumn('run_type', 'string', ['limit' => 20, 'null' => true, 'comment' => '运行类型'])
->addColumn('start_time', 'integer', ['limit' => 11, 'null' => false, 'comment' => '开始时间戳', 'signed' => false])
->addColumn('end_time', 'integer', ['limit' => 11, 'default' => 0, 'comment' => '结束时间戳', 'signed' => false])
->addColumn('duration', 'integer', ['limit' => 11, 'default' => 0, 'comment' => '耗时(毫秒)', 'signed' => false])
->addColumn('status', 'string', ['limit' => 20, 'default' => 'running', 'comment' => '状态:running/success/error'])
->addColumn('error_message', 'text', ['null' => true, 'comment' => '错误信息'])
->addColumn('result', 'text', ['null' => true, 'comment' => '执行结果(任务返回值)'])
->addColumn('concurrency_id', 'integer', ['limit' => 11, 'default' => 0, 'comment' => '并发分片ID'])
->addColumn('create_time', 'integer', ['limit' => 11, 'comment' => '创建时间', 'signed' => false])
->addIndex('task_name', ['name' => 'idx_task_name'])
->addIndex('node_id', ['name' => 'idx_node_id'])
->addIndex('start_time', ['name' => 'idx_start_time'])
->addIndex('status', ['name' => 'idx_status'])
->create();
}
}