package main import ( "context" "fmt" "github.com/spf13/viper" "go.uber.org/zap" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "jygit.jydev.jianyu360.cn/data_processing/common_utils/log" "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb" "os" "time" ) var ( MgoB *mongodb.MongodbSim // MgoQY *mongodb.MongodbSim // MgoP *mongodb.MongodbSim // GF GlobalConf JianyuSubjectDB *gorm.DB ) func init() { err := InitConfig() if err != nil { fmt.Println("InitConfig err", err) os.Exit(1) } InitLog() InitMgo() //InitMysql() // } func InitConfig() (err error) { viper.SetConfigFile("config.toml") // 指定配置文件路径 viper.SetConfigName("config") // 配置文件名称(无扩展名) viper.SetConfigType("toml") // 如果配置文件的名称中没有扩展名,则需要配置此项 viper.AddConfigPath("./") viper.AddConfigPath("./conf/") // 还可以在工作目录中查找配置 viper.AddConfigPath("../conf/") // 还可以在工作目录中查找配置 err = viper.ReadInConfig() // 查找并读取配置文件 if err != nil { // 处理读取配置文件的错误 return } err = viper.Unmarshal(&GF) return err } func InitMgo() { //181 凭安库 //Mgo181 = &mongodb.MongodbSim{ // MongodbAddr: GF.Mongo181.Host, // Size: 10, // DbName: GF.Mongo181.DB, // UserName: GF.Mongo181.Username, // Password: GF.Mongo181.Password, // Direct: GF.Mongo181.Direct, //} //Mgo181.InitPool() //85 项目查询 MgoP = &mongodb.MongodbSim{ MongodbAddr: GF.MongoP.Host, Size: 10, DbName: GF.MongoP.DB, UserName: GF.MongoP.Username, Password: GF.MongoP.Password, Direct: GF.MongoP.Direct, } MgoP.InitPool() err := MgoP.C.Ping(context.Background(), nil) if err != nil { log.Info("InitMgo", zap.Any(GF.MongoP.Host, "链接失败")) } //bidding 查询 MgoB = &mongodb.MongodbSim{ MongodbAddr: GF.MongoB.Host, Size: 10, DbName: GF.MongoB.DB, UserName: GF.MongoB.Username, Password: GF.MongoB.Password, Direct: GF.MongoB.Direct, } MgoB.InitPool() err = MgoB.C.Ping(context.Background(), nil) if err != nil { log.Info("InitMgo", zap.Any(GF.MongoB.Host, "链接失败")) } //qyxy_std 查询 MgoQY = &mongodb.MongodbSim{ MongodbAddr: GF.MongoB.Host, Size: 10, DbName: "mixdata", UserName: GF.MongoB.Username, Password: GF.MongoB.Password, Direct: GF.MongoB.Direct, } MgoQY.InitPool() } func InitLog() { now := time.Now() err := log.InitLog( log.Path(GF.Log.LogPath), log.Level(GF.Log.LogLevel), log.Compress(GF.Log.Compress), log.MaxSize(GF.Log.MaxSize), log.MaxBackups(GF.Log.MaxBackups), log.MaxAge(GF.Log.MaxAge), log.Format(GF.Log.Format), ) if err != nil { fmt.Printf("InitLog failed: %v\n", err) os.Exit(1) } log.Info("InitLog", zap.Any("duration", time.Since(now).Seconds())) } // InitMysql InitMysql func InitMysql() { now := time.Now() username := GF.Mysql.Username password := GF.Mysql.Password host := GF.Mysql.Address // 本地 //host := "172.17.162.27:14000" //线上 var err error dsn3 := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", username, password, host, GF.Mysql.Dbname) JianyuSubjectDB, err = gorm.Open(mysql.Open(dsn3), &gorm.Config{ Logger: logger.Default.LogMode(logger.Error), //不打印日志 }) if err != nil { log.Info("InitMysql", zap.String("初始化MySQL", "Jianyu_subjectdb 数据库失败"), zap.Error(err)) return } else { log.Info("InitMysql", zap.String("初始化MySQL", "Jianyu_subjectdb 数据库成功")) } log.Info("InitMysql", zap.Any("duration", time.Since(now).Seconds())) }