package main import ( "log" "github.com/gin-gonic/gin" "kefu-sys/server/internal/config" "kefu-sys/server/internal/handler" "kefu-sys/server/internal/middleware" "kefu-sys/server/internal/model" "kefu-sys/server/internal/ws" ) func main() { cfg := config.Load() // 初始化数据库 model.InitDB(cfg.Database.DSN()) // 初始化 JWT middleware.InitJWT(cfg.JWT.Secret) // 启动 WebSocket Hub go ws.DefaultHub.Run() // 设置 Gin 模式 gin.SetMode(cfg.Server.Mode) r := gin.Default() // CORS r.Use(func(c *gin.Context) { c.Header("Access-Control-Allow-Origin", "*") c.Header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS") c.Header("Access-Control-Allow-Headers", "Content-Type,Authorization") if c.Request.Method == "OPTIONS" { c.AbortWithStatus(204) return } c.Next() }) // 健康检查 r.GET("/health", func(c *gin.Context) { c.JSON(200, gin.H{"status": "ok"}) }) // 注册路由 handler.SetupRoutes(r) log.Printf("客服云服务启动在 :%s", cfg.Server.Port) if err := r.Run(":" + cfg.Server.Port); err != nil { log.Fatalf("启动失败: %v", err) } }