package util import ( "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "mongodb" qu "qfw/util" "sort" "sync" ) //const JYDATAFROMDB = "jyqyfw" //const JYDATAFROMCOLL = "usermail_history" //const JYDATATODB = "jyqyfw" var ( Sysconfig map[string]interface{} //配置文件 Es *Elastic Mgo *mongodb.MongodbSim AllToColl string //所有标注数据汇总表 Password string //默认登陆密码 MgoB *mongodb.MongodbSim //bidding BidColl1 string BidColl2 string MgoE *mongodb.MongodbSim //extract ExtColl1 string ExtColl2 string ProjectColl string MgoJy *mongodb.MongodbSim //jy JyHistory string JYPushColl string JyUser string CustomerFieldMap_EH map[string]string CustomerFieldMap_HE map[string]string AllFieldArr []map[string]string TopSubStypeArr []string TopSubStypeArr2 []string FieldsArr []map[string]interface{} MgoHM *mongodb.MongodbSim //高质量库 MgoBulkSize = 200 ) var ( Mgo_QY *mongodb.MongodbSim //企业mgo Qy_Lock sync.Mutex //锁-多线程备用 Ext_Type, Ext_From map[string]interface{} //抽取来源,方式分 Buyer_Score, S_Winner_Score map[string]interface{} //字段规则分 Budget_Score, Bidamount_Score map[string]interface{} Projectname_Score, Projectcode_Score map[string]interface{} ) var SE = qu.SimpleEncrypt{Key: "topJYBX2019"} var SourceInfoIndexArr = []mongo.IndexModel{ {Keys: map[string]interface{}{"s_grouptaskid": 1}}, //独立索引 {Keys: map[string]interface{}{"s_usertaskid": 1}}, {Keys: map[string]interface{}{"s_grouptaskid": 1, "b_istag": 1}}, //联合索引 {Keys: map[string]interface{}{"s_grouptaskid": 1, "s_isgiveuser": 1}}, {Keys: map[string]interface{}{"s_usertaskid": 1, "b_istag": 1}}, {Keys: map[string]interface{}{"s_usertaskid": 1, "b_check": 1}}, {Keys: map[string]interface{}{"b_istagging": 1}}, {Keys: map[string]interface{}{"b_istagging": 1, "b_istag": 1}}, {Keys: map[string]interface{}{"b_isgivegroup": 1, "b_istagging": 1}}, {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1}}, {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "b_istag": 1}}, {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "b_istagging": 1}}, {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "i_ckdata": 1}}, {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "i_ckdata": 1, "b_istagging": 1}}, } const JYHREFPRE = "https://www.jianyu360.cn/article/content/" const BIDDINGSTARTID = "5a862f0640d2d9bbe88e3cec" const PROJECTCOLLNAME = "f_project" const TASKCOLLNAME = "f_task" const DATACOLLNAME = "f_data" const LOGCOLLNAME = "l_taglog" const SPECIALTYPE = "二级不存在" func InitConfig() { Mgo = &mongodb.MongodbSim{ MongodbAddr: qu.ObjToString(Sysconfig["mgodb"]), Size: qu.IntAll(Sysconfig["dbsize"]), DbName: qu.ObjToString(Sysconfig["dbname"]), } Mgo.InitPool() AllToColl = qu.ObjToString(Sysconfig["alltocoll"]) Password = qu.ObjToString(Sysconfig["defaultpwd"]) //bid bid := Sysconfig["bidding"].(map[string]interface{}) BidColl1 = qu.ObjToString(bid["coll1"]) BidColl2 = qu.ObjToString(bid["coll2"]) MgoB = &mongodb.MongodbSim{ MongodbAddr: qu.ObjToString(bid["addr"]), DbName: qu.ObjToString(bid["db"]), Size: qu.IntAll(bid["size"]), UserName: qu.ObjToString(bid["username"]), Password: qu.ObjToString(bid["password"]), } MgoB.InitPool() //biddingHConf := Sysconfig["high_mark"].(map[string]interface{}) //if biddingHConf == nil || len(biddingHConf) == 0 { // qu.Debug("high_mark 配置项为空,请配置高质量库参数") //} //高质量库 //MgoHM = &mongodb.MongodbSim{ // MongodbAddr: biddingHConf["addr"].(string), // Size: qu.IntAllDef(biddingHConf["size"], 5), // DbName: biddingHConf["db"].(string), // UserName: biddingHConf["username"].(string), // Password: biddingHConf["password"].(string), //} //MgoHM.InitPool() esConf := Sysconfig["es"].(map[string]interface{}) Es = &Elastic{ S_esurl: qu.ObjToString(esConf["addr"]), //http://172.17.145.170:9800 I_size: qu.IntAllDef(esConf["pool"], 10), Username: qu.ObjToString(esConf["user"]), Password: qu.ObjToString(esConf["password"]), } Es.InitElasticSize() //ext ext := Sysconfig["extract"].(map[string]interface{}) ExtColl1 = qu.ObjToString(ext["coll1"]) ExtColl2 = qu.ObjToString(ext["coll2"]) ProjectColl = qu.ObjToString(ext["projectcoll"]) MgoE = &mongodb.MongodbSim{ MongodbAddr: qu.ObjToString(ext["addr"]), DbName: qu.ObjToString(ext["db"]), Size: qu.IntAll(ext["size"]), } MgoE.InitPool() //jy jy := Sysconfig["jy"].(map[string]interface{}) JyHistory = qu.ObjToString(jy["history"]) JYPushColl = qu.ObjToString(jy["pushcoll"]) JyUser = qu.ObjToString(jy["user"]) MgoJy = &mongodb.MongodbSim{ MongodbAddr: qu.ObjToString(jy["addr"]), DbName: qu.ObjToString(jy["db"]), Size: qu.IntAll(jy["size"]), } MgoJy.InitPool() Mgo_QY = &mongodb.MongodbSim{ MongodbAddr: qu.ObjToString(bid["addr"]), DbName: "mixdata", Size: qu.IntAll(bid["size"]), UserName: qu.ObjToString(bid["username"]), Password: qu.ObjToString(bid["password"]), } Mgo_QY.InitPool() //other CustomerFieldMap_EH = map[string]string{} CustomerFieldMap_HE = map[string]string{} for k, v := range Sysconfig["customerfield"].(map[string]interface{}) { val := v.(string) CustomerFieldMap_HE[k] = val CustomerFieldMap_EH[val] = k } //公告类型 types := Sysconfig["topsubtype"].(map[string]interface{}) for top, v := range types { tmp := v.([]interface{}) for _, sub := range tmp { TopSubStypeArr = append(TopSubStypeArr, top+"-"+qu.ObjToString(sub)) } } TopSubStypeArr2 = TopSubStypeArr info, _ := Mgo.Find("v_field", nil, nil, nil, false, -1, -1) AllFieldMap := map[string]string{} AllFieldArr = []map[string]string{} var bArr []map[string]interface{} var purArr []map[string]interface{} var proArr []map[string]interface{} var pkgArr []map[string]interface{} var wnArr []map[string]interface{} for _, m := range *info { m1 := make(map[string]interface{}) if qu.IntAll(m["f_level"]) == 1 { m1["key"] = m["s_code"] m1["descript"] = m["s_name"] m1["enable"] = false m1["ftype"] = m["s_ftype"] m1["stype"] = m["s_type"] AllFieldMap[qu.ObjToString(m["s_name"])] = qu.ObjToString(m["s_code"]) bArr = append(bArr, m1) } else { pstr := qu.ObjToString(m["s_parent"]) if pstr == "purchasinglist" { m1["key"] = m["s_code"] m1["descript"] = m["s_name"] m1["enable"] = false m1["ftype"] = m["s_ftype"] m1["stype"] = m["s_type"] purArr = append(purArr, m1) } else if pstr == "procurementlist" { m1["key"] = m["s_code"] m1["descript"] = m["s_name"] m1["enable"] = false m1["ftype"] = m["s_ftype"] m1["stype"] = m["s_type"] proArr = append(proArr, m1) } else if pstr == "package" { m1["key"] = m["s_code"] m1["descript"] = m["s_name"] m1["enable"] = false m1["ftype"] = m["s_ftype"] m1["stype"] = m["s_type"] pkgArr = append(pkgArr, m1) } else if pstr == "winnerorder" { m1["key"] = m["s_code"] m1["descript"] = m["s_name"] m1["enable"] = false m1["ftype"] = m["s_ftype"] m1["stype"] = m["s_type"] wnArr = append(wnArr, m1) } } } FieldsArr = append(FieldsArr, bson.M{"descript": "基本字段", "child": bArr}) FieldsArr = append(FieldsArr, bson.M{"descript": "标的物信息", "key": "purchasinglist", "child": purArr}) FieldsArr = append(FieldsArr, bson.M{"descript": "采购意向信息", "key": "procurementlist", "child": proArr}) FieldsArr = append(FieldsArr, bson.M{"descript": "多包信息", "key": "package", "child": pkgArr}) FieldsArr = append(FieldsArr, bson.M{"descript": "中标候选信息", "key": "winnerorder", "child": wnArr}) AllFieldMap["标的物列表"] = "purchasinglist" AllFieldMap["多包"] = "package" AllFieldMap["中标候选人"] = "winnerorder" tmpAllField := Arr{} tmpAllField = append(tmpAllField, "标的物列表") tmpAllField = append(tmpAllField, "多包") tmpAllField = append(tmpAllField, "中标候选人") sort.Sort(tmpAllField) for _, f := range tmpAllField { AllFieldArr = append(AllFieldArr, map[string]string{AllFieldMap[f]: f}) } }