init.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  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. func InitToolVar() {
  14. qu.ReadConfig("./tool.json", &ToolConfig) //加载配置文件
  15. initToolMgo()
  16. initPCD()
  17. }
  18. // 初始化mgo
  19. func initMgo() {
  20. Reading = qu.IntAll(SysConfig["reading"])
  21. if Reading == 0 {
  22. Reading = 500
  23. }
  24. Bid_Name, Ext_Name = qu.ObjToString(SysConfig["bid_name"]), qu.ObjToString(SysConfig["ext_name"])
  25. //源数据
  26. b_cfg := *qu.ObjToMap(SysConfig["b_mgo"])
  27. b_local := b_cfg["local"].(bool)
  28. b_addr := qu.ObjToString(b_cfg["addr"])
  29. if b_local {
  30. b_addr = qu.ObjToString(b_cfg["l_addr"])
  31. }
  32. BidMgo = &MongodbSim{
  33. MongodbAddr: b_addr,
  34. DbName: qu.ObjToString(b_cfg["dbname"]),
  35. Size: 10,
  36. UserName: qu.ObjToString(b_cfg["username"]),
  37. Password: qu.ObjToString(b_cfg["password"]),
  38. }
  39. if b_local {
  40. BidMgo.InitPoolDirect()
  41. } else {
  42. BidMgo.InitPool()
  43. }
  44. //源数据
  45. s_cfg := *qu.ObjToMap(SysConfig["s_mgo"])
  46. s_local := s_cfg["local"].(bool)
  47. s_addr := qu.ObjToString(s_cfg["addr"])
  48. if s_local {
  49. s_addr = qu.ObjToString(s_cfg["l_addr"])
  50. }
  51. SourceMgo = &MongodbSim{
  52. MongodbAddr: s_addr,
  53. DbName: qu.ObjToString(s_cfg["dbname"]),
  54. Size: 10,
  55. UserName: qu.ObjToString(s_cfg["username"]),
  56. Password: qu.ObjToString(s_cfg["password"]),
  57. }
  58. if s_local {
  59. SourceMgo.InitPoolDirect()
  60. } else {
  61. SourceMgo.InitPool()
  62. }
  63. //企业数据
  64. qy_cfg := *qu.ObjToMap(SysConfig["qy_mgo"])
  65. qy_local := qy_cfg["local"].(bool)
  66. qy_addr := qu.ObjToString(qy_cfg["addr"])
  67. if qy_local {
  68. qy_addr = qu.ObjToString(qy_cfg["l_addr"])
  69. }
  70. QyxyMgo = &MongodbSim{
  71. MongodbAddr: qy_addr,
  72. DbName: qu.ObjToString(qy_cfg["dbname"]),
  73. Size: 10,
  74. UserName: qu.ObjToString(qy_cfg["username"]),
  75. Password: qu.ObjToString(qy_cfg["password"]),
  76. }
  77. if qy_local {
  78. QyxyMgo.InitPoolDirect()
  79. } else {
  80. QyxyMgo.InitPool()
  81. }
  82. }
  83. // 初始化mgo
  84. func initToolMgo() {
  85. Bid_Name, Ext_Name = qu.ObjToString(ToolConfig["bid_name"]), qu.ObjToString(ToolConfig["ext_name"])
  86. //源数据
  87. b_cfg := *qu.ObjToMap(ToolConfig["b_mgo"])
  88. b_local := b_cfg["local"].(bool)
  89. b_addr := qu.ObjToString(b_cfg["addr"])
  90. if b_local {
  91. b_addr = qu.ObjToString(b_cfg["l_addr"])
  92. }
  93. BidMgo = &MongodbSim{
  94. MongodbAddr: b_addr,
  95. DbName: qu.ObjToString(b_cfg["dbname"]),
  96. Size: 10,
  97. UserName: qu.ObjToString(b_cfg["username"]),
  98. Password: qu.ObjToString(b_cfg["password"]),
  99. }
  100. if b_local {
  101. BidMgo.InitPoolDirect()
  102. } else {
  103. BidMgo.InitPool()
  104. }
  105. //源数据
  106. s_cfg := *qu.ObjToMap(ToolConfig["s_mgo"])
  107. s_local := s_cfg["local"].(bool)
  108. s_addr := qu.ObjToString(s_cfg["addr"])
  109. if s_local {
  110. s_addr = qu.ObjToString(s_cfg["l_addr"])
  111. }
  112. SourceMgo = &MongodbSim{
  113. MongodbAddr: s_addr,
  114. DbName: qu.ObjToString(s_cfg["dbname"]),
  115. Size: 10,
  116. UserName: qu.ObjToString(s_cfg["username"]),
  117. Password: qu.ObjToString(s_cfg["password"]),
  118. }
  119. if s_local {
  120. SourceMgo.InitPoolDirect()
  121. } else {
  122. SourceMgo.InitPool()
  123. }
  124. //企业数据
  125. qy_cfg := *qu.ObjToMap(ToolConfig["qy_mgo"])
  126. qy_local := qy_cfg["local"].(bool)
  127. qy_addr := qu.ObjToString(qy_cfg["addr"])
  128. if qy_local {
  129. qy_addr = qu.ObjToString(qy_cfg["l_addr"])
  130. }
  131. QyxyMgo = &MongodbSim{
  132. MongodbAddr: qy_addr,
  133. DbName: qu.ObjToString(qy_cfg["dbname"]),
  134. Size: 10,
  135. UserName: qu.ObjToString(qy_cfg["username"]),
  136. Password: qu.ObjToString(qy_cfg["password"]),
  137. }
  138. if qy_local {
  139. QyxyMgo.InitPoolDirect()
  140. } else {
  141. QyxyMgo.InitPool()
  142. }
  143. }
  144. // 标准化省市区···
  145. func initPCD() {
  146. S_ProvinceDict = make(map[string][]S_Province, 0)
  147. S_CityDict = make(map[string][]S_City, 0)
  148. S_DistrictDict = make(map[string][]S_District, 0)
  149. q := map[string]interface{}{
  150. "town_code": map[string]interface{}{
  151. "$exists": 0,
  152. },
  153. }
  154. dataArr, _ := QyxyMgo.Find("address_jy_2022", q, nil, nil)
  155. for _, tmp := range dataArr {
  156. district_code := qu.IntAll(tmp["district_code"])
  157. city_code := qu.IntAll(tmp["city_code"])
  158. if district_code > 0 {
  159. province := qu.ObjToString(tmp["province"])
  160. city := qu.ObjToString(tmp["city"])
  161. district := qu.ObjToString(tmp["district"])
  162. data := S_District{province, city, district}
  163. if S_DistrictDict[district] == nil {
  164. S_DistrictDict[district] = []S_District{data}
  165. } else {
  166. arr := S_DistrictDict[district]
  167. arr = append(arr, data)
  168. S_DistrictDict[district] = arr
  169. }
  170. } else {
  171. if city_code > 0 {
  172. province := qu.ObjToString(tmp["province"])
  173. city := qu.ObjToString(tmp["city"])
  174. data := S_City{province, city}
  175. if S_CityDict[city] == nil {
  176. S_CityDict[city] = []S_City{data}
  177. } else {
  178. arr := S_CityDict[city]
  179. arr = append(arr, data)
  180. S_CityDict[city] = arr
  181. }
  182. } else {
  183. province := qu.ObjToString(tmp["province"])
  184. data := S_Province{province}
  185. if S_ProvinceDict[province] == nil {
  186. S_ProvinceDict[province] = []S_Province{data}
  187. } else {
  188. arr := S_ProvinceDict[province]
  189. arr = append(arr, data)
  190. S_ProvinceDict[province] = arr
  191. }
  192. }
  193. }
  194. }
  195. log.Debug(fmt.Sprintf("城市配置加载完毕...省~%d 市~%d 区~%d", len(S_ProvinceDict), len(S_CityDict), len(S_DistrictDict)))
  196. }
  197. // 加载规则...
  198. func InitPnameRules() {
  199. //q := map[string]interface{}{"s_field": "projectname", "pid": "5cdd1c70e138234848c1d776", "delete": false}
  200. //rs, _ := ExtMgo.Find("rule_logicback", q, bson.M{"_id": 1}, nil)
  201. //for _, v := range rs {
  202. // s_rule := qu.ObjToString(v["s_rule"])
  203. // tmp := strings.Split(s_rule, "__")
  204. // pattern := tmp[0]
  205. // if len(tmp) == 2 {
  206. // reg := &ExtReg{Reg: regexp.MustCompile(pattern), Replace: tmp[1]}
  207. // RulesPname = append(RulesPname, reg)
  208. // } else {
  209. // reg := &ExtReg{Reg: regexp.MustCompile(pattern), Replace: ""}
  210. // RulesPname = append(RulesPname, reg)
  211. // }
  212. //}
  213. //log.Debug("加载项目名称规则...", len(RulesPname))
  214. }
  215. func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
  216. p_list := []map[string]interface{}{}
  217. if list_3, ok_3 := t.([]map[string]interface{}); ok_3 {
  218. p_list = list_3
  219. return p_list
  220. }
  221. if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
  222. p_list = qu.ObjArrToMapArr(yl_list_1)
  223. } else {
  224. if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
  225. p_list = qu.ObjArrToMapArr(yl_list_2)
  226. }
  227. }
  228. return p_list
  229. }