init.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package main
  2. import (
  3. util "app.yhyue.com/data_processing/common_utils"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/spf13/viper"
  7. "go.uber.org/zap"
  8. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  9. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  10. )
  11. var (
  12. MongoTool *mongodb.MongodbSim
  13. QyStypeMap map[string]string
  14. CompanyStatusMap map[string]string
  15. AddressMap map[string]*City
  16. AddressOldMap map[string]*City
  17. CollArr []string // std 程序需要读取的数据表
  18. )
  19. // Init 初始化依赖
  20. func Init() {
  21. InitLog()
  22. err := InitConfig()
  23. if err != nil {
  24. log.Info("init", zap.Any("InitConfig", err))
  25. }
  26. InitMgo()
  27. InitQyStype()
  28. InitCompanyStatus()
  29. InitAddress()
  30. err = seg.LoadDictionary("dict.txt")
  31. if err != nil {
  32. log.Fatal("init", zap.Any("LoadDictionary err", err))
  33. return
  34. }
  35. //qyxy_std 需要处理的数据表
  36. CollArr = []string{"company_base", "company_employee", "company_history_name", "company_partner", "annual_report_base", "annual_report_website",
  37. "special_enterprise", "special_foundation", "special_gov_unit", "special_hongkong_company", "special_law_office", "special_social_organ", "special_trade_union"}
  38. db := DB()
  39. defer db.Close()
  40. // 打印数据对象
  41. badgerDB := &bdb{db}
  42. fmt.Println("seoid---", badgerDB.Get("seoid"))
  43. }
  44. func InitMgo() {
  45. MongoTool = &mongodb.MongodbSim{
  46. MongodbAddr: GF.Env.Addr,
  47. Size: GF.Env.Dbsize,
  48. DbName: GF.Env.Dbname,
  49. UserName: GF.Env.Username,
  50. Password: GF.Env.Password,
  51. }
  52. MongoTool.InitPool()
  53. }
  54. func InitConfig() (err error) {
  55. viper.SetConfigFile("config.toml") // 指定配置文件路径
  56. viper.SetConfigName("config") // 配置文件名称(无扩展名)
  57. viper.SetConfigType("toml") // 如果配置文件的名称中没有扩展名,则需要配置此项
  58. viper.AddConfigPath("./")
  59. viper.AddConfigPath("./conf/") // 还可以在工作目录中查找配置
  60. viper.AddConfigPath("../conf/") // 还可以在工作目录中查找配置
  61. err = viper.ReadInConfig() // 查找并读取配置文件
  62. if err != nil { // 处理读取配置文件的错误
  63. return
  64. }
  65. err = viper.Unmarshal(&GF)
  66. return err
  67. }
  68. func InitLog() {
  69. err := log.InitLog(
  70. log.Path("./logs/log.out"),
  71. //log.Path(""),
  72. log.Level("info"),
  73. log.Compress(true),
  74. log.MaxSize(10),
  75. log.MaxBackups(10),
  76. log.MaxAge(7),
  77. log.Format("json"),
  78. )
  79. if err != nil {
  80. fmt.Printf("InitLog failed: %v\n", err)
  81. }
  82. }
  83. func InitQyStype() {
  84. defer util.Catch()
  85. util.Debug("Init QyStype...")
  86. QyStypeMap = map[string]string{}
  87. qystype, _ := MongoTool.Find("qystype", nil, nil, nil, false, -1, -1)
  88. for _, tmp := range *qystype {
  89. name := util.ObjToString(tmp["name"])
  90. prename := util.ObjToString(tmp["prename"])
  91. QyStypeMap[name] = prename
  92. }
  93. }
  94. func InitCompanyStatus() {
  95. defer util.Catch()
  96. util.Debug("Init CompanyStatus...")
  97. CompanyStatusMap = map[string]string{}
  98. status, _ := MongoTool.Find("company_status", nil, nil, nil, false, -1, -1)
  99. for _, tmp := range *status {
  100. old_status := util.ObjToString(tmp["old"])
  101. new_status := util.ObjToString(tmp["new"])
  102. CompanyStatusMap[old_status] = new_status
  103. }
  104. }
  105. type City struct {
  106. Code string `json:"code"`
  107. Province string `json:"province"`
  108. City string `json:"city"`
  109. District string `json:"district"`
  110. }
  111. // CodeMap 区域code补全
  112. var CodeMap = map[int]string{
  113. 2: "0000",
  114. 4: "00",
  115. }
  116. func InitAddress() {
  117. defer util.Catch()
  118. util.Debug("Init Address...")
  119. AddressMap = map[string]*City{}
  120. AddressOldMap = map[string]*City{}
  121. sess := MongoTool.GetMgoConn()
  122. defer MongoTool.DestoryMongoConn(sess)
  123. result := sess.DB("mixdata").C("address_new_2020").Find(nil).Iter()
  124. count := 0
  125. for tmp := make(map[string]interface{}); result.Next(&tmp); count++ {
  126. if count%50000 == 0 {
  127. log.Info("InitAddress", zap.Int("current", count))
  128. }
  129. code := util.ObjToString(tmp["code"])
  130. codeLen := len(code)
  131. if codeLen > 6 {
  132. continue
  133. }
  134. if t_code := CodeMap[codeLen]; t_code != "" {
  135. code = code + t_code
  136. }
  137. remark := fmt.Sprint(tmp["Remarks"])
  138. city := &City{}
  139. tmpjson, err := json.Marshal(tmp)
  140. if err == nil {
  141. json.Unmarshal(tmpjson, city)
  142. }
  143. if remark == "已作废" {
  144. AddressOldMap[code] = city
  145. } else {
  146. AddressMap[code] = city
  147. }
  148. }
  149. log.Info("InitAddress", zap.Any("AddressMap", len(AddressMap)), zap.Int("AddressOldMap", len(AddressOldMap)))
  150. }