main.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package main
  2. import (
  3. "dbutil/mongo"
  4. "dbutil/redis"
  5. "fmt"
  6. "log"
  7. mu "mfw/util"
  8. "os"
  9. qu "qfw/util"
  10. "regexp"
  11. "strconv"
  12. "strings"
  13. )
  14. var (
  15. MongoFrom /*抽取原*/, MongoTo /*保存库*/, MongoEnt/*企业库*/ *mongo.MongodbSim
  16. sysconfig map[string]interface{}
  17. extractcoll string
  18. winnerent, winnererr string
  19. buyerent, buyererr string
  20. agencyent, agencyerr string
  21. winnerbd, buyerbd, agencybd int
  22. Addrs = make(map[string]interface{}, 0) //省市县
  23. winchanbool = make(chan bool, 3)
  24. buyerchanbool = make(chan bool, 3)
  25. agencychanbool = make(chan bool, 3)
  26. gochan = make(chan bool, 3)
  27. udpclient mu.UdpClient
  28. //异常表正则匹配处理
  29. WinnerRegOk, WinnerRegErr, AgencyRegOk, AgencyRegErr, BuyerRegOk, BuyerRegErr []regexp.Regexp
  30. )
  31. func init() {
  32. qu.ReadConfig(&sysconfig)
  33. extractcoll = qu.ObjToString(sysconfig["extractcoll"])
  34. if standardata, ok := sysconfig["standardata"].(map[string]interface{}); ok {
  35. winner, _ := standardata["winner"].(map[string]interface{})
  36. winnerent = qu.ObjToString(winner["standarent"])
  37. winnererr = qu.ObjToString(winner["standarerr"])
  38. winnerbd = qu.IntAll(winner["redisdb"])
  39. buyer, _ := standardata["buyer"].(map[string]interface{})
  40. buyerent = qu.ObjToString(buyer["standarent"])
  41. buyererr = qu.ObjToString(buyer["standarerr"])
  42. buyerbd = qu.IntAll(buyer["redisdb"])
  43. agency, _ := standardata["agency"].(map[string]interface{})
  44. agencyent = qu.ObjToString(agency["standarent"])
  45. agencyerr = qu.ObjToString(agency["standarerr"])
  46. agencybd = qu.IntAll(agency["redisdb"])
  47. } else {
  48. os.Exit(0)
  49. }
  50. MongoFrom = &mongo.MongodbSim{
  51. MongodbAddr: qu.ObjToString(sysconfig["mgofrom"]),
  52. Size: qu.IntAll(sysconfig["mgofromsize"]),
  53. DbName: qu.ObjToString(sysconfig["mgofromdb"]),
  54. }
  55. MongoFrom.InitPool()
  56. MongoTo = &mongo.MongodbSim{
  57. MongodbAddr: qu.ObjToString(sysconfig["mgoto"]),
  58. Size: qu.IntAll(sysconfig["mgotosize"]),
  59. DbName: qu.ObjToString(sysconfig["mgotodb"]),
  60. }
  61. MongoTo.InitPool()
  62. MongoEnt = &mongo.MongodbSim{
  63. MongodbAddr: qu.ObjToString(sysconfig["mgoent"]),
  64. Size: qu.IntAll(sysconfig["mgoentsize"]),
  65. DbName: qu.ObjToString(sysconfig["mgoentdb"]),
  66. }
  67. MongoEnt.InitPool()
  68. redis.InitRedis(qu.ObjToString(sysconfig["redis"]))
  69. //加载省市县代码
  70. list, _ := MongoTo.Find("address", map[string]interface{}{}, nil, nil)
  71. for _, v := range list {
  72. code := v["code"]
  73. if code != nil && strings.TrimSpace(code.(string)) != "" {
  74. Addrs[fmt.Sprint(code)] = v
  75. }
  76. }
  77. log.Println("加载省市县代码加载完成", len(Addrs))
  78. initReg() //初始标记规则
  79. }
  80. func initReg() {
  81. list, _ := MongoTo.Find("rc_rule", map[string]interface{}{"delete": false, "isuse": true}, nil, nil)
  82. for _, v := range list {
  83. s_field, ok := v["s_field"].(string) //字段
  84. s_rule, ok2 := v["s_rule"].(string) //正则
  85. s_type, ok3 := v["s_type"].(string) //ok or err
  86. if !ok || !ok2 || !ok3 || s_field == "" || s_rule == "" || s_type == "" {
  87. continue
  88. }
  89. var pattern string
  90. if strings.Contains(s_rule, "\\u") {
  91. s_rule = strings.Replace(s_rule, "\\", "\\\\", -1)
  92. s_rule = strings.Replace(s_rule, "\\\\u", "\\u", -1)
  93. pattern, _ = strconv.Unquote(`"` + s_rule + `"`)
  94. } else {
  95. pattern = s_rule
  96. }
  97. regtmp := regexp.MustCompile(pattern)
  98. if s_field == "winner" {
  99. if s_type == "ok" {
  100. WinnerRegOk = append(WinnerRegOk, *regtmp)
  101. } else if s_type == "err" {
  102. WinnerRegErr = append(WinnerRegErr, *regtmp)
  103. }
  104. } else if s_field == "buyer" {
  105. if s_type == "ok" {
  106. BuyerRegOk = append(BuyerRegOk, *regtmp)
  107. } else if s_type == "err" {
  108. BuyerRegErr = append(BuyerRegErr, *regtmp)
  109. }
  110. } else if s_field == "agency" {
  111. if s_type == "ok" {
  112. AgencyRegOk = append(AgencyRegOk, *regtmp)
  113. } else if s_type == "err" {
  114. AgencyRegErr = append(AgencyRegErr, *regtmp)
  115. }
  116. }
  117. }
  118. log.Println(len(WinnerRegOk), len(WinnerRegErr), len(BuyerRegOk), len(BuyerRegErr), len(AgencyRegOk), len(AgencyRegErr))
  119. }
  120. func main() {
  121. //go historywinner(qu.ObjToString(sysconfig["mgofromdb"]), extractcoll)
  122. //go historybuyer(qu.ObjToString(sysconfig["mgofromdb"]), extractcoll)
  123. //go historyagency(qu.ObjToString(sysconfig["mgofromdb"]), extractcoll)
  124. go task_standarData()
  125. c := make(chan int, 1)
  126. <-c
  127. }