package main import ( "fmt" "github.com/spf13/viper" "go.uber.org/zap" "jygit.jydev.jianyu360.cn/data_processing/common_utils/log" "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb" "jygit.jydev.jianyu360.cn/data_processing/common_utils/udp" "os" "time" ) var GF GlobalConf func init() { err := InitConfig() if err != nil { fmt.Println("InitConfig err", err) os.Exit(1) } InitLog() InitMgo() loadData() //加载存量芜湖数据 UdpClient = udp.UdpClient{Local: GF.Env.LocalPort, BufSize: 1024} UdpClient.Listen(processUdpMsg) log.Info("init", zap.String("LocalPort", GF.Env.LocalPort)) } //InitConfig 初始化配置文件 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 } //InitLog 初始化log 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())) } //InitMgo 初始化mgo func InitMgo() { now := time.Now() Mgo = &mongodb.MongodbSim{ MongodbAddr: GF.Mongo.Host, DbName: GF.Mongo.DB, Size: 10, UserName: GF.Mongo.Username, Password: GF.Mongo.Password, } Mgo.InitPool() log.Info("InitMgo", zap.Any("duration", time.Since(now).Seconds())) } //loadData 加载芜湖存量企业数据 func loadData() { now := time.Now() sess := Mgo.GetMgoConn() defer Mgo.DestoryMongoConn(sess) it := sess.DB("mixdata").C("qyxy_wuhu").Find(nil).Iter() index := 0 for tmp := make(map[string]interface{}); it.Next(&tmp); index++ { if index%10000 == 0 { //log.Println(index, tmp["company_name"]) } name := fmt.Sprint(tmp["company_name"]) tree.Add(name) tmp = map[string]interface{}{} } log.Info("loadData", zap.Any("duration", time.Since(now).Seconds())) log.Info("loadData", zap.Int("加载芜湖企业存量数据结束", index)) }