修复 导航栏重复初始化的问题

This commit is contained in:
2026-04-17 04:54:54 +08:00
parent ec508e6a32
commit 6d6b1c00c4
6 changed files with 150 additions and 14 deletions

View File

@@ -11,6 +11,7 @@ import (
"NetworkAuth/database"
"NetworkAuth/middleware"
"NetworkAuth/models"
"NetworkAuth/server"
"NetworkAuth/services"
"NetworkAuth/utils"
@@ -72,8 +73,19 @@ func runServer(cmd *cobra.Command, args []string) {
if db != nil {
// 检查系统是否已安装
isInstalled := services.GetSettingsService().GetString("is_installed", "0")
if isInstalled == "1" {
isInstalled := false
if db.Migrator().HasTable(&models.Settings{}) {
var setting models.Settings
if err := db.Where("name = ?", "is_installed").First(&setting).Error; err == nil {
isInstalled = setting.Value == "1"
}
}
if isInstalled {
needSeedPortalNavigation, err := database.NeedSeedDefaultPortalNavigation()
if err != nil {
logrus.WithError(err).Fatal("检测默认门户导航状态失败")
}
// 执行自动迁移(确保表结构存在)
if err := database.AutoMigrate(); err != nil {
logrus.WithError(err).Fatal("数据库自动迁移失败")
@@ -82,8 +94,10 @@ func runServer(cmd *cobra.Command, args []string) {
if err := database.SeedDefaultSettings(); err != nil {
logrus.WithError(err).Fatal("默认系统设置初始化失败")
}
if err := database.SeedDefaultPortalNavigation(); err != nil {
logrus.WithError(err).Fatal("默认门户导航初始化失败")
if needSeedPortalNavigation {
if err := database.SeedDefaultPortalNavigation(); err != nil {
logrus.WithError(err).Fatal("默认门户导航初始化失败")
}
}
// 初始化加密管理器
@@ -96,7 +110,7 @@ func runServer(cmd *cobra.Command, args []string) {
// 启动日志清理定时任务
services.StartLogCleanupTask()
} else {
logrus.Info("系统未安装 (is_installed=0),跳过核心组件初始化")
logrus.Info("系统处于未安装状态,跳过数据库自动迁移和核心组件初始化")
}
} else {
logrus.Info("系统处于未初始化状态,跳过数据库自动迁移和设置加载")