134 lines
3.5 KiB
Go
134 lines
3.5 KiB
Go
package routes
|
|
|
|
import (
|
|
"tyapi-server/internal/domains/user/handlers"
|
|
"tyapi-server/internal/shared/middleware"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// UserRoutes 用户路由注册器
|
|
type UserRoutes struct {
|
|
handler *handlers.UserHandler
|
|
jwtAuth *middleware.JWTAuthMiddleware
|
|
optionalAuth *middleware.OptionalAuthMiddleware
|
|
}
|
|
|
|
// NewUserRoutes 创建用户路由注册器
|
|
func NewUserRoutes(
|
|
handler *handlers.UserHandler,
|
|
jwtAuth *middleware.JWTAuthMiddleware,
|
|
optionalAuth *middleware.OptionalAuthMiddleware,
|
|
) *UserRoutes {
|
|
return &UserRoutes{
|
|
handler: handler,
|
|
jwtAuth: jwtAuth,
|
|
optionalAuth: optionalAuth,
|
|
}
|
|
}
|
|
|
|
// RegisterRoutes 注册用户路由
|
|
func (r *UserRoutes) RegisterRoutes(router *gin.Engine) {
|
|
// API版本组
|
|
v1 := router.Group("/api/v1")
|
|
|
|
// 公开路由(不需要认证)
|
|
public := v1.Group("/auth")
|
|
{
|
|
public.POST("/login", r.handler.Login)
|
|
public.POST("/register", r.handler.Create)
|
|
}
|
|
|
|
// 需要认证的路由
|
|
protected := v1.Group("/users")
|
|
protected.Use(r.jwtAuth.Handle())
|
|
{
|
|
// 用户管理(管理员)
|
|
protected.GET("", r.handler.List)
|
|
protected.POST("", r.handler.Create)
|
|
protected.GET("/:id", r.handler.GetByID)
|
|
protected.PUT("/:id", r.handler.Update)
|
|
protected.DELETE("/:id", r.handler.Delete)
|
|
|
|
// 用户搜索
|
|
protected.GET("/search", r.handler.Search)
|
|
|
|
// 用户统计
|
|
protected.GET("/stats", r.handler.GetStats)
|
|
}
|
|
|
|
// 用户个人操作路由
|
|
profile := v1.Group("/profile")
|
|
profile.Use(r.jwtAuth.Handle())
|
|
{
|
|
profile.GET("", r.handler.GetProfile)
|
|
profile.PUT("", r.handler.UpdateProfile)
|
|
profile.POST("/change-password", r.handler.ChangePassword)
|
|
profile.POST("/logout", r.handler.Logout)
|
|
}
|
|
}
|
|
|
|
// RegisterPublicRoutes 注册公开路由
|
|
func (r *UserRoutes) RegisterPublicRoutes(router *gin.Engine) {
|
|
v1 := router.Group("/api/v1")
|
|
|
|
// 公开的用户相关路由
|
|
public := v1.Group("/public")
|
|
{
|
|
// 可选认证的路由(用户可能登录也可能未登录)
|
|
public.Use(r.optionalAuth.Handle())
|
|
|
|
// 这里可以添加一些公开的用户信息查询接口
|
|
// 比如根据用户名查看公开信息(如果用户设置为公开)
|
|
}
|
|
}
|
|
|
|
// RegisterAdminRoutes 注册管理员路由
|
|
func (r *UserRoutes) RegisterAdminRoutes(router *gin.Engine) {
|
|
admin := router.Group("/admin/v1")
|
|
admin.Use(r.jwtAuth.Handle())
|
|
// 这里可以添加管理员权限检查中间件
|
|
|
|
// 管理员用户管理
|
|
users := admin.Group("/users")
|
|
{
|
|
users.GET("", r.handler.List)
|
|
users.GET("/:id", r.handler.GetByID)
|
|
users.PUT("/:id", r.handler.Update)
|
|
users.DELETE("/:id", r.handler.Delete)
|
|
users.GET("/stats", r.handler.GetStats)
|
|
users.GET("/search", r.handler.Search)
|
|
|
|
// 批量操作
|
|
users.POST("/batch-delete", r.handleBatchDelete)
|
|
users.POST("/batch-update", r.handleBatchUpdate)
|
|
}
|
|
}
|
|
|
|
// 批量删除处理器
|
|
func (r *UserRoutes) handleBatchDelete(c *gin.Context) {
|
|
// 实现批量删除逻辑
|
|
// 这里可以接收用户ID列表并调用服务进行批量删除
|
|
c.JSON(200, gin.H{"message": "Batch delete not implemented yet"})
|
|
}
|
|
|
|
// 批量更新处理器
|
|
func (r *UserRoutes) handleBatchUpdate(c *gin.Context) {
|
|
// 实现批量更新逻辑
|
|
c.JSON(200, gin.H{"message": "Batch update not implemented yet"})
|
|
}
|
|
|
|
// RegisterHealthRoutes 注册健康检查路由
|
|
func (r *UserRoutes) RegisterHealthRoutes(router *gin.Engine) {
|
|
health := router.Group("/health")
|
|
{
|
|
health.GET("/users", func(c *gin.Context) {
|
|
// 用户服务健康检查
|
|
c.JSON(200, gin.H{
|
|
"service": "users",
|
|
"status": "healthy",
|
|
})
|
|
})
|
|
}
|
|
}
|