init.go 7.3 KB

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