init.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package ul
  2. import (
  3. "fmt"
  4. log "github.com/donnie4w/go-logger/logger"
  5. "go.mongodb.org/mongo-driver/bson/primitive"
  6. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  7. )
  8. func InitGlobalVar() {
  9. qu.ReadConfig(&SysConfig) //加载配置文件
  10. initMgo()
  11. initPCD()
  12. }
  13. // 初始化mgo
  14. func initMgo() {
  15. Bid_Name, Ext_Name = qu.ObjToString(SysConfig["bid_name"]), qu.ObjToString(SysConfig["ext_name"])
  16. //源数据
  17. b_cfg := *qu.ObjToMap(SysConfig["b_mgo"])
  18. b_local := b_cfg["local"].(bool)
  19. b_addr := qu.ObjToString(b_cfg["addr"])
  20. if b_local {
  21. b_addr = qu.ObjToString(b_cfg["l_addr"])
  22. }
  23. BidMgo = &MongodbSim{
  24. MongodbAddr: b_addr,
  25. DbName: qu.ObjToString(b_cfg["dbname"]),
  26. Size: 10,
  27. UserName: qu.ObjToString(b_cfg["username"]),
  28. Password: qu.ObjToString(b_cfg["password"]),
  29. }
  30. if b_local {
  31. BidMgo.InitPoolDirect()
  32. } else {
  33. BidMgo.InitPool()
  34. }
  35. //源数据
  36. s_cfg := *qu.ObjToMap(SysConfig["s_mgo"])
  37. s_local := s_cfg["local"].(bool)
  38. s_addr := qu.ObjToString(s_cfg["addr"])
  39. if s_local {
  40. s_addr = qu.ObjToString(s_cfg["l_addr"])
  41. }
  42. SourceMgo = &MongodbSim{
  43. MongodbAddr: s_addr,
  44. DbName: qu.ObjToString(s_cfg["dbname"]),
  45. Size: 10,
  46. UserName: qu.ObjToString(s_cfg["username"]),
  47. Password: qu.ObjToString(s_cfg["password"]),
  48. }
  49. if s_local {
  50. SourceMgo.InitPoolDirect()
  51. } else {
  52. SourceMgo.InitPool()
  53. }
  54. //企业数据
  55. qy_cfg := *qu.ObjToMap(SysConfig["qy_mgo"])
  56. qy_local := qy_cfg["local"].(bool)
  57. qy_addr := qu.ObjToString(qy_cfg["addr"])
  58. if qy_local {
  59. qy_addr = qu.ObjToString(qy_cfg["l_addr"])
  60. }
  61. QyxyMgo = &MongodbSim{
  62. MongodbAddr: qy_addr,
  63. DbName: qu.ObjToString(qy_cfg["dbname"]),
  64. Size: 10,
  65. UserName: qu.ObjToString(qy_cfg["username"]),
  66. Password: qu.ObjToString(qy_cfg["password"]),
  67. }
  68. if qy_local {
  69. QyxyMgo.InitPoolDirect()
  70. } else {
  71. QyxyMgo.InitPool()
  72. }
  73. }
  74. // 标准化省市区···
  75. func initPCD() {
  76. S_ProvinceDict = make(map[string][]S_Province, 0)
  77. S_CityDict = make(map[string][]S_City, 0)
  78. S_DistrictDict = make(map[string][]S_District, 0)
  79. q := map[string]interface{}{
  80. "town_code": map[string]interface{}{
  81. "$exists": 0,
  82. },
  83. }
  84. dataArr, _ := QyxyMgo.Find("address_jy_2022", q, nil, nil)
  85. for _, tmp := range dataArr {
  86. district_code := qu.IntAll(tmp["district_code"])
  87. city_code := qu.IntAll(tmp["city_code"])
  88. if district_code > 0 {
  89. province := qu.ObjToString(tmp["province"])
  90. city := qu.ObjToString(tmp["city"])
  91. district := qu.ObjToString(tmp["district"])
  92. data := S_District{province, city, district}
  93. if S_DistrictDict[district] == nil {
  94. S_DistrictDict[district] = []S_District{data}
  95. } else {
  96. arr := S_DistrictDict[district]
  97. arr = append(arr, data)
  98. S_DistrictDict[district] = arr
  99. }
  100. } else {
  101. if city_code > 0 {
  102. province := qu.ObjToString(tmp["province"])
  103. city := qu.ObjToString(tmp["city"])
  104. data := S_City{province, city}
  105. if S_CityDict[city] == nil {
  106. S_CityDict[city] = []S_City{data}
  107. } else {
  108. arr := S_CityDict[city]
  109. arr = append(arr, data)
  110. S_CityDict[city] = arr
  111. }
  112. } else {
  113. province := qu.ObjToString(tmp["province"])
  114. data := S_Province{province}
  115. if S_ProvinceDict[province] == nil {
  116. S_ProvinceDict[province] = []S_Province{data}
  117. } else {
  118. arr := S_ProvinceDict[province]
  119. arr = append(arr, data)
  120. S_ProvinceDict[province] = arr
  121. }
  122. }
  123. }
  124. }
  125. log.Debug(fmt.Sprintf("城市配置加载完毕...省~%d 市~%d 区~%d", len(S_ProvinceDict), len(S_CityDict), len(S_DistrictDict)))
  126. }
  127. // 加载规则...
  128. func InitPnameRules() {
  129. //q := map[string]interface{}{"s_field": "projectname", "pid": "5cdd1c70e138234848c1d776", "delete": false}
  130. //rs, _ := ExtMgo.Find("rule_logicback", q, bson.M{"_id": 1}, nil)
  131. //for _, v := range rs {
  132. // s_rule := qu.ObjToString(v["s_rule"])
  133. // tmp := strings.Split(s_rule, "__")
  134. // pattern := tmp[0]
  135. // if len(tmp) == 2 {
  136. // reg := &ExtReg{Reg: regexp.MustCompile(pattern), Replace: tmp[1]}
  137. // RulesPname = append(RulesPname, reg)
  138. // } else {
  139. // reg := &ExtReg{Reg: regexp.MustCompile(pattern), Replace: ""}
  140. // RulesPname = append(RulesPname, reg)
  141. // }
  142. //}
  143. //log.Debug("加载项目名称规则...", len(RulesPname))
  144. }
  145. func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
  146. p_list := []map[string]interface{}{}
  147. if list_3, ok_3 := t.([]map[string]interface{}); ok_3 {
  148. p_list = list_3
  149. return p_list
  150. }
  151. if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
  152. p_list = qu.ObjArrToMapArr(yl_list_1)
  153. } else {
  154. if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
  155. p_list = qu.ObjArrToMapArr(yl_list_2)
  156. }
  157. }
  158. return p_list
  159. }