sync: 同步短信服务 v1.0.4 并脱敏

This commit is contained in:
MiFaZhan
2026-10-29 14:17:14 +08:00
parent 6c26f7a0e1
commit e6997f51ed
22 changed files with 450 additions and 168 deletions
+28 -1
View File
@@ -2,6 +2,7 @@ package main
import (
"context"
"database/sql"
"errors"
"log"
"net"
@@ -11,6 +12,7 @@ import (
"syscall"
"time"
_ "github.com/go-sql-driver/mysql"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
@@ -41,7 +43,32 @@ func main() {
log.Fatalf("load sms default config: %v", err)
}
log.Printf("sms default config loaded: %s", source.Describe())
providers := sms.NewRegistryWithDefault(defaultConfig)
// 场景模板配置来自数据库(表 t_sms_template_config):改库即生效,无需改代码或重启。
// 连接参数与凭证同源于 config.yaml(SMS_DB_DSN 等环境变量可覆盖);DSN 为空时能力关闭。
var scenes sms.SceneProvider
var sceneStore *sms.SceneStore
sceneDb, sceneDbSrc, err := sms.LoadSceneDbConfig()
if err != nil {
log.Printf("load scene db config: %v(场景模板能力关闭)", err)
} else if sceneDb.DSN == "" {
log.Printf("scene db DSN not set, scene-based template config disabled")
} else {
db, err := sql.Open("mysql", sceneDb.DSN)
if err != nil {
log.Fatalf("open sms config database: %v", err)
}
db.SetMaxOpenConns(4)
db.SetMaxIdleConns(2)
db.SetConnMaxLifetime(time.Hour)
ttl := sceneDb.TTL()
sceneStore = sms.NewSceneStore(db, ttl)
defer func() { _ = sceneStore.Close() }()
scenes = sceneStore
log.Printf("sms scene config store enabled (source: %s), cache ttl=%s", sceneDbSrc.Describe(), ttl)
}
providers := sms.NewRegistryWithDefault(defaultConfig, scenes)
providers.Register(sms.ServiceAliyun, aliyun.New())
providers.Register(sms.ServiceTencent, tencent.New())