// @title GoFaster API // @version 1.0 // @description GoFaster项目API文档 // @termsOfService http://swagger.io/terms/ // @contact.name API支持 // @contact.url http://www.gofaster.com/support // @contact.email support@gofaster.com // @license.name Apache 2.0 // @license.url http://www.apache.org/licenses/LICENSE-2.0.html // @host localhost:8080 // @BasePath /api // @schemes http package main import ( "gofaster/internal/auth/controller" authModel "gofaster/internal/auth/model" "gofaster/internal/auth/repository" "gofaster/internal/auth/service" "gofaster/internal/shared/config" "gofaster/internal/shared/middleware" baseModel "gofaster/internal/shared/model" "gofaster/internal/shared/pkg/database" "gofaster/internal/shared/pkg/logger" "gofaster/internal/shared/routes" // 添加routes导入 workflowModel "gofaster/internal/workflow/model" "github.com/gin-gonic/gin" ginSwagger "github.com/swaggo/gin-swagger" "go.uber.org/zap" "gorm.io/gorm" _ "gofaster/docs" // 确保这个路径是你的项目文档路径 swaggerFiles "github.com/swaggo/files" ) func main() { // 加载配置 cfg := config.LoadConfig() // 初始化日志 log := logger.NewLogger(cfg.Log.Level, cfg.Log.Path) defer log.Sync() // 初始化数据库 db, err := database.NewDB(&cfg.DB) if err != nil { log.Fatal("Failed to connect database", zap.Error(err)) } // 自动迁移 if err := autoMigrate(db); err != nil { log.Fatal("Failed to migrate database", zap.Error(err)) } // 初始化Redis redisClient := database.NewRedisClient(&cfg.Redis) defer redisClient.Close() // 确保程序退出时关闭Redis连接 // 初始化服务层 userRepo := repository.NewUserRepo(db) roleRepo := repository.NewRoleRepo(db) permissionRepo := repository.NewPermissionRepo(db) userService := service.NewUserService(userRepo) // 初始化控制器 userCtrl := controller.NewUserController(userService) // 添加系统初始化 initService := service.NewInitService(db, userRepo, roleRepo, permissionRepo) if err := initService.InitSystem(); err != nil { log.Fatal("Failed to initialize system", zap.Error(err)) } // 初始化Gin app := gin.New() // 中间件 app.Use(middleware.LoggerMiddleware(log, db)) app.Use(middleware.RecoveryMiddleware(log)) app.Use(middleware.CORSMiddleware()) // 路由 api := app.Group("/api") routes.RegisterUserRoutes(api, userCtrl) // 添加Swagger路由 app.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) // 认证路由 authApi := api.Group("") authApi.Use(middleware.AuthMiddleware(cfg.JWT.Secret)) { // 需要认证的路由 } // 启动服务器 log.Info("Starting server", zap.String("port", cfg.Server.Port)) if err := app.Run(":" + cfg.Server.Port); err != nil { log.Fatal("Failed to start server", zap.Error(err)) } } func autoMigrate(db *gorm.DB) error { return db.AutoMigrate( &authModel.User{}, &authModel.Role{}, &authModel.Permission{}, &baseModel.ActionLog{}, &workflowModel.Workflow{}, &workflowModel.WorkflowNode{}, &workflowModel.WorkflowInstance{}, &workflowModel.WorkflowTask{}, ) }