refactor: 重构后端架构为 go-zero 框架,优化项目结构

主要变更:
- 采用 go-zero 框架替代 Gin,提升开发效率
- 重构项目结构,API 文件模块化组织
- 将 model 移至 api/internal/model 目录
- 移除 common 包,改为标准 pkg 目录结构
- 实现统一的仓储模式,支持配置驱动数据库切换
- 简化测试策略,专注 API 集成测试
- 更新 CLAUDE.md 文档,提供详细的开发指导

技术栈更新:
- 框架: Gin → go-zero v1.6.0+
- 代码生成: 引入 goctl 工具
- 架构模式: 四层架构 → go-zero 三层架构 (Handler→Logic→Model)
- 项目布局: 遵循 Go 社区标准和 go-zero 最佳实践
This commit is contained in:
xujiang
2025-07-10 15:05:52 +08:00
parent a2f2f66f88
commit 39a42695d3
52 changed files with 6047 additions and 2349 deletions

View File

@ -14,6 +14,7 @@ import (
"go.uber.org/zap"
"photography-backend/internal/config"
"photography-backend/internal/database"
"photography-backend/internal/repository/postgres"
"photography-backend/internal/service"
"photography-backend/internal/service/auth"
@ -38,7 +39,7 @@ func main() {
defer zapLogger.Sync()
// 初始化数据库
db, err := postgres.NewDatabase(&cfg.Database)
db, err := database.New(cfg)
if err != nil {
zapLogger.Fatal("Failed to connect to database", zap.Error(err))
}
@ -49,11 +50,16 @@ func main() {
zapLogger.Fatal("Failed to migrate database", zap.Error(err))
}
// 填充种子数据
if err := db.Seed(); err != nil {
zapLogger.Warn("Failed to seed database", zap.Error(err))
}
// 初始化仓库
userRepo := postgres.NewUserRepository(db.DB)
photoRepo := postgres.NewPhotoRepository(db.DB)
categoryRepo := postgres.NewCategoryRepository(db.DB)
tagRepo := postgres.NewTagRepository(db.DB)
userRepo := postgres.NewUserRepository(db.GetDB())
photoRepo := postgres.NewPhotoRepository(db.GetDB())
categoryRepo := postgres.NewCategoryRepository(db.GetDB())
tagRepo := postgres.NewTagRepository(db.GetDB())
// 初始化服务
jwtService := auth.NewJWTService(&cfg.JWT)
@ -98,12 +104,12 @@ func main() {
// 设置路由
routes.SetupRoutes(r, &routes.Handlers{
Auth: authHandler,
Photo: photoHandler,
Category: categoryHandler,
Tag: tagHandler,
User: userHandler,
}, authMiddleware)
AuthHandler: authHandler,
PhotoHandler: photoHandler,
CategoryHandler: categoryHandler,
TagHandler: tagHandler,
UserHandler: userHandler,
}, authMiddleware, zapLogger)
// 创建HTTP服务器
server := &http.Server{