搭建Go后端框架:数据模型、JWT鉴权、租户隔离、WebSocket、REST API路由
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user