Files
photography/backend/internal/api/routes/routes.go
xujiang c57ec3aa82 feat: 实现后端和管理后台基础架构
## 后端架构 (Go + Gin + GORM)
-  完整的分层架构 (API/Service/Repository)
-  PostgreSQL数据库设计和迁移脚本
-  JWT认证系统和权限控制
-  用户、照片、分类、标签等核心模型
-  中间件系统 (认证、CORS、日志)
-  配置管理和环境变量支持
-  结构化日志和错误处理
-  Makefile构建和部署脚本

## 管理后台架构 (React + TypeScript)
-  Vite + React 18 + TypeScript现代化架构
-  路由系统和状态管理 (Zustand + TanStack Query)
-  基于Radix UI的组件库基础
-  认证流程和权限控制
-  响应式设计和主题系统

## 数据库设计
-  用户表 (角色权限、认证信息)
-  照片表 (元数据、EXIF、状态管理)
-  分类表 (层级结构、封面图片)
-  标签表 (使用统计、标签云)
-  关联表 (照片-标签多对多)

## 技术特点
- 🚀 高性能: Gin框架 + GORM ORM
- 🔐 安全: JWT认证 + 密码加密 + 权限控制
- 📊 监控: 结构化日志 + 健康检查
- 🎨 现代化: React 18 + TypeScript + Vite
- 📱 响应式: Tailwind CSS + Radix UI

参考文档: docs/development/saved-docs/
2025-07-09 14:56:22 +08:00

44 lines
1.1 KiB
Go

package routes
import (
"github.com/gin-gonic/gin"
"photography-backend/internal/api/handlers"
"photography-backend/internal/api/middleware"
)
// Handlers 处理器集合
type Handlers struct {
Auth *handlers.AuthHandler
}
// SetupRoutes 设置路由
func SetupRoutes(r *gin.Engine, handlers *Handlers, authMiddleware *middleware.AuthMiddleware) {
// API v1路由组
v1 := r.Group("/api/v1")
// 公开路由
public := v1.Group("/auth")
{
public.POST("/login", handlers.Auth.Login)
public.POST("/register", handlers.Auth.Register)
public.POST("/refresh", handlers.Auth.RefreshToken)
}
// 需要认证的路由
protected := v1.Group("/")
protected.Use(authMiddleware.RequireAuth())
{
// 用户资料
protected.GET("/auth/profile", handlers.Auth.GetProfile)
protected.PUT("/auth/password", handlers.Auth.UpdatePassword)
protected.POST("/auth/logout", handlers.Auth.Logout)
}
// 管理员路由
admin := v1.Group("/admin")
admin.Use(authMiddleware.RequireAuth())
admin.Use(authMiddleware.RequireAdmin())
{
// 将在后续添加管理员相关路由
}
}