init_admin.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "shudao-chat-go/models"
  6. "github.com/beego/beego/v2/server/web"
  7. "golang.org/x/crypto/bcrypt"
  8. )
  9. // InitAdminUser 初始化管理员账号
  10. func InitAdminUser() {
  11. fmt.Println("=== 开始初始化管理员账号 ===")
  12. // 检查管理员账号是否已存在
  13. var existingUser models.User
  14. result := models.DB.Where("username = ?", "Admin").First(&existingUser)
  15. if result.Error == nil {
  16. fmt.Printf("管理员账号已存在 (ID: %d), 跳过初始化\n", existingUser.ID)
  17. return
  18. }
  19. // 生成密码哈希
  20. password := "admin123"
  21. hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
  22. if err != nil {
  23. log.Fatalf("密码加密失败: %v", err)
  24. }
  25. // 创建管理员账号
  26. adminUser := models.User{
  27. Username: "Admin",
  28. Password: string(hashedPassword),
  29. Nickname: "系统管理员",
  30. Email: "admin@shudaodsj.com",
  31. Role: "admin",
  32. Status: 1, // 正常状态
  33. }
  34. // 插入数据库
  35. if err := models.DB.Create(&adminUser).Error; err != nil {
  36. log.Fatalf("创建管理员账号失败: %v", err)
  37. }
  38. fmt.Printf("✅ 管理员账号创建成功!\n")
  39. fmt.Printf(" 用户名: %s\n", adminUser.Username)
  40. fmt.Printf(" 密码: %s\n", password)
  41. fmt.Printf(" 角色: %s\n", adminUser.Role)
  42. fmt.Printf(" ID: %d\n", adminUser.ID)
  43. fmt.Println("=== 初始化完成 ===")
  44. }
  45. func main() {
  46. // 加载配置
  47. if err := web.LoadAppConfig("ini", "conf/app.conf"); err != nil {
  48. log.Fatalf("加载配置文件失败: %v", err)
  49. }
  50. // 初始化管理员账号
  51. InitAdminUser()
  52. }