fix
This commit is contained in:
131
backend-old/internal/api/routes/routes.go
Normal file
131
backend-old/internal/api/routes/routes.go
Normal file
@ -0,0 +1,131 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"photography-backend/internal/api/handlers"
|
||||
"photography-backend/internal/api/middleware"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type Handlers struct {
|
||||
AuthHandler *handlers.AuthHandler
|
||||
UserHandler *handlers.UserHandler
|
||||
PhotoHandler *handlers.PhotoHandler
|
||||
CategoryHandler *handlers.CategoryHandler
|
||||
TagHandler *handlers.TagHandler
|
||||
}
|
||||
|
||||
func SetupRoutes(r *gin.Engine, h *Handlers, authMiddleware *middleware.AuthMiddleware, logger *zap.Logger) {
|
||||
// 健康检查
|
||||
r.GET("/health", func(c *gin.Context) {
|
||||
c.JSON(200, gin.H{"status": "ok"})
|
||||
})
|
||||
|
||||
// API 路由组
|
||||
api := r.Group("/api")
|
||||
{
|
||||
// 公开路由
|
||||
public := api.Group("")
|
||||
{
|
||||
// 认证相关
|
||||
auth := public.Group("/auth")
|
||||
{
|
||||
auth.POST("/login", h.AuthHandler.Login)
|
||||
auth.POST("/refresh", h.AuthHandler.RefreshToken)
|
||||
}
|
||||
}
|
||||
|
||||
// 需要认证的路由
|
||||
protected := api.Group("")
|
||||
protected.Use(authMiddleware.RequireAuth())
|
||||
{
|
||||
// 当前用户信息
|
||||
protected.GET("/me", h.UserHandler.GetCurrentUser)
|
||||
protected.PUT("/me", h.UserHandler.UpdateCurrentUser)
|
||||
protected.POST("/auth/logout", h.AuthHandler.Logout)
|
||||
|
||||
// 照片管理
|
||||
photos := protected.Group("/photos")
|
||||
{
|
||||
photos.GET("", h.PhotoHandler.GetPhotos)
|
||||
photos.POST("", h.PhotoHandler.CreatePhoto)
|
||||
photos.GET("/stats", h.PhotoHandler.GetPhotoStats)
|
||||
photos.POST("/upload", h.PhotoHandler.UploadPhoto)
|
||||
photos.POST("/batch/update", h.PhotoHandler.BatchUpdatePhotos)
|
||||
photos.POST("/batch/delete", h.PhotoHandler.BatchDeletePhotos)
|
||||
photos.GET("/:id", h.PhotoHandler.GetPhoto)
|
||||
photos.PUT("/:id", h.PhotoHandler.UpdatePhoto)
|
||||
photos.DELETE("/:id", h.PhotoHandler.DeletePhoto)
|
||||
}
|
||||
|
||||
// 分类管理
|
||||
categories := protected.Group("/categories")
|
||||
{
|
||||
categories.GET("", h.CategoryHandler.GetCategories)
|
||||
categories.POST("", h.CategoryHandler.CreateCategory)
|
||||
categories.GET("/tree", h.CategoryHandler.GetCategoryTree)
|
||||
categories.GET("/stats", h.CategoryHandler.GetCategoryStats)
|
||||
categories.POST("/reorder", h.CategoryHandler.ReorderCategories)
|
||||
categories.POST("/generate-slug", h.CategoryHandler.GenerateSlug)
|
||||
categories.GET("/:id", h.CategoryHandler.GetCategory)
|
||||
categories.PUT("/:id", h.CategoryHandler.UpdateCategory)
|
||||
categories.DELETE("/:id", h.CategoryHandler.DeleteCategory)
|
||||
categories.GET("/slug/:slug", h.CategoryHandler.GetCategoryBySlug)
|
||||
}
|
||||
|
||||
// 标签管理
|
||||
tags := protected.Group("/tags")
|
||||
{
|
||||
tags.GET("", h.TagHandler.GetTags)
|
||||
tags.POST("", h.TagHandler.CreateTag)
|
||||
tags.GET("/all", h.TagHandler.GetAllTags)
|
||||
tags.GET("/popular", h.TagHandler.GetPopularTags)
|
||||
tags.GET("/cloud", h.TagHandler.GetTagCloud)
|
||||
tags.GET("/stats", h.TagHandler.GetTagStats)
|
||||
tags.GET("/search", h.TagHandler.SearchTags)
|
||||
tags.POST("/batch/delete", h.TagHandler.BatchDeleteTags)
|
||||
tags.POST("/generate-slug", h.TagHandler.GenerateSlug)
|
||||
tags.GET("/:id", h.TagHandler.GetTag)
|
||||
tags.PUT("/:id", h.TagHandler.UpdateTag)
|
||||
tags.DELETE("/:id", h.TagHandler.DeleteTag)
|
||||
tags.GET("/slug/:slug", h.TagHandler.GetTagBySlug)
|
||||
}
|
||||
|
||||
// 用户管理 (需要管理员权限)
|
||||
admin := protected.Group("/admin")
|
||||
admin.Use(authMiddleware.RequireRole("admin"))
|
||||
{
|
||||
users := admin.Group("/users")
|
||||
{
|
||||
users.GET("", h.UserHandler.GetUsers)
|
||||
users.POST("", h.UserHandler.CreateUser)
|
||||
users.GET("/:id", h.UserHandler.GetUser)
|
||||
users.PUT("/:id", h.UserHandler.UpdateUser)
|
||||
users.DELETE("/:id", h.UserHandler.DeleteUser)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 前端公共 API (无需认证)
|
||||
frontend := api.Group("/public")
|
||||
{
|
||||
// 公开的照片接口
|
||||
frontend.GET("/photos", h.PhotoHandler.GetPhotos)
|
||||
frontend.GET("/photos/:id", h.PhotoHandler.GetPhoto)
|
||||
|
||||
// 公开的分类接口
|
||||
frontend.GET("/categories", h.CategoryHandler.GetCategories)
|
||||
frontend.GET("/categories/tree", h.CategoryHandler.GetCategoryTree)
|
||||
frontend.GET("/categories/:id", h.CategoryHandler.GetCategory)
|
||||
frontend.GET("/categories/slug/:slug", h.CategoryHandler.GetCategoryBySlug)
|
||||
|
||||
// 公开的标签接口
|
||||
frontend.GET("/tags", h.TagHandler.GetTags)
|
||||
frontend.GET("/tags/popular", h.TagHandler.GetPopularTags)
|
||||
frontend.GET("/tags/cloud", h.TagHandler.GetTagCloud)
|
||||
frontend.GET("/tags/:id", h.TagHandler.GetTag)
|
||||
frontend.GET("/tags/slug/:slug", h.TagHandler.GetTagBySlug)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user