修复退款幂等与补偿重试
This commit is contained in:
@@ -11,11 +11,15 @@ import (
|
||||
"hfb_sys/backend/internal/config"
|
||||
"hfb_sys/backend/internal/database"
|
||||
"hfb_sys/backend/internal/jobs/ordertimeout"
|
||||
"hfb_sys/backend/internal/jobs/refundretry"
|
||||
"hfb_sys/backend/internal/logging"
|
||||
"hfb_sys/backend/internal/modules/adminauth"
|
||||
"hfb_sys/backend/internal/modules/payment"
|
||||
"hfb_sys/backend/internal/modules/paymentconfig"
|
||||
"hfb_sys/backend/internal/router"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// @title HFB Sys API
|
||||
@@ -84,6 +88,10 @@ func main() {
|
||||
defer stopJobs()
|
||||
if deps.DB != nil {
|
||||
ordertimeout.New(deps.DB, deps.Redis, logger).Start(jobCtx)
|
||||
if paymentConfigRepo := newPaymentConfigRepositoryForJobs(cfg, deps.DB, logger); paymentConfigRepo != nil {
|
||||
paymentRepo := payment.NewRepository(deps.DB, paymentConfigRepo, nil)
|
||||
refundretry.New(deps.DB, deps.Redis, logger, paymentRepo).Start(jobCtx)
|
||||
}
|
||||
}
|
||||
server := &http.Server{
|
||||
Addr: cfg.AppAddr,
|
||||
@@ -110,3 +118,21 @@ func main() {
|
||||
}
|
||||
logger.Info("api server stopped")
|
||||
}
|
||||
|
||||
func newPaymentConfigRepositoryForJobs(cfg config.Config, db *gorm.DB, logger *zap.Logger) *paymentconfig.Repository {
|
||||
encryptionKey := cfg.PaymentConfigEncryptionKey
|
||||
var encryptor paymentconfig.Encryptor
|
||||
if encryptionKey != "" {
|
||||
if aesEncryptor, err := paymentconfig.NewAESEncryptor(encryptionKey); err == nil {
|
||||
encryptor = aesEncryptor
|
||||
}
|
||||
}
|
||||
if encryptor == nil {
|
||||
if cfg.AppEnv == "production" {
|
||||
logger.Fatal("PAYMENT_CONFIG_ENCRYPTION_KEY not set or invalid")
|
||||
}
|
||||
encryptor = &paymentconfig.MockEncryptor{}
|
||||
logger.Warn("PAYMENT_CONFIG_ENCRYPTION_KEY not set or invalid, using MockEncryptor for jobs")
|
||||
}
|
||||
return paymentconfig.NewRepository(db, encryptor)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user