63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package services
|
|
|
|
import (
|
|
"baihu/internal/logger"
|
|
)
|
|
|
|
const (
|
|
InitSection = "system"
|
|
InitKey = "initialized"
|
|
InitValue = "true"
|
|
)
|
|
|
|
type InitService struct {
|
|
settingsService *SettingsService
|
|
userService *UserService
|
|
}
|
|
|
|
func NewInitService(settingsService *SettingsService, userService *UserService) *InitService {
|
|
return &InitService{
|
|
settingsService: settingsService,
|
|
userService: userService,
|
|
}
|
|
}
|
|
|
|
// Initialize 执行初始化,如果已初始化则跳过
|
|
func (s *InitService) Initialize() {
|
|
//if s.IsInitialized() {
|
|
// logger.Info("系统已初始化,跳过")
|
|
// return
|
|
//}
|
|
|
|
logger.Info("开始初始化系统...")
|
|
|
|
// 创建管理员账号
|
|
s.createAdminUser()
|
|
|
|
// 初始化默认设置(每次启动都检查)
|
|
if err := s.settingsService.InitSettings(); err != nil {
|
|
logger.Warnf("初始化设置失败: %v", err)
|
|
}
|
|
|
|
//// 标记为已初始化
|
|
//s.settingsService.Set(InitSection, InitKey, InitValue)
|
|
//logger.Info("系统初始化完成")
|
|
}
|
|
|
|
// IsInitialized 检查是否已初始化
|
|
func (s *InitService) IsInitialized() bool {
|
|
return s.settingsService.Get(InitSection, InitKey) == InitValue
|
|
}
|
|
|
|
// createAdminUser 创建管理员账号
|
|
func (s *InitService) createAdminUser() {
|
|
existingUser := s.userService.GetUserByUsername("admin")
|
|
if existingUser != nil {
|
|
logger.Info("管理员账号已存在,跳过创建")
|
|
return
|
|
}
|
|
|
|
s.userService.CreateUser("admin", "123456", "admin@local", "admin")
|
|
logger.Info("管理员账号创建成功: admin / 123456")
|
|
}
|