package main import ( "fmt" "log" "golang.org/x/crypto/bcrypt" "gorm.io/driver/mysql" "gorm.io/gorm" ) // UserAccount 用户账号模型 type UserAccount struct { ID uint `gorm:"primaryKey"` Username string `gorm:"type:varchar(64);uniqueIndex"` PasswordHash string `gorm:"type:varchar(255)"` Name string `gorm:"type:varchar(64)"` Phone string `gorm:"type:varchar(20);uniqueIndex"` UserType string `gorm:"type:varchar(16)"` Status int `gorm:"default:1"` LastLoginAt *string LastLoginIP string CreatedAt string UpdatedAt string } func main() { fmt.Println("AI近视防控系统 - 管理员账号创建工具") // 数据库连接信息 - 从环境变量或配置文件读取 // 使用与主应用相同的数据库连接信息 dsn := "root:MyopiaTest2026!@tcp(localhost:3306)/ai_myopia_db?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { log.Fatal("连接数据库失败:", err) } // 加密管理员密码 adminPassword := "Admin123!@#" // 强密码,包含大小写字母、数字、特殊字符 hashedPassword, err := bcrypt.GenerateFromPassword([]byte(adminPassword), bcrypt.DefaultCost) if err != nil { log.Fatal("密码加密失败:", err) } // 创建管理员账号 adminAccount := UserAccount{ Username: "admin", PasswordHash: string(hashedPassword), Name: "系统管理员", Phone: "13800138000", UserType: "admin", Status: 1, } result := db.Table("user_accounts").Where("username = ?", "admin").First(&UserAccount{}) if result.Error != nil { // 管理员账号不存在,创建新账号 result = db.Table("user_accounts").Create(&adminAccount) if result.Error != nil { log.Fatal("创建管理员账号失败:", result.Error) } fmt.Println("✅ 管理员账号创建成功") } else { // 管理员账号已存在,更新密码 result = db.Table("user_accounts"). Where("username = ?", "admin"). Updates(map[string]interface{}{ "password_hash": string(hashedPassword), "name": "系统管理员", "phone": "13800138000", "user_type": "admin", "status": 1, }) if result.Error != nil { log.Fatal("更新管理员账号失败:", result.Error) } fmt.Println("✅ 管理员账号更新成功") } fmt.Println("\n📋 测试账号信息:") fmt.Println("用户名: admin") fmt.Println("密码: Admin123!@#") fmt.Println("角色: admin") fmt.Println("手机号: 13800138000") fmt.Println("\n🔧 功能测试:") fmt.Println("- 用户认证功能: 待验证") fmt.Println("- 学生管理功能: 待验证") fmt.Println("- 检测功能: 待验证") fmt.Println("- 预警功能: 待验证") fmt.Println("\n💡 提示: 可使用此账号登录系统进行功能测试") }