|
@@ -18,6 +18,7 @@ var PageSize = 5000 //查询分页
|
|
|
var biddingFields = `{"buyer":1,"modifyinfo":1}`
|
|
|
var qyxyFields = `{"company_code":1,"province":1,"city":1,"district":1}`
|
|
|
var findDb string
|
|
|
+var cc chan bool = make(chan bool, 5)
|
|
|
|
|
|
func init() {
|
|
|
qu.ReadConfig(&Config)
|
|
@@ -28,6 +29,7 @@ func init() {
|
|
|
initCap := qu.IntAll(Config["dbsize"])
|
|
|
addr := qu.ObjToString(Config["mgodb"])
|
|
|
dbname := qu.ObjToString(Config["dbname"])
|
|
|
+ cc = make(chan bool, 3)
|
|
|
mgo.Mgo = mgo.MgoFactory(initCap, initCap*3, 120, addr, dbname)
|
|
|
mgo.Mgo_Bidding = mgo.MgoFactory(initCap, initCap*3, 120, qu.ObjToString(Config["mgodb_bidding"]), qu.ObjToString(Config["dbname_bidding"]))
|
|
|
nextNodes = qu.ObjArrToMapArr(Config["nextNode"].([]interface{}))
|
|
@@ -78,7 +80,7 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
|
|
|
|
|
|
func getCity(sid, eid, rep string) {
|
|
|
index := 0
|
|
|
- unum := 0
|
|
|
+ var unum int64
|
|
|
query := bson.M{"_id": bson.M{"$gte": bson.ObjectIdHex(sid), "$lte": bson.ObjectIdHex(eid)}}
|
|
|
count := mgo.Mgo_Bidding.Count(findDb, query)
|
|
|
log.Println("查询条件为:", query, "查询条数:", count)
|
|
@@ -92,51 +94,51 @@ func getCity(sid, eid, rep string) {
|
|
|
query = bson.M{"_id": bson.M{"$gte": bson.ObjectIdHex(sid), "$lte": bson.ObjectIdHex(eid)}}
|
|
|
log.Printf("page=%d,query=%v,db=%v\n", i+1, query, table)
|
|
|
list, _ := mgo.Mgo_Bidding.Find(table, query, nil, biddingFields, false, 0, limit)
|
|
|
- processingCity(sid, eid, list, index, table, i,unum)
|
|
|
- }
|
|
|
-}
|
|
|
+ for _, v := range *list {
|
|
|
+ if qu.ObjToString(v["district"]) != "" && qu.ObjToString(v["city"]) != "" && qu.ObjToString(v["area"]) != "" {
|
|
|
+ index++
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if qu.ObjToString(v["buyer"]) == "" {
|
|
|
+ index++
|
|
|
+ continue
|
|
|
+ }
|
|
|
|
|
|
-func processingCity(sid string, eid string, list *[]map[string]interface{}, index int, table string, i,unum int) {
|
|
|
- for _, v := range *list {
|
|
|
- if qu.ObjToString(v["district"]) != "" && qu.ObjToString(v["city"]) != "" && qu.ObjToString(v["area"]) != "" {
|
|
|
- index++
|
|
|
- continue
|
|
|
- }
|
|
|
- if qu.ObjToString(v["buyer"]) == "" {
|
|
|
+ _id := qu.BsonIdToSId(v["_id"])
|
|
|
+ cc <- true
|
|
|
+ go func(v map[string]interface{}) {
|
|
|
+ rdata := cityMarshal(v)
|
|
|
+ if len(rdata) > 0 {
|
|
|
+ umap := make(map[string]interface{})
|
|
|
+ if v["modifyinfo"] == nil {
|
|
|
+ umap["modifyinfo"] = make(map[string]interface{})
|
|
|
+ } else {
|
|
|
+ umap["modifyinfo"] = v["modifyinfo"]
|
|
|
+ }
|
|
|
+ for rk, rv := range rdata {
|
|
|
+ umap[rk] = rv
|
|
|
+ umap["modifyinfo"].(map[string]interface{})[rk] = "企业信息"
|
|
|
+ }
|
|
|
+ unum++
|
|
|
+ log.Println(unum, ",id:", _id, umap)
|
|
|
+ mgo.Mgo_Bidding.UpdateById(table, v["_id"], map[string]interface{}{
|
|
|
+ "$set": umap,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ <-cc
|
|
|
+ }(v)
|
|
|
index++
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
- _id := qu.BsonIdToSId(v["_id"])
|
|
|
- rdata := cityMarshal(v)
|
|
|
- if len(rdata) > 0 {
|
|
|
- umap := make(map[string]interface{})
|
|
|
- if v["modifyinfo"] == nil {
|
|
|
- umap["modifyinfo"] = make(map[string]interface{})
|
|
|
- } else {
|
|
|
- umap["modifyinfo"] = v["modifyinfo"]
|
|
|
+ if index%1000 == 0 {
|
|
|
+ log.Println("index:", index, ",页码:", i+1, ",_id:", _id)
|
|
|
}
|
|
|
- for rk, rv := range rdata {
|
|
|
- umap[rk] = rv
|
|
|
- umap["modifyinfo"].(map[string]interface{})[rk] = "企业信息"
|
|
|
+ sid = _id
|
|
|
+ if sid >= eid {
|
|
|
+ break
|
|
|
}
|
|
|
- unum++
|
|
|
- log.Println(unum,",id:",_id)
|
|
|
- mgo.Mgo_Bidding.UpdateById(table, v["_id"], map[string]interface{}{
|
|
|
- "$set": umap,
|
|
|
- })
|
|
|
-
|
|
|
- }
|
|
|
- index++
|
|
|
- if index%1000 == 0 {
|
|
|
- log.Println("index:", index, ",页码:", i+1, ",_id:", _id)
|
|
|
- }
|
|
|
- sid = _id
|
|
|
- if sid >= eid {
|
|
|
- break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
func cityMarshal(data map[string]interface{}) map[string]string {
|
|
|
rdata := make(map[string]string)
|
|
|
buyer := qu.ObjToString(data["buyer"])
|
|
@@ -148,29 +150,57 @@ func cityMarshal(data map[string]interface{}) map[string]string {
|
|
|
if len(company_code) > 5 {
|
|
|
province_city_district, _ := mgo.Mgo.FindOne("address", `{"code":"`+company_code[:6]+`"}`)
|
|
|
if province_city_district != nil && (*province_city_district) != nil {
|
|
|
- if province := qu.ObjToString((*province_city_district)["province"]); province != "" {
|
|
|
- rdata["area"] = province
|
|
|
- }
|
|
|
- if city := qu.ObjToString((*province_city_district)["city"]); city != "" && !strings.Contains(city,rdata["area"]) {
|
|
|
- rdata["city"] = city
|
|
|
- }
|
|
|
- if district := qu.ObjToString((*province_city_district)["district"]); district != "" && !strings.Contains(district,rdata["area"]){
|
|
|
- rdata["district"] = district
|
|
|
+ if qu.ObjToString(data["area"]) == "" {
|
|
|
+ if province := qu.ObjToString((*province_city_district)["province"]); province != "" {
|
|
|
+ rdata["area"] = province
|
|
|
+ }
|
|
|
+ if city := qu.ObjToString((*province_city_district)["city"]); city != "" && !strings.Contains(city, rdata["area"]) {
|
|
|
+ rdata["city"] = city
|
|
|
+ }
|
|
|
+ if district := qu.ObjToString((*province_city_district)["district"]); district != "" && !strings.Contains(district, rdata["area"]) {
|
|
|
+ rdata["district"] = district
|
|
|
+ }
|
|
|
+ } else if qu.ObjToString(data["city"]) == "" && qu.ObjToString((*province_city_district)["province"]) != "" && qu.ObjToString((*province_city_district)["province"]) == qu.ObjToString(data["area"]) {
|
|
|
+ if city := qu.ObjToString((*province_city_district)["city"]); city != "" && !strings.Contains(city, rdata["area"]) {
|
|
|
+ rdata["city"] = city
|
|
|
+ }
|
|
|
+ if district := qu.ObjToString((*province_city_district)["district"]); district != "" && !strings.Contains(district, rdata["area"]) {
|
|
|
+ rdata["district"] = district
|
|
|
+ }
|
|
|
+ } else if qu.ObjToString(data["district"]) == "" && qu.ObjToString((*province_city_district)["city"]) != "" && qu.ObjToString((*province_city_district)["city"]) == qu.ObjToString(data["city"]) {
|
|
|
+ if district := qu.ObjToString((*province_city_district)["district"]); district != "" && !strings.Contains(district, rdata["area"]) {
|
|
|
+ rdata["district"] = district
|
|
|
+ }
|
|
|
}
|
|
|
return rdata
|
|
|
}
|
|
|
}
|
|
|
- if province := qu.ObjToString((*tmp)["province"]); province != "" {
|
|
|
- province = strings.TrimRight(province,"省")
|
|
|
- province = strings.TrimRight(province,"市")
|
|
|
- rdata["area"] = province
|
|
|
- }
|
|
|
- if city := qu.ObjToString((*tmp)["city"]); city != "" {
|
|
|
- rdata["city"] = city
|
|
|
- }
|
|
|
- if district := qu.ObjToString((*tmp)["district"]); district != "" {
|
|
|
- rdata["district"] = district
|
|
|
+ var province string
|
|
|
+ if qu.ObjToString(data["area"]) == "" {
|
|
|
+ if province = qu.ObjToString((*tmp)["province"]); province != "" {
|
|
|
+ province = strings.TrimRight(province, "省")
|
|
|
+ province = strings.TrimRight(province, "市")
|
|
|
+ rdata["area"] = province
|
|
|
+ }
|
|
|
+ if city := qu.ObjToString((*tmp)["city"]); city != "" {
|
|
|
+ rdata["city"] = city
|
|
|
+ }
|
|
|
+ if district := qu.ObjToString((*tmp)["district"]); district != "" {
|
|
|
+ rdata["district"] = district
|
|
|
+ }
|
|
|
+ } else if qu.ObjToString(data["city"]) == "" && province != "" && qu.ObjToString(data["area"]) == province {
|
|
|
+ if city := qu.ObjToString((*tmp)["city"]); city != "" {
|
|
|
+ rdata["city"] = city
|
|
|
+ }
|
|
|
+ if district := qu.ObjToString((*tmp)["district"]); district != "" {
|
|
|
+ rdata["district"] = district
|
|
|
+ }
|
|
|
+ } else if qu.ObjToString(data["district"]) == "" && qu.ObjToString((*tmp)["city"]) != "" && qu.ObjToString((*tmp)["city"]) == qu.ObjToString(data["city"]) {
|
|
|
+ if district := qu.ObjToString((*tmp)["district"]); district != "" {
|
|
|
+ rdata["district"] = district
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
return rdata
|
|
|
}
|
|
|
func main() {
|