Files
ai_wht_wechat/go_backend/main.go

71 lines
1.6 KiB
Go
Raw Normal View History

2025-12-19 22:36:48 +08:00
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)
}
}