85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
package api
|
|
|
|
import (
|
|
"home-vue-go/internal/config"
|
|
"home-vue-go/internal/database"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func SetupRoutes(r *gin.Engine, db *database.Database, cfg *config.Config) {
|
|
// 初始化日志缓冲区
|
|
InitLogBuffer()
|
|
|
|
// 添加日志中间件
|
|
r.Use(LoggingMiddleware())
|
|
|
|
api := r.Group("/api")
|
|
{
|
|
// 公开API - 获取数据
|
|
api.GET("/sites", GetSites(db))
|
|
api.GET("/contacts", GetContacts(db))
|
|
api.GET("/config", GetSiteConfig(db))
|
|
api.GET("/frontend-config", GetFrontendConfig(db))
|
|
api.GET("/rotating-texts", GetRotatingTexts(db))
|
|
|
|
// 访问统计API(公开,用于记录访问)
|
|
api.POST("/track-visit", TrackVisit(db))
|
|
|
|
// 认证API
|
|
auth := api.Group("/auth")
|
|
{
|
|
auth.POST("/login", Login(db, cfg))
|
|
}
|
|
|
|
// 受保护的管理API
|
|
admin := api.Group("/admin")
|
|
admin.Use(JWTAuthMiddleware(cfg.JWTSecret))
|
|
{
|
|
// 站点管理
|
|
admin.GET("/sites", GetSites(db))
|
|
admin.POST("/sites", CreateSite(db))
|
|
admin.PUT("/sites/reorder", ReorderSites(db))
|
|
admin.PUT("/sites/:id", UpdateSite(db))
|
|
admin.DELETE("/sites/:id", DeleteSite(db))
|
|
|
|
// 联系方式管理
|
|
admin.GET("/contacts", GetContacts(db))
|
|
admin.POST("/contacts", CreateContact(db))
|
|
admin.PUT("/contacts/reorder", ReorderContacts(db))
|
|
admin.PUT("/contacts/:id", UpdateContact(db))
|
|
admin.DELETE("/contacts/:id", DeleteContact(db))
|
|
|
|
// 站点配置管理
|
|
admin.GET("/config", GetAdminSiteConfig(db))
|
|
admin.PUT("/config", UpdateSiteConfig(db, cfg))
|
|
|
|
// 轮换文本配置
|
|
admin.GET("/rotating-texts", GetRotatingTexts(db))
|
|
admin.PUT("/rotating-texts", UpdateRotatingTexts(db))
|
|
|
|
// 文件上传
|
|
admin.POST("/upload", UploadFile(cfg))
|
|
|
|
// 统计API
|
|
admin.GET("/stats", GetStats(db, cfg))
|
|
admin.GET("/charts", GetChartData(db, cfg))
|
|
admin.GET("/recent-visits", GetRecentVisits(db))
|
|
admin.POST("/analytics/test", TestUmamiConnection(db, cfg))
|
|
admin.POST("/notify-update", NotifyConfigUpdate())
|
|
|
|
// 用户管理
|
|
admin.PUT("/change-password", ChangePassword(db))
|
|
|
|
// 日志API
|
|
admin.GET("/logs", GetBackendLogs(cfg))
|
|
|
|
// 登录历史API
|
|
admin.GET("/login-history", GetLoginHistory(db))
|
|
}
|
|
}
|
|
|
|
// 静态文件服务 - 提供上传的图片
|
|
r.Static("/uploads", cfg.UploadDir)
|
|
}
|