main.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. )
  17. func main() {
  18. m := flag.Int("m", 0, "模式 0:定时任务 1:非定时任务")
  19. t := flag.String("t", "", "表名")
  20. flag.Parse()
  21. all := []Entity{Raw_user, Raw_product, Action_order, Action_product_record}
  22. if *m == 1 {
  23. if *t == "raw_user" {
  24. run(Raw_user)
  25. } else if *t == "raw_product" {
  26. run(Raw_product)
  27. } else if *t == "action_order" || *t == "action_order_spec" {
  28. run(Action_order)
  29. } else if *t == "action_product_record" {
  30. run(Action_order, Action_product_record)
  31. } else if *t == "" {
  32. run(all...)
  33. }
  34. } else {
  35. SimpleCrontab(false, Config.RunTime, func() {
  36. run(all...)
  37. })
  38. select {}
  39. }
  40. }
  41. //
  42. func run(es ...Entity) {
  43. now := time.Now()
  44. //
  45. var start_unix int64
  46. if TimeTask.Datetime != "" {
  47. start, err := time.ParseInLocation(Date_Full_Layout, TimeTask.Datetime, time.Local)
  48. if err != nil {
  49. log.Fatalln(err)
  50. }
  51. start_unix = start.Unix()
  52. }
  53. //
  54. end_unix := now.Unix()
  55. end_layout := FormatDate(&now, Date_Full_Layout)
  56. log.Println("同步任务开始。。。", fmt.Sprintf("%+v", TimeTask))
  57. //
  58. for _, e := range es {
  59. pool <- true
  60. wait.Add(1)
  61. go func(v Entity) {
  62. defer func() {
  63. <-pool
  64. wait.Done()
  65. }()
  66. v.Run(start_unix, end_unix, TimeTask.Datetime, end_layout)
  67. }(e)
  68. }
  69. //
  70. wait.Wait()
  71. TimeTask.Datetime = end_layout
  72. WriteSysConfig("./timetask.json", &TimeTask)
  73. log.Println("同步任务结束。。。")
  74. }