main.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "log"
  6. . "online_datasync/config"
  7. . "online_datasync/entity"
  8. "sync"
  9. "time"
  10. . "app.yhyue.com/moapp/jybase/common"
  11. . "app.yhyue.com/moapp/jybase/date"
  12. )
  13. var (
  14. wait = &sync.WaitGroup{}
  15. pool = make(chan bool, Config.SyncPool)
  16. allMap = map[string]Entity{
  17. "raw_user": Raw_user,
  18. "bxt_raw_user": Bxt_raw_user,
  19. //"raw_product": Raw_product,
  20. //"action_order": Action_order,
  21. //"action_order_spec": Action_order,
  22. //"action_product_record": Action_product_record,
  23. //"user_prize": User_prize,
  24. "integral_flow": Integral_flow,
  25. //"point_type": Point_type,
  26. }
  27. )
  28. func main() {
  29. m := flag.Int("m", 0, "模式 0:定时任务 1:非定时任务")
  30. t := flag.String("t", "", "表名")
  31. flag.Parse()
  32. all := []Entity{}
  33. for _, v := range allMap {
  34. all = append(all, v)
  35. }
  36. if *m == 1 {
  37. if *t == "" {
  38. run(all...)
  39. } else if allMap[*t] != nil {
  40. run(allMap[*t])
  41. } else {
  42. log.Fatalln(*t, "表的同步数据任务不存在")
  43. }
  44. } else {
  45. SimpleCrontab(false, Config.RunTime, func() {
  46. run(all...)
  47. })
  48. select {}
  49. }
  50. }
  51. //
  52. func run(es ...Entity) {
  53. now := time.Now()
  54. //
  55. var start_unix int64
  56. if TimeTask.Datetime != "" {
  57. start, err := time.ParseInLocation(Date_Full_Layout, TimeTask.Datetime, time.Local)
  58. if err != nil {
  59. log.Fatalln(err)
  60. }
  61. start_unix = start.Unix()
  62. }
  63. //
  64. end_unix := now.Unix()
  65. end_layout := FormatDate(&now, Date_Full_Layout)
  66. log.Println("同步任务开始。。。", fmt.Sprintf("%+v", TimeTask))
  67. //
  68. for _, e := range es {
  69. pool <- true
  70. wait.Add(1)
  71. go func(v Entity) {
  72. defer func() {
  73. <-pool
  74. wait.Done()
  75. }()
  76. v.Run(start_unix, end_unix, TimeTask.Datetime, end_layout)
  77. }(e)
  78. }
  79. //
  80. wait.Wait()
  81. TimeTask.Datetime = end_layout
  82. WriteSysConfig("./timetask.json", &TimeTask)
  83. log.Println("同步任务结束。。。")
  84. }