package handler import ( "github.com/gin-gonic/gin" "kefu-sys/server/internal/middleware" ) func SetupRoutes(r *gin.Engine) { auth := NewAuthHandler() session := NewSessionHandler() customer := NewCustomerHandler() knowledge := NewKnowledgeHandler() stats := NewStatisticsHandler() admin := NewAdminHandler() ws := NewWsHandler() api := r.Group("/api") // 公开接口 api.POST("/login", auth.Login) api.POST("/register", auth.Register) // widget 接口(通过 channel_id 鉴权,简化处理) widget := api.Group("/widget") widget.POST("/init", func(c *gin.Context) { c.JSON(200, gin.H{"code": 0, "data": gin.H{"session_id": 1}}) }) widget.POST("/message", func(c *gin.Context) { c.JSON(200, gin.H{"code": 0}) }) // 需要认证的接口 authRequired := api.Group("") authRequired.Use(middleware.AuthRequired()) { // WebSocket authRequired.GET("/ws", ws.Connect) // 会话管理 sessions := authRequired.Group("/sessions") sessions.GET("", session.List) sessions.GET("/:id", session.Get) sessions.POST("", session.Create) sessions.POST("/:id/assign", session.Assign) sessions.POST("/:id/transfer", session.Transfer) sessions.POST("/:id/end", session.End) sessions.PUT("/:id/priority", session.UpdatePriority) // 客户管理 customers := authRequired.Group("/customers") customers.GET("", customer.List) customers.GET("/:id", customer.Get) customers.POST("", customer.Create) customers.PUT("/:id", customer.Update) customers.DELETE("/:id", customer.Delete) // 知识库 kb := authRequired.Group("/knowledge") kb.GET("/categories", knowledge.ListCategories) kb.POST("/categories", knowledge.CreateCategory) kb.GET("/entries", knowledge.ListEntries) kb.POST("/entries", knowledge.CreateEntry) kb.PUT("/entries/:id", knowledge.UpdateEntry) kb.DELETE("/entries/:id", knowledge.DeleteEntry) // 统计 statistics := authRequired.Group("/statistics") statistics.GET("/kpi", stats.KPIs) statistics.GET("/trend", stats.SessionTrend) statistics.GET("/performance", stats.AgentPerformance) statistics.GET("/channels", stats.ChannelDistribution) // 管理端接口(需要管理员权限) adminGroup := authRequired.Group("/admin") adminGroup.Use(middleware.PlatformRequired()) { adminGroup.GET("/stats", admin.Stats) adminGroup.GET("/tenants", admin.ListTenants) adminGroup.GET("/tenants/:id", admin.GetTenant) adminGroup.POST("/tenants", admin.CreateTenant) adminGroup.PUT("/tenants/:id", admin.UpdateTenant) adminGroup.POST("/tenants/:id/suspend", admin.SuspendTenant) adminGroup.POST("/tenants/:id/resume", admin.ResumeTenant) adminGroup.GET("/plans", admin.ListPlans) adminGroup.POST("/plans", admin.CreatePlan) adminGroup.PUT("/plans/:id", admin.UpdatePlan) adminGroup.GET("/logs", admin.ListLogs) adminGroup.GET("/announcements", admin.ListAnnouncements) adminGroup.POST("/announcements", admin.CreateAnnouncement) adminGroup.PUT("/announcements/:id", admin.UpdateAnnouncement) adminGroup.DELETE("/announcements/:id", admin.DeleteAnnouncement) } } }