init.go 6.3 KB

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