feat(sms): 新增节点短信提醒(审核未通过/被租用需辅助/上架未成交)

This commit is contained in:
yml2213
2026-10-14 14:57:52 +08:00
parent efa0aa4ffd
commit 93e102b7c0
38 changed files with 3228 additions and 70 deletions
+34
View File
@@ -14,13 +14,17 @@ import (
"hfb_sys/backend/internal/database"
"hfb_sys/backend/internal/jobs/distributionsettlement"
"hfb_sys/backend/internal/jobs/fileuploadcleanup"
"hfb_sys/backend/internal/jobs/listingstale"
"hfb_sys/backend/internal/jobs/ordertimeout"
"hfb_sys/backend/internal/jobs/refundretry"
"hfb_sys/backend/internal/jobs/smsdispatch"
"hfb_sys/backend/internal/logging"
"hfb_sys/backend/internal/modules/adminauth"
"hfb_sys/backend/internal/modules/distribution"
"hfb_sys/backend/internal/modules/order"
"hfb_sys/backend/internal/modules/payment"
"hfb_sys/backend/internal/modules/paymentconfig"
"hfb_sys/backend/internal/modules/systemconfig"
"hfb_sys/backend/internal/router"
"go.uber.org/zap"
@@ -112,6 +116,7 @@ func main() {
if paymentRepo != nil {
refundretry.New(deps.DB, deps.Redis, logger, paymentRepo).Start(jobCtx)
}
startSMSJobs(jobCtx, cfg, deps, logger)
}
server := &http.Server{
Addr: cfg.AppAddr,
@@ -178,3 +183,32 @@ func newPaymentConfigRepositoryForJobs(cfg config.Config, db *gorm.DB, logger *z
}
return paymentconfig.NewRepository(db, encryptor)
}
// startSMSJobs 启动节点短信派发与「上架未成交」扫描任务。
// 分站短信密钥需要解密,因此这里单独构造一份带业务字段加密器的分销仓库。
func startSMSJobs(ctx context.Context, cfg config.Config, deps router.Dependencies, logger *zap.Logger) {
if deps.DB == nil {
return
}
configRepo := systemconfig.NewRepository(deps.DB)
if err := configRepo.EnsureDefaults(ctx); err != nil {
logger.Warn("系统配置默认值初始化失败,节点短信将按默认关闭处理", zap.Error(err))
}
distributionRepo := distribution.NewRepository(deps.DB, deps.Redis)
distributionRepo.SetEncryptor(router.NewFieldEncryptor(cfg, logger))
distributionRepo.SetAllowMockSMS(!config.IsProductionEnv(cfg.AppEnv))
resolver := distribution.NewSMSResolver(distributionRepo, logger)
smsdispatch.New(
deps.DB,
deps.Redis,
logger,
router.NewSMSProvider(cfg, logger),
cfg.SMS.AliyunSignName,
configRepo,
resolver,
).Start(ctx)
listingstale.New(deps.DB, deps.Redis, logger, configRepo).Start(ctx)
}