main.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package main
  2. import (
  3. "strings"
  4. "sync"
  5. "log"
  6. "app.yhyue.com/moapp/jybase/common"
  7. "app.yhyue.com/moapp/jybase/mongodb"
  8. )
  9. var (
  10. Mgo *mongodb.MongodbSim
  11. Mgos *mongodb.MongodbSim
  12. )
  13. func init() {
  14. Mgo = mongodb.NewMgoWithUser("172.17.189.140:27080,172.17.189.141:27081", "bidding", "root", "top@123", 50)
  15. Mgos = mongodb.NewMgo("172.17.4.85:27080", "xzh", 50)
  16. }
  17. func main() {
  18. sess := Mgo.GetMgoConn()
  19. defer Mgo.DestoryMongoConn(sess)
  20. q := map[string]interface{}{}
  21. it := sess.DB("qfw").C("bidding").Find(&q).Sort("_id").Iter()
  22. pool := make(chan bool, 10)
  23. wg := &sync.WaitGroup{}
  24. total := 0
  25. for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
  26. if total%1000 == 0 {
  27. log.Println("cur index ", total, tmp["_id"])
  28. }
  29. pool <- true
  30. wg.Add(1)
  31. go func(tmp map[string]interface{}) {
  32. defer func() {
  33. <-pool
  34. wg.Done()
  35. }()
  36. // data := map[string]interface{}{}
  37. buyerclass := common.ObjToString(tmp["buyerclass"])
  38. tag_subinformationMap := map[string]string{}
  39. buyerclassMap := map[string]string{}
  40. property_formMap := map[string]string{}
  41. if buyerclass != "" {
  42. buyerclassMap[buyerclass] = "1"
  43. }
  44. if tmp["tag_subinformation"] != nil {
  45. tag_subinformation := common.ObjArrToStringArr(tmp["tag_subinformation"].([]interface{}))
  46. for _, v := range tag_subinformation {
  47. tag_subinformationMap[v] = "1"
  48. }
  49. }
  50. if tmp["tag_subinformation_ai"] != nil {
  51. tag_subinformation_ai := common.ObjArrToStringArr(tmp["tag_subinformation_ai"].([]interface{}))
  52. for _, v := range tag_subinformation_ai {
  53. tag_subinformationMap[v] = "1"
  54. }
  55. }
  56. if tmp["property_form"] != nil {
  57. property_form := common.ObjArrToStringArr(tmp["property_form"].([]interface{}))
  58. for _, v := range property_form {
  59. property_formMap[v] = "1"
  60. }
  61. }
  62. buyer := common.ObjToString(tmp["buyer"])
  63. agency := common.ObjToString(tmp["buyer"])
  64. s_winner := common.ObjToString(tmp["s_winner"])
  65. buyerclassMap1, tag_subinformationMap1, property_formMap1 := buyerclassMap, tag_subinformationMap, property_formMap
  66. tag_subinformationMap2, property_formMap2 := tag_subinformationMap, property_formMap
  67. getname(buyer, buyerclassMap1, tag_subinformationMap1, property_formMap1)
  68. getname1(agency, tag_subinformationMap2, property_formMap2)
  69. for _, v := range strings.Split(s_winner, ",") {
  70. tag_subinformationMap3, property_formMap3 := tag_subinformationMap, property_formMap
  71. getname1(v, tag_subinformationMap3, property_formMap3)
  72. }
  73. }(tmp)
  74. tmp = make(map[string]interface{})
  75. }
  76. wg.Wait()
  77. log.Println("is over ~ ", total)
  78. }
  79. func getname(name string, buyerclassMap, tag_subinformationMap, property_formMap map[string]string) {
  80. if name != "" {
  81. data := map[string]interface{}{}
  82. bd, ok := Mgos.FindOne("label", map[string]interface{}{"name": name})
  83. if ok && bd != nil && len(*bd) > 0 {
  84. if (*bd)["buyerclass"] != nil {
  85. if buyerclass1, oks := (*bd)["buyerclass"].(map[string]string); oks {
  86. for k, _ := range buyerclass1 {
  87. buyerclassMap[k] = "1"
  88. }
  89. } else if buyerclass1, oks := (*bd)["buyerclass"].(map[string]interface{}); oks {
  90. for k, _ := range buyerclass1 {
  91. buyerclassMap[k] = "1"
  92. }
  93. }
  94. }
  95. if (*bd)["tag_subinformation"] != nil {
  96. if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]string); oks {
  97. for k, _ := range tag_subinformation1 {
  98. tag_subinformationMap[k] = "1"
  99. }
  100. } else if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]interface{}); oks {
  101. for k, _ := range tag_subinformation1 {
  102. tag_subinformationMap[k] = "1"
  103. }
  104. }
  105. }
  106. if (*bd)["property_form"] != nil {
  107. if property_form1, oks := (*bd)["property_form"].(map[string]string); oks {
  108. for k, _ := range property_form1 {
  109. property_formMap[k] = "1"
  110. }
  111. } else if property_form1, oks := (*bd)["property_form"].(map[string]interface{}); oks {
  112. for k, _ := range property_form1 {
  113. property_formMap[k] = "1"
  114. }
  115. }
  116. }
  117. if len(buyerclassMap) > 0 {
  118. data["buyerclass"] = buyerclassMap
  119. }
  120. if len(tag_subinformationMap) > 0 {
  121. data["tag_subinformation"] = tag_subinformationMap
  122. }
  123. if len(property_formMap) > 0 {
  124. data["property_form"] = property_formMap
  125. }
  126. if len(data) > 0 {
  127. Mgos.Update("label", map[string]interface{}{"name": name}, map[string]interface{}{"$set": data}, false, false)
  128. }
  129. } else {
  130. data["name"] = name
  131. if len(buyerclassMap) > 0 {
  132. data["buyerclass"] = buyerclassMap
  133. }
  134. if len(tag_subinformationMap) > 0 {
  135. data["tag_subinformation"] = tag_subinformationMap
  136. }
  137. if len(property_formMap) > 0 {
  138. data["property_form"] = property_formMap
  139. }
  140. if len(data) > 0 {
  141. Mgos.Save("label", data)
  142. }
  143. }
  144. }
  145. }
  146. func getname1(name string, tag_subinformationMap, property_formMap map[string]string) {
  147. if name != "" {
  148. data := map[string]interface{}{}
  149. bd, ok := Mgos.FindOne("label", map[string]interface{}{"name": name})
  150. if ok && bd != nil && len(*bd) > 0 {
  151. if (*bd)["tag_subinformation"] != nil {
  152. if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]string); oks {
  153. for k, _ := range tag_subinformation1 {
  154. tag_subinformationMap[k] = "1"
  155. }
  156. } else if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]interface{}); oks {
  157. for k, _ := range tag_subinformation1 {
  158. tag_subinformationMap[k] = "1"
  159. }
  160. }
  161. }
  162. if (*bd)["property_form"] != nil {
  163. if property_form1, oks := (*bd)["property_form"].(map[string]string); oks {
  164. for k, _ := range property_form1 {
  165. property_formMap[k] = "1"
  166. }
  167. } else if property_form1, oks := (*bd)["property_form"].(map[string]interface{}); oks {
  168. for k, _ := range property_form1 {
  169. property_formMap[k] = "1"
  170. }
  171. }
  172. }
  173. if len(tag_subinformationMap) > 0 {
  174. data["tag_subinformation"] = tag_subinformationMap
  175. }
  176. if len(property_formMap) > 0 {
  177. data["property_form"] = property_formMap
  178. }
  179. if len(data) > 0 {
  180. Mgos.Update("label", map[string]interface{}{"name": name}, map[string]interface{}{"$set": data}, false, false)
  181. }
  182. } else {
  183. data["name"] = name
  184. if len(tag_subinformationMap) > 0 {
  185. data["tag_subinformation"] = tag_subinformationMap
  186. }
  187. if len(property_formMap) > 0 {
  188. data["property_form"] = property_formMap
  189. }
  190. if len(data) > 0 {
  191. Mgos.Save("label", data)
  192. }
  193. }
  194. }
  195. }