main.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. mu "mfw/util"
  6. mgoutil "mongodb"
  7. "net"
  8. "qfw/util"
  9. es "qfw/util/elastic"
  10. "github.com/donnie4w/go-logger/logger"
  11. )
  12. var (
  13. Sysconfig map[string]interface{}
  14. Es *es.Elastic
  15. Index string
  16. Itype string
  17. MongoTool *mgoutil.MongodbSim
  18. Dbname string
  19. CollPro string //项目表
  20. MixMgo *mgoutil.MongodbSim
  21. CollTag string //标签表
  22. CollSave string
  23. CollEnt string
  24. Rate string
  25. Forecast map[string][]string
  26. Category []string
  27. NatureMap map[string]bool
  28. ProjectTypeMap map[string]bool
  29. udpclient mu.UdpClient
  30. )
  31. var MgoSaveCache = make(chan map[string]interface{}, 2000)
  32. var SP = make(chan bool, 5)
  33. func init() {
  34. util.ReadConfig(&Sysconfig)
  35. //mgo
  36. Dbname = Sysconfig["dbname"].(string)
  37. CollPro = Sysconfig["dbcoll"].(string)
  38. MongoTool = &mgoutil.MongodbSim{
  39. MongodbAddr: Sysconfig["mgodb"].(string),
  40. Size: util.IntAll(Sysconfig["dbsize"]),
  41. DbName: Dbname,
  42. UserName: util.ObjToString(Sysconfig["username"]),
  43. Password: util.ObjToString(Sysconfig["password"]),
  44. }
  45. MongoTool.InitPool()
  46. //mixdata
  47. mixConfig := Sysconfig["mixdata"].(map[string]interface{})
  48. CollTag = mixConfig["tagcoll"].(string)
  49. CollSave = mixConfig["savecoll"].(string)
  50. CollEnt = mixConfig["buyer_ent"].(string)
  51. MixMgo = &mgoutil.MongodbSim{
  52. MongodbAddr: mixConfig["addr"].(string),
  53. Size: util.IntAll(mixConfig["size"]),
  54. DbName: mixConfig["db"].(string),
  55. UserName: util.ObjToString(Sysconfig["username"]),
  56. Password: util.ObjToString(Sysconfig["password"]),
  57. }
  58. MixMgo.InitPool()
  59. //es
  60. econf := Sysconfig["elastic"].(map[string]interface{})
  61. Es = &es.Elastic{
  62. S_esurl: econf["addr"].(string),
  63. I_size: util.IntAllDef(econf["pool"], 12),
  64. }
  65. Es.InitElasticSize()
  66. Index = econf["index"].(string)
  67. Itype = econf["itype"].(string)
  68. //other
  69. Rate = util.ObjToString(Sysconfig["rate"])
  70. Forecast = make(map[string][]string)
  71. ForecastTmp := Sysconfig["forecast"].(map[string]interface{})
  72. for k, v := range ForecastTmp {
  73. Forecast[k] = util.ObjArrToStringArr(v.([]interface{}))
  74. }
  75. log.Println("Forecast", Forecast)
  76. // Forecast2 = make(map[string][]interface{})
  77. // Forecast2Tmp := Sysconfig["forecast2"].(map[string]interface{})
  78. // for k, v := range Forecast2Tmp {
  79. // tmp := v.([]interface{})
  80. // Forecast2[k] = tmp
  81. // }
  82. // log.Println("Forecast2", Forecast2)
  83. NatureMap = make(map[string]bool)
  84. for _, nature := range util.ObjArrToStringArr(Sysconfig["nature"].([]interface{})) {
  85. NatureMap[nature] = true
  86. }
  87. log.Println("NatureMap:", NatureMap)
  88. ProjectTypeMap = make(map[string]bool)
  89. for _, projecttype := range util.ObjArrToStringArr(Sysconfig["projecttype"].([]interface{})) {
  90. ProjectTypeMap[projecttype] = true
  91. }
  92. log.Println("ProjectTypeMap:", ProjectTypeMap)
  93. //udp
  94. udpport, _ := Sysconfig["udpport"].(string)
  95. udpclient = mu.UdpClient{Local: udpport, BufSize: 1024}
  96. udpclient.Listen(processUdpMsg)
  97. log.Println("Udp服务监听", udpport)
  98. logger.SetRollingDaily("./logs", "projectinfo.log")
  99. go SaveMgo()
  100. }
  101. func main() {
  102. //GetProjectData("5e718afd50b5ea296ee1477e", "5e718afd50b5ea296ee1477f") //手动任务
  103. ch := make(chan bool, 1)
  104. <-ch
  105. }
  106. //udp调用信号
  107. func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
  108. var mapInfo map[string]interface{}
  109. err := json.Unmarshal(data, &mapInfo)
  110. util.Debug("err:", err, "mapInfo:", mapInfo)
  111. if err != nil {
  112. logger.Debug("udp error mapInfo:", mapInfo)
  113. //_ = udpclient.WriteUdp([]byte("err:"+err.Error()), mu.OP_NOOP, ra)
  114. } else if mapInfo != nil {
  115. gtid := util.ObjToString(mapInfo["gtid"])
  116. lteid := util.ObjToString(mapInfo["lteid"])
  117. if gtid == "" || lteid == "" {
  118. logger.Debug("udp id err mapInfo:", mapInfo)
  119. } else {
  120. GetProjectData(gtid, lteid)
  121. }
  122. }
  123. }