init.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "mongodb"
  7. "qfw/util"
  8. "qfw/util/elastic"
  9. "qfw/util/redis"
  10. )
  11. var (
  12. Sysconfig map[string]interface{}
  13. MongoTool *mongodb.MongodbSim
  14. MongoTool1 *mongodb.MongodbSim
  15. MysqlTool *Mysql
  16. DbSave string
  17. updatePool chan []map[string]interface{}
  18. updateSp chan bool
  19. saveSize int
  20. savePool chan map[string]interface{}
  21. saveSp chan bool
  22. QyStypeMap map[string]string
  23. CompanyStatusMap map[string]string
  24. AddressMap map[string]*City
  25. AddressOldMap map[string]*City
  26. Es *elastic.Elastic
  27. )
  28. func init() {
  29. util.ReadConfig(&Sysconfig)
  30. DbSave = util.ObjToString(Sysconfig["dbSave"])
  31. MongoTool = &mongodb.MongodbSim{
  32. MongodbAddr: util.ObjToString(Sysconfig["dbServer"]),
  33. Size: util.IntAll(Sysconfig["dbSize"]),
  34. DbName: util.ObjToString(Sysconfig["dbName"]),
  35. UserName: util.ObjToString(Sysconfig["uname"]),
  36. Password: util.ObjToString(Sysconfig["upwd"]),
  37. }
  38. MongoTool.InitPool()
  39. MongoTool1 = &mongodb.MongodbSim{
  40. MongodbAddr: "172.17.4.181:27001", // 172.17.4.181:27001
  41. Size: 10,
  42. DbName: "mixdata",
  43. }
  44. MongoTool1.InitPool()
  45. //MysqlTool = &Mysql{
  46. // Address: "172.17.4.181:3308",
  47. // UserName: "root",
  48. // PassWord: "root123",
  49. // DBName: "ic",
  50. //}
  51. //MysqlTool.Init()
  52. Es = &elastic.Elastic{
  53. S_esurl: "http://172.17.145.170:9800", //http://172.17.145.170:9800
  54. I_size: 10,
  55. }
  56. Es.InitElasticSize()
  57. saveSize = 200
  58. updatePool = make(chan []map[string]interface{}, 5000)
  59. updateSp = make(chan bool, 5)
  60. savePool = make(chan map[string]interface{}, 5000)
  61. saveSp = make(chan bool, 5)
  62. InitQyStype()
  63. InitCompanyStatus()
  64. InitAddress()
  65. err := seg.LoadDictionary("dict.txt")
  66. if err != nil {
  67. log.Fatal("结巴分词出错...")
  68. return
  69. }
  70. redis.InitRedis1("qyxy_winner=127.0.0.1:8379", 3)
  71. }
  72. func InitQyStype() {
  73. defer util.Catch()
  74. util.Debug("Init QyStype...")
  75. QyStypeMap = map[string]string{}
  76. qystype, _ := MongoTool.Find("qystype", nil, nil, nil, false, -1, -1)
  77. for _, tmp := range *qystype {
  78. name := util.ObjToString(tmp["name"])
  79. prename := util.ObjToString(tmp["prename"])
  80. QyStypeMap[name] = prename
  81. }
  82. }
  83. func InitCompanyStatus() {
  84. defer util.Catch()
  85. util.Debug("Init CompanyStatus...")
  86. CompanyStatusMap = map[string]string{}
  87. status, _ := MongoTool.Find("company_status", nil, nil, nil, false, -1, -1)
  88. for _, tmp := range *status {
  89. old_status := util.ObjToString(tmp["old"])
  90. new_status := util.ObjToString(tmp["new"])
  91. CompanyStatusMap[old_status] = new_status
  92. }
  93. }
  94. type City struct {
  95. Code string `json:"code"`
  96. Province string `json:"province"`
  97. City string `json:"city"`
  98. District string `json:"district"`
  99. }
  100. // CodeMap 区域code补全
  101. var CodeMap = map[int]string{
  102. 2: "0000",
  103. 4: "00",
  104. }
  105. func InitAddress() {
  106. defer util.Catch()
  107. util.Debug("Init Address...")
  108. AddressMap = map[string]*City{}
  109. AddressOldMap = map[string]*City{}
  110. sess := MongoTool.GetMgoConn()
  111. defer MongoTool.DestoryMongoConn(sess)
  112. result := sess.DB("mixdata").C("address_new_2020").Find(nil).Iter()
  113. count := 0
  114. for tmp := make(map[string]interface{}); result.Next(&tmp); count++ {
  115. if count%50000 == 0 {
  116. util.Debug("current---", count)
  117. }
  118. code := util.ObjToString(tmp["code"])
  119. codeLen := len(code)
  120. if codeLen > 6 {
  121. continue
  122. }
  123. if t_code := CodeMap[codeLen]; t_code != "" {
  124. code = code + t_code
  125. }
  126. remark := fmt.Sprint(tmp["Remarks"])
  127. city := &City{}
  128. tmpjson, err := json.Marshal(tmp)
  129. if err == nil {
  130. json.Unmarshal(tmpjson, city)
  131. }
  132. if remark == "已作废" {
  133. AddressOldMap[code] = city
  134. } else {
  135. AddressMap[code] = city
  136. }
  137. }
  138. util.Debug("Init Address end...", len(AddressMap), len(AddressOldMap))
  139. }