diff --git a/app/admin/controller/system/Host.php b/app/admin/controller/system/Host.php index 33fcf47..22695a5 100644 --- a/app/admin/controller/system/Host.php +++ b/app/admin/controller/system/Host.php @@ -10,4 +10,13 @@ use base\admin\controller\system\HostBase; */ class Host extends HostBase { + /** + * 设置主节点. + * + * @\app\admin\service\annotation\NodeAnotation(title="设置主节点") + */ + public function setMaster() + { + return parent::setMaster(); + } } diff --git a/extend/base/common/service/HostServiceBase.php b/extend/base/common/service/HostServiceBase.php index 30f3f54..67be5ad 100644 --- a/extend/base/common/service/HostServiceBase.php +++ b/extend/base/common/service/HostServiceBase.php @@ -79,6 +79,8 @@ class HostServiceBase // 主节点自动选举:若无在线主节点,当前节点自动成为主节点 $master = SystemHost::where('is_master', 1)->where('status', 1)->find(); if (empty($master)) { + // 先清除所有旧的主节点标记(含已离线的),避免出现多个 is_master=1 + SystemHost::where('is_master', 1)->update(['is_master' => 0]); $host->is_master = 1; $host->save(); Log::info("节点 [{$nodeId}] 自动当选为主节点。");