package common import ( "context" "flag" "fmt" "github.com/gogf/gf/v2/util/gconv" "log" "time" . "app.yhyue.com/moapp/jybase/es" "app.yhyue.com/moapp/jybase/mongodb" "app.yhyue.com/moapp/jybase/mysql" "app.yhyue.com/moapp/jybase/redis" "app.yhyue.com/moapp/jypkg/middleground" "bp.jydev.jianyu360.cn/BaseService/fileCenter/rpc/filecenter" "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter" "bp.jydev.jianyu360.cn/CRM/application/api/internal/config" "bp.jydev.jianyu360.cn/CRM/application/entity" "bp.jydev.jianyu360.cn/CRM/baseCenter/rpc/basecenter" "bp.jydev.jianyu360.cn/SocialPlatform/socialPlatform/rpc/social/social" "github.com/ClickHouse/clickhouse-go/v2" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" "github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/zrpc" ) var configFile = flag.String("fs", "etc/crmapplication.yaml", "the config file") var C config.Config var logFile = flag.String("lf", "etc/logs.yaml", "the config file") var logc entity.Logc var dbFile = flag.String("df", "etc/db.yaml", "the db file") var DB config.Db var pushFile = flag.String("pf", "etc/push.yaml", "the push file") var Push config.Push var AreaCodeMap map[string]interface{} var ( MgoBidding mongodb.MongodbSim MgoEnt mongodb.MongodbSim MainMysql *mysql.Mysql BaseMysql *mysql.Mysql CrmMysql *mysql.Mysql Mgo mongodb.MongodbSim UserCenterRpc usercenter.UserCenter FileCenterRpc filecenter.FileCenter BaseCenterRpc basecenter.BaseCenter SocialPlatformRpc social.Social MgoProject mongodb.MongodbSim NiJian *mysql.Mysql Middleground *middleground.Middleground ClickhouseConn driver.Conn ) func InitConf() { conf.MustLoad(*configFile, &C) log.Println("初始化配置") // //初始化日志信息 conf.MustLoad(*logFile, &logc) if len(logc.Level) > 0 { for _, v := range logc.Level { logx.MustSetup(logx.LogConf{ Mode: logc.Mode, Path: logc.Path, Level: v, KeepDays: logc.KeepDays, }) logx.Info(v, "--日志记录") } } conf.MustLoad(*dbFile, &DB) //初始化mysql if DB.Mysql.Main.Address != "" { log.Println("--初始化 main mysql--") MainMysql = &mysql.Mysql{ Address: DB.Mysql.Main.Address, UserName: DB.Mysql.Main.UserName, PassWord: DB.Mysql.Main.Password, DBName: DB.Mysql.Main.DbName, MaxOpenConns: DB.Mysql.Main.MaxOpenConns, MaxIdleConns: DB.Mysql.Main.MaxIdleConns, } MainMysql.Init() } if DB.Mysql.BaseService.Address != "" { log.Println("--初始化 base mysql--") BaseMysql = &mysql.Mysql{ Address: DB.Mysql.BaseService.Address, UserName: DB.Mysql.BaseService.UserName, PassWord: DB.Mysql.BaseService.Password, DBName: DB.Mysql.BaseService.DbName, MaxOpenConns: DB.Mysql.BaseService.MaxOpenConns, MaxIdleConns: DB.Mysql.BaseService.MaxIdleConns, } BaseMysql.Init() } if DB.Mysql.CrmService.Address != "" { log.Println("--初始化 crm mysql--") CrmMysql = &mysql.Mysql{ Address: DB.Mysql.CrmService.Address, UserName: DB.Mysql.CrmService.UserName, PassWord: DB.Mysql.CrmService.Password, DBName: DB.Mysql.CrmService.DbName, MaxOpenConns: DB.Mysql.CrmService.MaxOpenConns, MaxIdleConns: DB.Mysql.CrmService.MaxIdleConns, } CrmMysql.Init() } if DB.Mysql.NiJian.Address != "" { log.Println("--初始化 crm mysql--") NiJian = &mysql.Mysql{ Address: DB.Mysql.NiJian.Address, UserName: DB.Mysql.NiJian.UserName, PassWord: DB.Mysql.NiJian.Password, DBName: DB.Mysql.NiJian.DbName, MaxOpenConns: DB.Mysql.NiJian.MaxOpenConns, MaxIdleConns: DB.Mysql.NiJian.MaxIdleConns, } NiJian.Init() } if DB.Mongo.Main.Address != "" { logx.Info("--初始化 mongodb--") Mgo = mongodb.MongodbSim{ MongodbAddr: DB.Mongo.Main.Address, Size: DB.Mongo.Main.Size, DbName: DB.Mongo.Main.DbName, } Mgo.InitPool() } if DB.Mongo.Bidding.Address != "" { logx.Info("--初始化 mongodb Bidding --") MgoBidding = mongodb.MongodbSim{ MongodbAddr: DB.Mongo.Bidding.Address, Size: DB.Mongo.Bidding.Size, DbName: DB.Mongo.Bidding.DbName, Password: DB.Mongo.Bidding.Password, UserName: DB.Mongo.Bidding.UserName, } MgoBidding.InitPool() } if DB.Mongo.Ent.Address != "" { logx.Info("--初始化 mongodb ent --") MgoEnt = mongodb.MongodbSim{ MongodbAddr: DB.Mongo.Ent.Address, Size: DB.Mongo.Ent.Size, DbName: DB.Mongo.Ent.DbName, Password: DB.Mongo.Ent.Password, UserName: DB.Mongo.Ent.UserName, } MgoEnt.InitPool() } if DB.Mongo.Project.Address != "" { logx.Info("--初始化 mongodb ent --") MgoProject = mongodb.MongodbSim{ MongodbAddr: DB.Mongo.Project.Address, Size: DB.Mongo.Project.Size, DbName: DB.Mongo.Project.DbName, Password: DB.Mongo.Project.Password, UserName: DB.Mongo.Project.UserName, } MgoProject.InitPool() } //初始化 elasticsearch if DB.Es.Addr != "" { log.Println("--初始化 elasticsearch--") NewEs(DB.Es.Version, DB.Es.Addr, DB.Es.Size, DB.Es.UserName, DB.Es.Password) } redis.InitRedis(DB.Redis) UserCenterRpc = usercenter.NewUserCenter(zrpc.MustNewClient(C.UserCenterRpc)) FileCenterRpc = filecenter.NewFileCenter(zrpc.MustNewClient(C.FileCenterRpc)) BaseCenterRpc = basecenter.NewBaseCenter(zrpc.MustNewClient(C.BaseCenterRpc)) SocialPlatformRpc = social.NewSocial(zrpc.MustNewClient(C.SocialPlatformRpc)) Middleground = middleground.NewMiddleground(C.BaseCenterRpc.Etcd.Hosts). RegResourceCenter(C.ResourceCenterKey) conf.MustLoad(*pushFile, &Push) ConnectClickhouse(DB.Clickhouse) InitArea() } func ConnectClickhouse(cHouseConfig *config.CHouseConfig) error { var ( ctx = context.Background() err error ) ClickhouseConn, err = clickhouse.Open(&clickhouse.Options{ Addr: []string{cHouseConfig.Addr}, DialTimeout: 10 * time.Second, MaxIdleConns: cHouseConfig.MaxIdleConns, MaxOpenConns: cHouseConfig.MaxOpenConns, Auth: clickhouse.Auth{ Database: cHouseConfig.DbName, Username: cHouseConfig.UserName, Password: cHouseConfig.Password, }, Debugf: func(format string, v ...interface{}) { fmt.Printf(format, v) }, }) if err != nil { return err } if err := ClickhouseConn.Ping(ctx); err != nil { if exception, ok := err.(*clickhouse.Exception); ok { fmt.Printf("Exception [%d] %s \n%s\n", exception.Code, exception.Message, exception.StackTrace) } return err } return nil } func InitArea() { data := CrmMysql.SelectBySql("select code,name from d_area_code where ( level is NULL or level in (1,2))") for _, m := range *data { code := gconv.String(m["code"]) name := gconv.String(m["name"]) if name == "" { continue } AreaCodeMap[name] = code } }