Bläddra i källkod

format redis functions

runningwater 6 månader sedan
förälder
incheckning
2a2fc60a7e
2 ändrade filer med 72 tillägg och 41 borttagningar
  1. 31 0
      pkg/redis/redis.go
  2. 41 41
      pkg/sms/driver_aliyun.go

+ 31 - 0
pkg/redis/redis.go

@@ -120,6 +120,33 @@ func (rds *RedisClient) Decrement(args ...any) bool {
 	return true
 }
 
+// func (rds *RedisClient) Reconnect(ctx context.Context) {
+//   for {
+// 	err := rds.Ping()
+// 	if err == nil {
+// 	  	logger.InfoString("Redis", "Ping", "Redis 连接正常")
+// 		return
+// 	}
+
+// 	logger.ErrorString("Redis", "Ping", "Redis 连接异常,正在重连...")
+
+// 	// 重新连接 Redis
+// 	rds.Client = redis.NewClient(&redis.Options{
+// 		Addr:     rds.Client.Options().Addr,
+// 		Password: rds.Client.Options().Password,
+// 		DB:       rds.Client.Options().DB,
+// 	})
+
+// 	select {
+// 	case <-ctx.Done():
+// 		logger.InfoString("Redis", "Reconnect", "Redis 重连已取消")
+// 		return
+// 		case <-time.After(5 * time.Second):
+
+// 	}
+//   }
+// }
+
 // once 确保全局的 Redis 对象只实例一次
 var once sync.Once
 
@@ -148,5 +175,9 @@ func NewClient(address, username, password string, db int) *RedisClient {
 	err := rds.Ping()
 	logger.LogIf(err)
 
+	// 	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
+	//   defer cancel()
+	//   rds.Reconnect(ctx)
+
 	return rds
 }

+ 41 - 41
pkg/sms/driver_aliyun.go

@@ -1,11 +1,11 @@
 package sms
 
 import (
-    "encoding/json"
+	"encoding/json"
 
-    aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
+	aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
 
-    "github.com/runningwater/gohub/pkg/logger"
+	"github.com/runningwater/gohub/pkg/logger"
 )
 
 // Aliyun 阿里云短信驱动,实现 Driver 接口
@@ -23,51 +23,51 @@ type Aliyun struct{}
 //	bool : 发送成功返回 true,失败返回 false
 func (a *Aliyun) Send(phone string, message Message, config map[string]string) bool {
 
-    const moduleName = "短信[阿里云]"
+	const moduleName = "短信[阿里云]"
 
-    smsClient := aliyunsmsclient.New("https://dysmsapi.aliyuncs.com/")
+	smsClient := aliyunsmsclient.New("https://dysmsapi.aliyuncs.com/")
 
-    templateParam, err := json.Marshal(message.Data)
-    if err != nil {
-        logger.ErrorString(moduleName, "解析模板参数失败", err.Error())
-        return false
-    }
+	templateParam, err := json.Marshal(message.Data)
+	if err != nil {
+		logger.ErrorString(moduleName, "解析模板参数失败", err.Error())
+		return false
+	}
 
-    logger.DebugJSON(moduleName, "配置信息", config)
+	logger.DebugJSON(moduleName, "配置信息", config)
 
-    // 调用阿里云短信服务API(参数顺序需与官方SDK保持一致)
-    result, err := smsClient.Execute(
-        config["access_key_id"],     // 访问密钥ID
-        config["access_key_secret"], // 访问密钥
-        phone,                       // 接收手机号
-        config["sign_name"],         // 短信签名
-        message.Template,            // 模板ID
-        string(templateParam),       // JSON格式的模板参数
-    )
+	// 调用阿里云短信服务API(参数顺序需与官方SDK保持一致)
+	result, err := smsClient.Execute(
+		config["access_key_id"],     // 访问密钥ID
+		config["access_key_secret"], // 访问密钥
+		phone,                       // 接收手机号
+		config["sign_name"],         // 短信签名
+		message.Template,            // 模板ID
+		string(templateParam),       // JSON格式的模板参数
+	)
 
-    // 记录原始请求和响应(用于调试和审计)
-    logger.DebugJSON(moduleName, "请求内容", smsClient.Request)
-    logger.DebugJSON(moduleName, "接口响应", result)
+	// 记录原始请求和响应(用于调试和审计)
+	logger.DebugJSON(moduleName, "请求内容", smsClient.Request)
+	logger.DebugJSON(moduleName, "接口响应", result)
 
-    if err != nil {
-        logger.ErrorString(moduleName, "发送失败", err.Error())
-        return false
-    }
+	if err != nil {
+		logger.ErrorString(moduleName, "发送失败", err.Error())
+		return false
+	}
 
-    // 序列化服务端响应结果
-    resultJson, err := json.Marshal(result)
-    if err != nil {
-        logger.ErrorString(moduleName, "解析接口响应 JSON 失败", err.Error())
-        return false
-    }
+	// 序列化服务端响应结果
+	resultJson, err := json.Marshal(result)
+	if err != nil {
+		logger.ErrorString(moduleName, "解析接口响应 JSON 失败", err.Error())
+		return false
+	}
 
-    // 根据官方SDK提供的方法判断是否成功
-    if result.IsSuccessful() {
-        logger.DebugString(moduleName, "发送成功", string(resultJson))
-        return true
-    } else {
-        logger.ErrorString(moduleName, "发送失败, 服务商返回错误", string(resultJson))
-        return false
-    }
+	// 根据官方SDK提供的方法判断是否成功
+	if result.IsSuccessful() {
+		logger.DebugString(moduleName, "发送成功", string(resultJson))
+		return true
+	} else {
+		logger.ErrorString(moduleName, "发送失败, 服务商返回错误", string(resultJson))
+		return false
+	}
 
 }