This commit is contained in:
Mrx
2026-03-20 13:24:45 +08:00
parent 3779a7d66d
commit 521bfeb4ef
15 changed files with 530 additions and 40 deletions

View File

@@ -67,6 +67,7 @@ import (
"tyapi-server/internal/shared/hooks"
sharedhttp "tyapi-server/internal/shared/http"
"tyapi-server/internal/shared/interfaces"
"tyapi-server/internal/shared/ipgeo"
"tyapi-server/internal/shared/logger"
"tyapi-server/internal/shared/metrics"
"tyapi-server/internal/shared/middleware"
@@ -239,19 +240,19 @@ func NewContainer() *Container {
},
// 短信服务
sms.NewAliSMSService,
// 验证码服务
fx.Annotate(
func(cfg *config.Config) *captcha.CaptchaService {
return captcha.NewCaptchaService(captcha.CaptchaConfig{
AccessKeyID: cfg.SMS.AccessKeyID,
AccessKeySecret: cfg.SMS.AccessKeySecret,
EndpointURL: cfg.SMS.CaptchaEndpoint,
SceneID: cfg.SMS.SceneID,
EncryptKey: cfg.SMS.CaptchaSecret, // 加密模式 ekeyBase64 编码的 32 字节)
})
},
fx.ResultTags(`name:"captchaService"`),
),
// 验证码服务
fx.Annotate(
func(cfg *config.Config) *captcha.CaptchaService {
return captcha.NewCaptchaService(captcha.CaptchaConfig{
AccessKeyID: cfg.SMS.AccessKeyID,
AccessKeySecret: cfg.SMS.AccessKeySecret,
EndpointURL: cfg.SMS.CaptchaEndpoint,
SceneID: cfg.SMS.SceneID,
EncryptKey: cfg.SMS.CaptchaSecret, // 加密模式 ekeyBase64 编码的 32 字节)
})
},
fx.ResultTags(`name:"captchaService"`),
),
// 邮件服务
fx.Annotate(
func(cfg *config.Config, logger *zap.Logger) *email.QQEmailService {
@@ -418,6 +419,7 @@ func NewContainer() *Container {
)
},
sharedhttp.NewGinRouter,
ipgeo.NewLocator,
),
// 中间件组件
@@ -428,7 +430,7 @@ func NewContainer() *Container {
middleware.NewCORSMiddleware,
middleware.NewRateLimitMiddleware,
// 每日限流中间件
func(cfg *config.Config, redis *redis.Client, response interfaces.ResponseBuilder, logger *zap.Logger) *middleware.DailyRateLimitMiddleware {
func(cfg *config.Config, redis *redis.Client, db *gorm.DB, response interfaces.ResponseBuilder, logger *zap.Logger) *middleware.DailyRateLimitMiddleware {
limitConfig := middleware.DailyRateLimitConfig{
MaxRequestsPerDay: cfg.DailyRateLimit.MaxRequestsPerDay,
MaxRequestsPerIP: cfg.DailyRateLimit.MaxRequestsPerIP,
@@ -452,7 +454,7 @@ func NewContainer() *Container {
// 排除域名配置
ExcludeDomains: cfg.DailyRateLimit.ExcludeDomains,
}
return middleware.NewDailyRateLimitMiddleware(cfg, redis, response, logger, limitConfig)
return middleware.NewDailyRateLimitMiddleware(cfg, redis, db, response, logger, limitConfig)
},
NewRequestLoggerMiddlewareWrapper,
middleware.NewJWTAuthMiddleware,
@@ -1244,6 +1246,8 @@ func NewContainer() *Container {
handlers.NewApiHandler,
// 统计HTTP处理器
handlers.NewStatisticsHandler,
// 管理员安全HTTP处理器
handlers.NewAdminSecurityHandler,
// 文章HTTP处理器
func(
appService article.ArticleApplicationService,
@@ -1335,6 +1339,8 @@ func NewContainer() *Container {
routes.NewApiRoutes,
// 统计路由
routes.NewStatisticsRoutes,
// 管理员安全路由
routes.NewAdminSecurityRoutes,
// PDFG路由
routes.NewPDFGRoutes,
// 企业报告页面路由
@@ -1453,6 +1459,7 @@ func RegisterRoutes(
announcementRoutes *routes.AnnouncementRoutes,
apiRoutes *routes.ApiRoutes,
statisticsRoutes *routes.StatisticsRoutes,
adminSecurityRoutes *routes.AdminSecurityRoutes,
pdfgRoutes *routes.PDFGRoutes,
qyglReportRoutes *routes.QYGLReportRoutes,
jwtAuth *middleware.JWTAuthMiddleware,
@@ -1479,6 +1486,7 @@ func RegisterRoutes(
articleRoutes.Register(router)
announcementRoutes.Register(router)
statisticsRoutes.Register(router)
adminSecurityRoutes.Register(router)
pdfgRoutes.Register(router)
qyglReportRoutes.Register(router)