package routes import ( "tyapi-server/internal/infrastructure/http/handlers" sharedhttp "tyapi-server/internal/shared/http" "tyapi-server/internal/shared/middleware" "go.uber.org/zap" ) // UserRoutes 用户路由注册器 type UserRoutes struct { handler *handlers.UserHandler authMiddleware *middleware.JWTAuthMiddleware adminAuthMiddleware *middleware.AdminAuthMiddleware logger *zap.Logger } // NewUserRoutes 创建用户路由注册器 func NewUserRoutes( handler *handlers.UserHandler, authMiddleware *middleware.JWTAuthMiddleware, adminAuthMiddleware *middleware.AdminAuthMiddleware, logger *zap.Logger, ) *UserRoutes { return &UserRoutes{ handler: handler, authMiddleware: authMiddleware, adminAuthMiddleware: adminAuthMiddleware, logger: logger, } } // Register 注册用户相关路由 func (r *UserRoutes) Register(router *sharedhttp.GinRouter) { // 用户域路由组 engine := router.GetEngine() usersGroup := engine.Group("/api/v1/users") { // 公开路由(不需要认证) usersGroup.POST("/send-code", r.handler.SendCode) // 发送验证码 usersGroup.POST("/register", r.handler.Register) // 用户注册 usersGroup.POST("/login-password", r.handler.LoginWithPassword) // 密码登录 usersGroup.POST("/login-sms", r.handler.LoginWithSMS) // 短信验证码登录 usersGroup.POST("/reset-password", r.handler.ResetPassword) // 重置密码 // 需要认证的路由 authenticated := usersGroup.Group("") authenticated.Use(r.authMiddleware.Handle()) { authenticated.GET("/me", r.handler.GetProfile) // 获取当前用户信息 authenticated.PUT("/me/password", r.handler.ChangePassword) // 修改密码 } // 管理员路由 adminGroup := usersGroup.Group("/admin") adminGroup.Use(r.adminAuthMiddleware.Handle()) { adminGroup.GET("/list", r.handler.ListUsers) // 管理员查看用户列表 adminGroup.GET("/stats", r.handler.GetUserStats) // 管理员获取用户统计信息 } } r.logger.Info("用户路由注册完成") }