extractflow.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package extract
  2. import (
  3. log "github.com/donnie4w/go-logger/logger"
  4. db "jy/mongodbutil"
  5. ju "jy/util"
  6. qu "qfw/util"
  7. )
  8. // 流模式
  9. var ExtFlow *ExtractTask
  10. func InitExtractFlowTask() {
  11. if ExtFlow == nil {
  12. ExtFlow = nil
  13. ExtFlow = &ExtractTask{}
  14. ExtFlow.Id = qu.ObjToString(ju.Config["udptaskid"])
  15. ExtFlow.InitTaskInfo()
  16. ExtFlow.TaskInfo.FDB = db.MgoFactory(3, 5, 600, ExtFlow.TaskInfo.FromDbAddr, ExtFlow.TaskInfo.FromDB)
  17. ExtFlow.TaskInfo.TDB = db.MgoFactory(3, 5, 600, ExtFlow.TaskInfo.ToDbAddr, ExtFlow.TaskInfo.ToDB)
  18. ExtFlow.InitSite()
  19. ExtFlow.InitRulePres()
  20. ExtFlow.InitRuleBacks(false)
  21. ExtFlow.InitRuleBacks(true)
  22. ExtFlow.InitRuleCore(false)
  23. ExtFlow.InitRuleCore(true)
  24. ExtFlow.InitBlockRule()
  25. ExtFlow.InitPkgCore()
  26. ExtFlow.InitTag(false)
  27. ExtFlow.InitTag(true)
  28. ExtFlow.InitClearFn(false)
  29. ExtFlow.InitClearFn(true)
  30. ExtFlow.Lock()
  31. if ExtFlow.IsExtractCity { //版本上控制是否开始城市抽取
  32. ExtFlow.InitCityInfo()
  33. ExtFlow.InitAreaCode()
  34. ExtFlow.InitPostCode()
  35. }
  36. ExtFlow.Unlock()
  37. //质量审核
  38. ExtFlow.InitAuditFields()
  39. ExtFlow.InitAuditRule()
  40. ExtFlow.InitAuditClass()
  41. ExtFlow.InitAuditRecogField()
  42. //品牌抽取是否开启
  43. ju.IsBrandGoods, _ = ju.Config["brandgoods"].(bool)
  44. ExtFlow.InitFile()
  45. ExtFlow.IsRun = true
  46. ExtFlow.BidTotal = 0
  47. }
  48. }
  49. func ExtractByExtFlow(v map[string]interface{}) map[string]interface{} {
  50. defer qu.Catch()
  51. if ju.IsUpdateRule {
  52. ju.IsUpdateRule = false
  53. log.Debug("每天更新一次规则......")
  54. //规则重置
  55. ExtFlow.InitSite()
  56. ExtFlow.InitRulePres()
  57. ExtFlow.InitRuleBacks(false)
  58. ExtFlow.InitRuleBacks(true)
  59. ExtFlow.InitRuleCore(false)
  60. ExtFlow.InitRuleCore(true)
  61. ExtFlow.InitBlockRule()
  62. ExtFlow.InitPkgCore()
  63. ExtFlow.InitTag(false)
  64. ExtFlow.InitTag(true)
  65. ExtFlow.InitClearFn(false)
  66. ExtFlow.InitClearFn(true)
  67. //地域重置
  68. ExtFlow.Lock()
  69. if ExtFlow.IsExtractCity { //版本上控制是否开始城市抽取
  70. ExtFlow.InitCityInfo()
  71. ExtFlow.InitAreaCode()
  72. ExtFlow.InitPostCode()
  73. }
  74. ExtFlow.Unlock()
  75. }
  76. if spidercode[qu.ObjToString(v["spidercode"])] { //临时开标记录
  77. log.Debug(qu.BsonIdToSId(v["_id"]), "//开标记录")
  78. return v
  79. }
  80. //......
  81. var j, jf *ju.Job
  82. var isSite bool
  83. if ExtFlow.IsFileField && (v["projectinfo"] != nil || v["attach_text"] != nil) {
  84. v["isextFile"] = true
  85. j, jf, isSite = ExtFlow.PreInfo(v)
  86. } else {
  87. j, _, isSite = ExtFlow.PreInfo(v)
  88. }
  89. return ExtFlow.ExtractProcessFlow(j, jf, isSite)
  90. }