Files
EchoChat/backend/go-service/router/router.go
bujinyuan 4d03215fe4 feat: Phase 1 完成 — 基础设施 + 用户认证 + 管理端 + 端到端验证
Phase 1 (基础设施与用户认证) 全部 11 个 Task 开发完成:

后端 (Go):
- Auth 模块: 注册/登录/JWT(有状态)/Profile/密码修改
- Admin 模块: 用户列表/详情/禁用/启用/角色分配/创建用户
- 中间件: JWT认证 + RBAC角色权限 + 请求日志 + CORS + Panic恢复
- Dockerfile 多阶段构建 + Docker Compose 全栈部署

前台 (uni-app):
- 登录/注册页面 + 自定义 TabBar + 个人中心
- 请求封装 + 状态管理 (Pinia)

管理端 (Vue 3 + Element Plus):
- 登录/仪表盘/用户列表/用户详情
- Axios 封装 + 路由守卫 + Pinia 状态管理

验证:
- 全流程 API 端到端测试通过
- Playwright 页面自动化验证通过
- code-reviewer 代码审查通过

Made-with: Cursor
2026-03-02 11:31:24 +08:00

41 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package router 主路由汇总入口
// 不含任何具体路由定义,仅调用各模块的 RegisterRoutes 函数
// 新增模块时在 Setup 函数中添加一行调用即可
package router
import (
"time"
"github.com/echochat/backend/app/admin"
"github.com/echochat/backend/app/auth"
"github.com/echochat/backend/app/provider"
"github.com/echochat/backend/pkg/middleware"
"github.com/echochat/backend/pkg/utils"
"github.com/gin-gonic/gin"
)
// Setup 注册所有路由
// 包含健康检查和各业务模块的路由注册
func Setup(engine *gin.Engine, app *provider.App) {
// 健康检查(不经过业务中间件)
engine.GET("/health", func(c *gin.Context) {
utils.ResponseOK(c, gin.H{
"status": "ok",
"service": "echochat",
"time": time.Now().Format("2006-01-02 15:04:05"),
})
})
// JWT 认证中间件实例(有状态 JWT通过 AuthService 校验 Redis
jwtAuth := middleware.JWTAuth(&app.Config.JWT, app.AuthService)
// --- 各模块路由注册 ---
auth.RegisterRoutes(engine, app.AuthController, app.AdminAuthController, jwtAuth)
admin.RegisterRoutes(engine, app.UserManageController, jwtAuth)
// [未来] im.RegisterRoutes(engine, app.ImController, jwtAuth)
// [未来] meeting.RegisterRoutes(engine, app.MeetingController, jwtAuth)
// [未来] contact.RegisterRoutes(engine, app.ContactController, jwtAuth)
// [未来] notify.RegisterRoutes(engine, app.NotifyController, jwtAuth)
}