init.go 3.6 KB

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