You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.1 KiB
123 lines
3.1 KiB
package common
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/go-redis/redis/v8"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/spf13/viper"
|
|
_ "github.com/spf13/viper/remote"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
)
|
|
|
|
const (
|
|
//DTM 服务地址
|
|
ConsulIp = "192.168.100.131"
|
|
ConsulStr = "http://" + ConsulIp + ":8500"
|
|
ConsulReistStr = ConsulIp + ":8500"
|
|
DtmServer = "http://" + ConsulIp + ":36789/api/dtmsvr"
|
|
QSIp = "192.168.1.135"
|
|
QSBusi = "http://" + QSIp + ":6669" //注意本机IP
|
|
ProductFileKey = "mysql-product"
|
|
TradeFileKey = "mysql-trade"
|
|
UserFileKey = "mysql-user"
|
|
RedisFileKey = "redis"
|
|
QPS = 100
|
|
)
|
|
|
|
func GetConsulConfig(url string, fileKey string) (*viper.Viper, error) {
|
|
conf := viper.New()
|
|
conf.AddRemoteProvider("consul", url, fileKey)
|
|
conf.SetConfigType("json")
|
|
err := conf.ReadRemoteConfig()
|
|
if err != nil {
|
|
log.Println("viper conf err :", err)
|
|
//}else {
|
|
//log.Println("viper conf :", conf)
|
|
}
|
|
return conf, nil
|
|
}
|
|
|
|
/**
|
|
{
|
|
"host": "192.168.137.131",
|
|
"port": "3306",
|
|
"user": "root",
|
|
"pwd": "mashibing123",
|
|
"database": "user_center"
|
|
}
|
|
**/
|
|
|
|
// type MySQLConfig struct {
|
|
// Host string `json:"host"`
|
|
// Post string `json:"port"`
|
|
// User string `json:"user"`
|
|
// Pwd string `json:"pwd"`
|
|
// Database string `json:"database"`
|
|
// }
|
|
//
|
|
// 获取 MySQL配置
|
|
func GetMysqlFromConsul(vip *viper.Viper) (db *gorm.DB, err error) {
|
|
newLogger := logger.New(
|
|
log.New(os.Stdout, "\r\n", log.LstdFlags),
|
|
logger.Config{
|
|
SlowThreshold: time.Second,
|
|
LogLevel: logger.Info,
|
|
Colorful: true,
|
|
},
|
|
)
|
|
str := vip.GetString("user") + ":" + vip.GetString("pwd") + "@tcp(" + vip.GetString("host") + ":" + vip.GetString("port") + ")/" + vip.GetString("database") + "?charset=utf8mb4&parseTime=True&loc=Local"
|
|
db, errr := gorm.Open(mysql.Open(str), &gorm.Config{Logger: newLogger}) //"root:mashibing123@tcp(8.142.25.43:3306)/user_center?charset=utf8mb4&parseTime=True&loc=Local"), &gorm.Config{Logger: newLogger})
|
|
if errr != nil {
|
|
log.Println("db err :", errr)
|
|
}
|
|
|
|
return db, nil
|
|
}
|
|
|
|
/**
|
|
{
|
|
"addr": "192.168.100.131",
|
|
"password": "",
|
|
"DB": "0",
|
|
"poolSize": "30",
|
|
"minIdleConn": "30"
|
|
}
|
|
*/
|
|
// 获取redis 配置
|
|
func GetRedisFromConsul(vip *viper.Viper) (red *redis.Client, err error) {
|
|
red = redis.NewClient(&redis.Options{
|
|
Addr: vip.GetString("addr"),
|
|
Password: vip.GetString("password"),
|
|
DB: vip.GetInt("DB"),
|
|
PoolSize: vip.GetInt("poolSize"),
|
|
MinIdleConns: vip.GetInt("minIdleConn"),
|
|
})
|
|
//集群
|
|
clusterClients := redis.NewClusterClient(
|
|
&redis.ClusterOptions{
|
|
Addrs: []string{"192.168.100.131:6380", "192.168.100.131:6381", "192.168.100.131:6382"},
|
|
})
|
|
fmt.Println(clusterClients)
|
|
return red, nil
|
|
}
|
|
|
|
// 设置用户登录信息
|
|
func SetUserToken(red *redis.Client, key string, val []byte, timeTTL time.Duration) {
|
|
red.Set(context.Background(), key, val, timeTTL)
|
|
}
|
|
|
|
// 获取用户登录信息
|
|
func GetUserToken(red *redis.Client, key string) string {
|
|
res, err := red.Get(context.Background(), key).Result()
|
|
if err != nil {
|
|
log.Print("GetUserToken err ", err)
|
|
}
|
|
return res
|
|
}
|