package main import ( "log" "os" "github.com/gin-gonic/gin" "eaisalestrain/backend/internal/api" "eaisalestrain/backend/internal/auth" "eaisalestrain/backend/internal/config" "eaisalestrain/backend/internal/model" "eaisalestrain/backend/internal/store" ) func main() { // 交付维护子命令(不进服务主流程) if len(os.Args) > 1 { switch os.Args[1] { case "-reset-admin": resetAdmin(os.Args[2:]) return } } cfg := config.Load() if _, err := store.Init(cfg.DBPath); err != nil { log.Fatalf("数据库初始化失败: %v", err) } if err := store.SeedDefaults(); err != nil { log.Fatalf("种子数据初始化失败: %v", err) } r := gin.Default() api.RegisterRoutes(r, cfg) log.Printf("eaisalestrain 后端启动,端口 :%s", cfg.Port) if err := r.Run(":" + cfg.Port); err != nil { log.Fatalf("启动失败: %v", err) } } // resetAdmin 交付前重置管理员密码:eaisalestrain-server -reset-admin <新密码> func resetAdmin(args []string) { if len(args) < 1 || args[0] == "" { log.Fatal("用法: eaisalestrain-server -reset-admin <新密码>") } cfg := config.Load() if _, err := store.Init(cfg.DBPath); err != nil { log.Fatalf("数据库初始化失败: %v", err) } hash, err := auth.HashPassword(args[0]) if err != nil { log.Fatalf("密码加密失败: %v", err) } if err := store.DB.Model(&model.User{}).Where("username = ?", "admin").Update("password_hash", hash).Error; err != nil { log.Fatalf("重置密码失败: %v", err) } log.Println("[OK] 管理员密码已重置") }