package main import ( "encoding/json" "log" mu "mfw/util" mgoutil "mongodb" "net" "qfw/util" es "qfw/util/elastic" "github.com/donnie4w/go-logger/logger" ) var ( Sysconfig map[string]interface{} Es *es.Elastic Index string Itype string MongoTool *mgoutil.MongodbSim Dbname string CollPro string //项目表 MixMgo *mgoutil.MongodbSim CollTag string //标签表 CollSave string CollEnt string Rate string Forecast map[string][]string Category []string NatureMap map[string]bool ProjectTypeMap map[string]bool udpclient mu.UdpClient ) var MgoSaveCache = make(chan map[string]interface{}, 2000) var SP = make(chan bool, 5) func init() { util.ReadConfig(&Sysconfig) //mgo Dbname = Sysconfig["dbname"].(string) CollPro = Sysconfig["dbcoll"].(string) MongoTool = &mgoutil.MongodbSim{ MongodbAddr: Sysconfig["mgodb"].(string), Size: util.IntAll(Sysconfig["dbsize"]), DbName: Dbname, UserName: util.ObjToString(Sysconfig["username"]), Password: util.ObjToString(Sysconfig["password"]), } MongoTool.InitPool() //mixdata mixConfig := Sysconfig["mixdata"].(map[string]interface{}) CollTag = mixConfig["tagcoll"].(string) CollSave = mixConfig["savecoll"].(string) CollEnt = mixConfig["buyer_ent"].(string) MixMgo = &mgoutil.MongodbSim{ MongodbAddr: mixConfig["addr"].(string), Size: util.IntAll(mixConfig["size"]), DbName: mixConfig["db"].(string), UserName: util.ObjToString(Sysconfig["username"]), Password: util.ObjToString(Sysconfig["password"]), } MixMgo.InitPool() //es econf := Sysconfig["elastic"].(map[string]interface{}) Es = &es.Elastic{ S_esurl: econf["addr"].(string), I_size: util.IntAllDef(econf["pool"], 12), } Es.InitElasticSize() Index = econf["index"].(string) Itype = econf["itype"].(string) //other Rate = util.ObjToString(Sysconfig["rate"]) Forecast = make(map[string][]string) ForecastTmp := Sysconfig["forecast"].(map[string]interface{}) for k, v := range ForecastTmp { Forecast[k] = util.ObjArrToStringArr(v.([]interface{})) } log.Println("Forecast", Forecast) // Forecast2 = make(map[string][]interface{}) // Forecast2Tmp := Sysconfig["forecast2"].(map[string]interface{}) // for k, v := range Forecast2Tmp { // tmp := v.([]interface{}) // Forecast2[k] = tmp // } // log.Println("Forecast2", Forecast2) NatureMap = make(map[string]bool) for _, nature := range util.ObjArrToStringArr(Sysconfig["nature"].([]interface{})) { NatureMap[nature] = true } log.Println("NatureMap:", NatureMap) ProjectTypeMap = make(map[string]bool) for _, projecttype := range util.ObjArrToStringArr(Sysconfig["projecttype"].([]interface{})) { ProjectTypeMap[projecttype] = true } log.Println("ProjectTypeMap:", ProjectTypeMap) //udp udpport, _ := Sysconfig["udpport"].(string) udpclient = mu.UdpClient{Local: udpport, BufSize: 1024} udpclient.Listen(processUdpMsg) log.Println("Udp服务监听", udpport) logger.SetRollingDaily("./logs", "projectinfo.log") go SaveMgo() } func main() { //GetProjectData("5e718afd50b5ea296ee1477e", "5e718afd50b5ea296ee1477f") //手动任务 ch := make(chan bool, 1) <-ch } //udp调用信号 func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) { var mapInfo map[string]interface{} err := json.Unmarshal(data, &mapInfo) util.Debug("err:", err, "mapInfo:", mapInfo) if err != nil { logger.Debug("udp error mapInfo:", mapInfo) //_ = udpclient.WriteUdp([]byte("err:"+err.Error()), mu.OP_NOOP, ra) } else if mapInfo != nil { gtid := util.ObjToString(mapInfo["gtid"]) lteid := util.ObjToString(mapInfo["lteid"]) if gtid == "" || lteid == "" { logger.Debug("udp id err mapInfo:", mapInfo) } else { GetProjectData(gtid, lteid) } } }