package main import ( "github.com/gofiber/fiber/v2" "go.uber.org/zap" "github.com/break/junhong_cmp_fiber/internal/bootstrap" "github.com/break/junhong_cmp_fiber/internal/handler/admin" "github.com/break/junhong_cmp_fiber/internal/handler/h5" "github.com/break/junhong_cmp_fiber/internal/routes" "github.com/break/junhong_cmp_fiber/pkg/openapi" ) // generateOpenAPIDocs 生成 OpenAPI 文档 // outputPath: 文档输出路径 // logger: 日志记录器 // 生成失败时记录错误但不影响程序继续运行 func generateOpenAPIDocs(outputPath string, logger *zap.Logger) { // 1. 创建生成器 adminDoc := openapi.NewGenerator("君鸿卡管系统 API", "1.0.0") // 2. 创建临时 Fiber App 用于路由注册 app := fiber.New() // 3. 创建 Handler(使用 nil 依赖,因为只需要路由结构) handlers := &bootstrap.Handlers{ AdminAuth: admin.NewAuthHandler(nil, nil), H5Auth: h5.NewAuthHandler(nil, nil), Account: admin.NewAccountHandler(nil), Role: admin.NewRoleHandler(nil), Permission: admin.NewPermissionHandler(nil), Shop: admin.NewShopHandler(nil), ShopAccount: admin.NewShopAccountHandler(nil), ShopCommission: admin.NewShopCommissionHandler(nil), CommissionWithdrawal: admin.NewCommissionWithdrawalHandler(nil), CommissionWithdrawalSetting: admin.NewCommissionWithdrawalSettingHandler(nil), Enterprise: admin.NewEnterpriseHandler(nil), EnterpriseCard: admin.NewEnterpriseCardHandler(nil), CustomerAccount: admin.NewCustomerAccountHandler(nil), MyCommission: admin.NewMyCommissionHandler(nil), IotCard: admin.NewIotCardHandler(nil), IotCardImport: admin.NewIotCardImportHandler(nil), AssetAllocationRecord: admin.NewAssetAllocationRecordHandler(nil), Storage: admin.NewStorageHandler(nil), } // 4. 注册所有路由到文档生成器 routes.RegisterRoutesWithDoc(app, handlers, &bootstrap.Middlewares{}, adminDoc) // 6. 保存规范到指定路径 if err := adminDoc.Save(outputPath); err != nil { logger.Error("生成 OpenAPI 文档失败", zap.String("path", outputPath), zap.Error(err)) return } logger.Info("OpenAPI 文档生成成功", zap.String("path", outputPath)) }