mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 07:22:49 +08:00
fix(host): 防止主节点重复并修复 setMaster 权限
Clear all is_master flags before electing new master to prevent multiple master records. Fix setMaster annotation from @auth true to proper @NodeAnotation format so permission node is generated correctly. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -10,4 +10,13 @@ use base\admin\controller\system\HostBase;
|
|||||||
*/
|
*/
|
||||||
class Host extends HostBase
|
class Host extends HostBase
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* 设置主节点.
|
||||||
|
*
|
||||||
|
* @\app\admin\service\annotation\NodeAnotation(title="设置主节点")
|
||||||
|
*/
|
||||||
|
public function setMaster()
|
||||||
|
{
|
||||||
|
return parent::setMaster();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ class HostServiceBase
|
|||||||
// 主节点自动选举:若无在线主节点,当前节点自动成为主节点
|
// 主节点自动选举:若无在线主节点,当前节点自动成为主节点
|
||||||
$master = SystemHost::where('is_master', 1)->where('status', 1)->find();
|
$master = SystemHost::where('is_master', 1)->where('status', 1)->find();
|
||||||
if (empty($master)) {
|
if (empty($master)) {
|
||||||
|
// 先清除所有旧的主节点标记(含已离线的),避免出现多个 is_master=1
|
||||||
|
SystemHost::where('is_master', 1)->update(['is_master' => 0]);
|
||||||
$host->is_master = 1;
|
$host->is_master = 1;
|
||||||
$host->save();
|
$host->save();
|
||||||
Log::info("节点 [{$nodeId}] 自动当选为主节点。");
|
Log::info("节点 [{$nodeId}] 自动当选为主节点。");
|
||||||
|
|||||||
Reference in New Issue
Block a user