init.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. package ent_util
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/ClickHouse/clickhouse-go/v2"
  6. "github.com/ClickHouse/clickhouse-go/v2/lib/driver"
  7. log "github.com/donnie4w/go-logger/logger"
  8. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  9. "jygit.jydev.jianyu360.cn/data_processing/common_utils/elastic"
  10. "runtime"
  11. "time"
  12. )
  13. var (
  14. SourceMgo, QyxyMgo *MongodbSim
  15. SpiMgo, ExtMgo *MongodbSim
  16. MysqlGlobalTool *Mysql
  17. IsLocal, IsDev bool
  18. ClickHouseConn driver.Conn
  19. EsClinet *elastic.Elastic
  20. BuyerClassData = map[string]string{}
  21. RegionCodeData = map[string]string{}
  22. TimeLayout = "2006年01月02日"
  23. TimeLayout_New = "2006-01-02 15:04:05"
  24. Url = "https://www.jianyu360.cn/article/content/%s.html"
  25. )
  26. const (
  27. S_Coll_Name = "bidding"
  28. G_Units_Baseinfo = "dws_f_ent_baseinfo"
  29. G_Units_Contact = "dws_f_ent_contact"
  30. G_Units_Tags = "dws_f_ent_tags"
  31. G_Units_Warning = "dws_f_ent_warning"
  32. )
  33. func InitGlobalVar() {
  34. IsLocal = true
  35. initMgo()
  36. //initMysql()
  37. //initVCode()
  38. //initClickHouse()
  39. //initEs()
  40. }
  41. func initEs() {
  42. url := "http://127.0.0.1:13003"
  43. if !IsLocal {
  44. url = "http://172.17.4.184:19805"
  45. }
  46. EsClinet = &elastic.Elastic{
  47. S_esurl: url,
  48. I_size: 10,
  49. Username: "es_all",
  50. Password: "TopJkO2E_d1x",
  51. }
  52. EsClinet.InitElasticSize()
  53. }
  54. func initClickHouse() {
  55. ClickHouseConn, _ = connectClickhouse()
  56. }
  57. // 初始化mgo
  58. func initMgo() {
  59. if IsLocal {
  60. SourceMgo = &MongodbSim{
  61. MongodbAddr: "127.0.0.1:12005",
  62. DbName: "qfw",
  63. Size: 10,
  64. UserName: "zhengkun",
  65. Password: "zk@123123",
  66. }
  67. SourceMgo.InitPoolDirect()
  68. QyxyMgo = &MongodbSim{
  69. MongodbAddr: "127.0.0.1:12005",
  70. DbName: "mixdata",
  71. Size: 10,
  72. UserName: "zhengkun",
  73. Password: "zk@123123",
  74. }
  75. QyxyMgo.InitPoolDirect()
  76. SpiMgo = &MongodbSim{
  77. MongodbAddr: "127.0.0.1:12004",
  78. DbName: "zhengkun",
  79. Size: 10,
  80. UserName: "",
  81. Password: "",
  82. }
  83. SpiMgo.InitPoolDirect()
  84. ExtMgo = &MongodbSim{
  85. MongodbAddr: "127.0.0.1:12001",
  86. DbName: "qfw",
  87. Size: 10,
  88. UserName: "",
  89. Password: "",
  90. }
  91. ExtMgo.InitPoolDirect()
  92. } else {
  93. SourceMgo = &MongodbSim{
  94. MongodbAddr: "172.17.189.140:27080,172.17.189.141:27081",
  95. DbName: "qfw",
  96. Size: 10,
  97. UserName: "zhengkun",
  98. Password: "zk@123123",
  99. }
  100. SourceMgo.InitPool()
  101. QyxyMgo = &MongodbSim{
  102. MongodbAddr: "172.17.189.140:27080,172.17.189.141:27081",
  103. DbName: "mixdata",
  104. Size: 10,
  105. UserName: "zhengkun",
  106. Password: "zk@123123",
  107. }
  108. QyxyMgo.InitPool()
  109. SpiMgo = &MongodbSim{
  110. MongodbAddr: "172.17.4.181:27001",
  111. DbName: "mixdata",
  112. Size: 10,
  113. UserName: "",
  114. Password: "",
  115. }
  116. SpiMgo.InitPool()
  117. ExtMgo = &MongodbSim{
  118. MongodbAddr: "172.17.4.85:27080",
  119. DbName: "qfw",
  120. Size: 10,
  121. UserName: "",
  122. Password: "",
  123. }
  124. ExtMgo.InitPool()
  125. }
  126. }
  127. func initMysql() {
  128. username, password := "zhengkun", "Zk#20220824"
  129. address := "127.0.0.1:15001"
  130. if !IsLocal {
  131. address = "172.17.4.242:4000"
  132. }
  133. if IsDev {
  134. username, password = "root", "=PDT49#80Z!RVv52_z"
  135. address = "192.168.3.217:4000"
  136. }
  137. MysqlGlobalTool = &Mysql{
  138. Address: address,
  139. UserName: username,
  140. PassWord: password,
  141. DBName: "global_common_data",
  142. }
  143. MysqlGlobalTool.Init()
  144. }
  145. // 加载代码表
  146. func initVCode() {
  147. data_types := MysqlGlobalTool.Find("code_buyerclass", nil, "", "", -1, -1)
  148. //先构建所有一级数据
  149. for _, v := range *data_types {
  150. name := qu.ObjToString(v["name"])
  151. code := qu.ObjToString(v["code"])
  152. BuyerClassData[name] = code
  153. }
  154. BuyerClassData["其它"] = "00"
  155. log.Debug("招标行业分类表~", len(BuyerClassData))
  156. data_regions := MysqlGlobalTool.Find("code_area", nil, "", "", -1, -1)
  157. //先构建所有一级数据
  158. for _, v := range *data_regions {
  159. area := qu.ObjToString(v["area"])
  160. city := qu.ObjToString(v["city"])
  161. district := qu.ObjToString(v["district"])
  162. code := qu.ObjToString(v["code"])
  163. key := area + "~" + city + "~" + district + "~"
  164. RegionCodeData[key] = code
  165. }
  166. log.Debug("地域信息数量~", len(RegionCodeData))
  167. }
  168. // 创建clickhouse连接
  169. func connectClickhouse() (driver.Conn, error) {
  170. var (
  171. ctx = context.Background()
  172. /*
  173. 外网地址:cc-2ze9tv451wov14w9e.public.clickhouse.ads.aliyuncs.com:9000
  174. 内网地址:cc-2ze9tv451wov14w9e.clickhouse.ads.aliyuncs.com:9000
  175. */
  176. conn, err = clickhouse.Open(&clickhouse.Options{
  177. Addr: []string{"cc-2ze9tv451wov14w9e.clickhouse.ads.aliyuncs.com:9000"},
  178. DialTimeout: 10 * time.Second,
  179. MaxIdleConns: 3,
  180. MaxOpenConns: 30,
  181. Auth: clickhouse.Auth{
  182. Database: "information",
  183. Username: "biservice",
  184. Password: "Bi_top95215#",
  185. },
  186. Debugf: func(format string, v ...interface{}) {
  187. fmt.Printf(format, v)
  188. },
  189. })
  190. )
  191. if err != nil {
  192. return nil, err
  193. }
  194. if err := conn.Ping(ctx); err != nil {
  195. if exception, ok := err.(*clickhouse.Exception); ok {
  196. fmt.Printf("Exception [%d] %s \n%s\n", exception.Code, exception.Message, exception.StackTrace)
  197. }
  198. return nil, err
  199. }
  200. return conn, nil
  201. }
  202. // ...
  203. func GetNewInfo(index, query string) map[string]interface{} {
  204. //log.Println("query -- ", query)
  205. client := EsClinet.GetEsConn()
  206. defer EsClinet.DestoryEsConn(client)
  207. res := map[string]interface{}{}
  208. if client != nil {
  209. defer func() {
  210. if r := recover(); r != nil {
  211. log.Debug("[E]", r)
  212. for skip := 1; ; skip++ {
  213. _, file, line, ok := runtime.Caller(skip)
  214. if !ok {
  215. break
  216. }
  217. go log.Debug("%v,%v\n", file, line)
  218. }
  219. }
  220. }()
  221. searchResult, err := client.Search().Index(index).Source(query).Do(context.TODO())
  222. if err != nil {
  223. log.Debug("从ES查询出错", err.Error())
  224. return nil
  225. }
  226. if searchResult.Hits != nil {
  227. resNum := searchResult.Hits.TotalHits.Value
  228. res["total"] = resNum
  229. }
  230. if searchResult.Aggregations != nil {
  231. bidamount_sum, _ := searchResult.Aggregations.Sum("bidamount_sum")
  232. res["bidamount_sum"] = *bidamount_sum.Value
  233. }
  234. }
  235. return res
  236. }