package main import ( "ai_xhs/config" "ai_xhs/database" "ai_xhs/middleware" "ai_xhs/router" "ai_xhs/service" "flag" "fmt" "log" "github.com/gin-gonic/gin" ) func main() { // 解析命令行参数 env := flag.String("env", "dev", "运行环境: dev, prod") flag.Parse() // 加载配置 if err := config.LoadConfig(*env); err != nil { log.Fatalf("配置加载失败: %v", err) } // 初始化数据库 if err := database.InitDB(); err != nil { log.Fatalf("数据库初始化失败: %v", err) } // 自动迁移数据库表 //if err := database.AutoMigrate(); err != nil { // log.Fatalf("数据库迁移失败: %v", err) //} // 初始化定时任务 if config.AppConfig.Scheduler.Enabled { scheduler := service.NewSchedulerService( config.AppConfig.Scheduler.MaxConcurrent, config.AppConfig.Scheduler.PublishTimeout, ) if err := scheduler.Start(config.AppConfig.Scheduler.PublishCron); err != nil { log.Fatalf("定时任务启动失败: %v", err) } log.Println("定时任务服务已启动") defer scheduler.Stop() } else { log.Println("定时任务服务已禁用") } // 设置运行模式 gin.SetMode(config.AppConfig.Server.Mode) // 创建路由 r := gin.New() // 添加中间件 r.Use(gin.Recovery()) // 崩溃恢复 r.Use(middleware.RequestLogger()) // API请求日志 // 设置路由 router.SetupRouter(r) // 启动服务 addr := fmt.Sprintf(":%d", config.AppConfig.Server.Port) log.Printf("服务启动在端口 %s, 环境: %s", addr, *env) if err := r.Run(addr); err != nil { log.Fatalf("服务启动失败: %v", err) } }