init.go 6.6 KB

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