init.go 4.0 KB

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