package bootstrap import ( "context" "github.com/break/junhong_cmp_fiber/internal/model" "github.com/break/junhong_cmp_fiber/pkg/config" "github.com/break/junhong_cmp_fiber/pkg/constants" pkgGorm "github.com/break/junhong_cmp_fiber/pkg/gorm" "go.uber.org/zap" ) func initDefaultAdmin(deps *Dependencies, services *services) error { logger := deps.Logger cfg := config.Get() ctx := context.Background() ctx = pkgGorm.SkipDataPermission(ctx) var count int64 if err := deps.DB.WithContext(ctx).Model(&model.Account{}).Where("user_type = ?", constants.UserTypeSuperAdmin).Count(&count).Error; err != nil { logger.Error("检查超级管理员账号失败", zap.Error(err)) return nil } if count > 0 { logger.Info("超级管理员账号已存在,跳过初始化", zap.Int64("count", count)) return nil } username := constants.DefaultAdminUsername password := constants.DefaultAdminPassword phone := constants.DefaultAdminPhone if cfg.DefaultAdmin.Username != "" { username = cfg.DefaultAdmin.Username } if cfg.DefaultAdmin.Password != "" { password = cfg.DefaultAdmin.Password } if cfg.DefaultAdmin.Phone != "" { phone = cfg.DefaultAdmin.Phone } account := &model.Account{ Username: username, Phone: phone, Password: password, UserType: constants.UserTypeSuperAdmin, Status: constants.StatusEnabled, } if err := services.Account.CreateSystemAccount(ctx, account); err != nil { logger.Error("创建默认超级管理员失败", zap.Error(err), zap.String("username", username)) return nil } logger.Info("默认超级管理员创建成功", zap.String("username", username), zap.String("phone", phone)) return nil }