v1.0.0
This commit is contained in:
@@ -26,6 +26,8 @@ import (
|
||||
certification_repo "tyapi-server/internal/infrastructure/database/repositories/certification"
|
||||
finance_repo "tyapi-server/internal/infrastructure/database/repositories/finance"
|
||||
product_repo "tyapi-server/internal/infrastructure/database/repositories/product"
|
||||
infra_events "tyapi-server/internal/infrastructure/events"
|
||||
"tyapi-server/internal/infrastructure/external/email"
|
||||
"tyapi-server/internal/infrastructure/external/ocr"
|
||||
"tyapi-server/internal/infrastructure/external/sms"
|
||||
"tyapi-server/internal/infrastructure/external/storage"
|
||||
@@ -114,22 +116,24 @@ func NewContainer() *Container {
|
||||
}
|
||||
},
|
||||
// 提供普通的*zap.Logger(用于大多数场景)
|
||||
func(log logger.Logger) *zap.Logger {
|
||||
// 尝试转换为ZapLogger
|
||||
if zapLogger, ok := log.(*logger.ZapLogger); ok {
|
||||
return zapLogger.GetZapLogger()
|
||||
}
|
||||
// 尝试转换为LevelLogger
|
||||
if levelLogger, ok := log.(*logger.LevelLogger); ok {
|
||||
// 获取Info级别的日志器作为默认
|
||||
if infoLogger := levelLogger.GetLevelLogger(zapcore.InfoLevel); infoLogger != nil {
|
||||
return infoLogger
|
||||
fx.Annotate(
|
||||
func(log logger.Logger) *zap.Logger {
|
||||
// 尝试转换为ZapLogger
|
||||
if zapLogger, ok := log.(*logger.ZapLogger); ok {
|
||||
return zapLogger.GetZapLogger()
|
||||
}
|
||||
}
|
||||
// 如果类型转换失败,创建一个默认的zap logger
|
||||
defaultLogger, _ := zap.NewProduction()
|
||||
return defaultLogger
|
||||
},
|
||||
// 尝试转换为LevelLogger
|
||||
if levelLogger, ok := log.(*logger.LevelLogger); ok {
|
||||
// 获取Info级别的日志器作为默认
|
||||
if infoLogger := levelLogger.GetLevelLogger(zapcore.InfoLevel); infoLogger != nil {
|
||||
return infoLogger
|
||||
}
|
||||
}
|
||||
// 如果类型转换失败,创建一个默认的zap logger
|
||||
defaultLogger, _ := zap.NewProduction()
|
||||
return defaultLogger
|
||||
},
|
||||
),
|
||||
|
||||
// 数据库连接
|
||||
func(cfg *config.Config, cacheService interfaces.CacheService, logger *zap.Logger) (*gorm.DB, error) {
|
||||
@@ -178,8 +182,10 @@ func NewContainer() *Container {
|
||||
func() int {
|
||||
return 5 // 默认5个工作协程
|
||||
},
|
||||
events.NewMemoryEventBus,
|
||||
fx.Annotate(events.NewMemoryEventBus, fx.As(new(interfaces.EventBus))),
|
||||
fx.Annotate(
|
||||
events.NewMemoryEventBus,
|
||||
fx.As(new(interfaces.EventBus)),
|
||||
),
|
||||
// 健康检查
|
||||
health.NewHealthChecker,
|
||||
// 提供 config.SMSConfig
|
||||
@@ -196,6 +202,12 @@ func NewContainer() *Container {
|
||||
},
|
||||
// 短信服务
|
||||
sms.NewAliSMSService,
|
||||
// 邮件服务
|
||||
fx.Annotate(
|
||||
func(cfg *config.Config, logger *zap.Logger) *email.QQEmailService {
|
||||
return email.NewQQEmailService(cfg.Email, logger)
|
||||
},
|
||||
),
|
||||
// 存储服务
|
||||
fx.Annotate(
|
||||
func(cfg *config.Config, logger *zap.Logger) *storage.QiNiuStorageService {
|
||||
@@ -421,6 +433,16 @@ func NewContainer() *Container {
|
||||
finance_repo.NewGormAlipayOrderRepository,
|
||||
fx.As(new(domain_finance_repo.AlipayOrderRepository)),
|
||||
),
|
||||
// 发票申请仓储
|
||||
fx.Annotate(
|
||||
finance_repo.NewGormInvoiceApplicationRepository,
|
||||
fx.As(new(domain_finance_repo.InvoiceApplicationRepository)),
|
||||
),
|
||||
// 用户开票信息仓储
|
||||
fx.Annotate(
|
||||
finance_repo.NewGormUserInvoiceInfoRepository,
|
||||
fx.As(new(domain_finance_repo.UserInvoiceInfoRepository)),
|
||||
),
|
||||
),
|
||||
|
||||
// 仓储层 - 产品域
|
||||
@@ -465,7 +487,9 @@ func NewContainer() *Container {
|
||||
|
||||
// 领域服务
|
||||
fx.Provide(
|
||||
user_service.NewUserAggregateService,
|
||||
fx.Annotate(
|
||||
user_service.NewUserAggregateService,
|
||||
),
|
||||
user_service.NewUserAuthService,
|
||||
user_service.NewSMSCodeService,
|
||||
user_service.NewContractAggregateService,
|
||||
@@ -475,6 +499,43 @@ func NewContainer() *Container {
|
||||
product_service.NewProductDocumentationService,
|
||||
finance_service.NewWalletAggregateService,
|
||||
finance_service.NewRechargeRecordService,
|
||||
// 发票领域服务
|
||||
fx.Annotate(
|
||||
finance_service.NewInvoiceDomainService,
|
||||
),
|
||||
// 用户开票信息服务
|
||||
fx.Annotate(
|
||||
finance_service.NewUserInvoiceInfoService,
|
||||
),
|
||||
// 发票事件发布器 - 绑定到接口
|
||||
fx.Annotate(
|
||||
func(logger *zap.Logger, eventBus interfaces.EventBus) finance_service.EventPublisher {
|
||||
return infra_events.NewInvoiceEventPublisher(logger, eventBus)
|
||||
},
|
||||
fx.As(new(finance_service.EventPublisher)),
|
||||
),
|
||||
// 发票聚合服务 - 需要用户开票信息仓储
|
||||
fx.Annotate(
|
||||
func(
|
||||
applicationRepo domain_finance_repo.InvoiceApplicationRepository,
|
||||
userInvoiceInfoRepo domain_finance_repo.UserInvoiceInfoRepository,
|
||||
domainService finance_service.InvoiceDomainService,
|
||||
qiniuStorageService *storage.QiNiuStorageService,
|
||||
logger *zap.Logger,
|
||||
eventPublisher finance_service.EventPublisher,
|
||||
) finance_service.InvoiceAggregateService {
|
||||
return finance_service.NewInvoiceAggregateService(
|
||||
applicationRepo,
|
||||
userInvoiceInfoRepo,
|
||||
domainService,
|
||||
qiniuStorageService,
|
||||
logger,
|
||||
eventPublisher,
|
||||
)
|
||||
},
|
||||
),
|
||||
// 发票事件处理器
|
||||
infra_events.NewInvoiceEventHandler,
|
||||
certification_service.NewCertificationAggregateService,
|
||||
certification_service.NewEnterpriseInfoSubmitRecordService,
|
||||
),
|
||||
@@ -508,6 +569,16 @@ func NewContainer() *Container {
|
||||
finance.NewFinanceApplicationService,
|
||||
fx.As(new(finance.FinanceApplicationService)),
|
||||
),
|
||||
// 发票应用服务 - 绑定到接口
|
||||
fx.Annotate(
|
||||
finance.NewInvoiceApplicationService,
|
||||
fx.As(new(finance.InvoiceApplicationService)),
|
||||
),
|
||||
// 管理员发票应用服务 - 绑定到接口
|
||||
fx.Annotate(
|
||||
finance.NewAdminInvoiceApplicationService,
|
||||
fx.As(new(finance.AdminInvoiceApplicationService)),
|
||||
),
|
||||
// 产品应用服务 - 绑定到接口
|
||||
fx.Annotate(
|
||||
product.NewProductApplicationService,
|
||||
@@ -571,6 +642,7 @@ func NewContainer() *Container {
|
||||
RegisterLifecycleHooks,
|
||||
RegisterMiddlewares,
|
||||
RegisterRoutes,
|
||||
RegisterEventHandlers,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -761,3 +833,34 @@ func NewRedisCache(client *redis.Client, logger *zap.Logger, cfg *config.Config)
|
||||
func NewTracedRedisCache(client *redis.Client, tracer *tracing.Tracer, logger *zap.Logger, cfg *config.Config) interfaces.CacheService {
|
||||
return tracing.NewTracedRedisCache(client, tracer, logger, "app")
|
||||
}
|
||||
|
||||
// RegisterEventHandlers 注册事件处理器
|
||||
func RegisterEventHandlers(
|
||||
eventBus interfaces.EventBus,
|
||||
invoiceEventHandler *infra_events.InvoiceEventHandler,
|
||||
logger *zap.Logger,
|
||||
) {
|
||||
// 启动事件总线
|
||||
if err := eventBus.Start(context.Background()); err != nil {
|
||||
logger.Error("启动事件总线失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// 注册发票事件处理器
|
||||
for _, eventType := range invoiceEventHandler.GetEventTypes() {
|
||||
if err := eventBus.Subscribe(eventType, invoiceEventHandler); err != nil {
|
||||
logger.Error("注册发票事件处理器失败",
|
||||
zap.String("event_type", eventType),
|
||||
zap.String("handler", invoiceEventHandler.GetName()),
|
||||
zap.Error(err),
|
||||
)
|
||||
} else {
|
||||
logger.Info("发票事件处理器注册成功",
|
||||
zap.String("event_type", eventType),
|
||||
zap.String("handler", invoiceEventHandler.GetName()),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
logger.Info("所有事件处理器已注册")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user