timer.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package main
  2. import (
  3. "database/sql"
  4. "encoding/json"
  5. "fmt"
  6. "time"
  7. )
  8. var logData string
  9. var logAdmin string
  10. var logDetail string
  11. func init() {
  12. go loadLog()
  13. }
  14. func loadLog() {
  15. logData = "[]"
  16. logAdmin = "[]"
  17. logDetail = "[]"
  18. ticker := time.NewTicker(3 * time.Second)
  19. for {
  20. // user
  21. rows, err := db.Query("select UNIX_TIMESTAMP(`log`.`time`), `user`.`name`, `log`.`type` from `log` LEFT JOIN `user` on `log`.`uid` = `user`.`id` where `log`.`type` != 0 AND `log`.`type` != 3 order by `log`.`time` desc LIMIT 50")
  22. if err != nil {
  23. logData = "[]"
  24. fmt.Printf("loadLog query error: %s\n", err)
  25. continue
  26. }
  27. var data []*LogData
  28. for rows.Next() {
  29. d := &LogData{}
  30. rows.Scan(&d.Time, &d.Name, &d.Type)
  31. data = append(data, d)
  32. }
  33. rows.Close()
  34. j, err := json.Marshal(data)
  35. if err != nil {
  36. logData = "[]"
  37. fmt.Printf("loadLog json error: %s\n", err)
  38. continue
  39. }
  40. logData = string(j)
  41. // admin
  42. rows, err = db.Query("select UNIX_TIMESTAMP(`log`.`time`), `user`.`name`, `log`.`type`, `log`.`admin_msg` from `log` LEFT JOIN `user` on `log`.`uid` = `user`.`id` order by `log`.`time` desc")
  43. if err != nil {
  44. logAdmin = "[]"
  45. fmt.Printf("loadLog query error: %s\n", err)
  46. continue
  47. }
  48. var dataAdmin []*LogDataAdmin
  49. for rows.Next() {
  50. d := &LogDataAdmin{}
  51. rows.Scan(&d.Time, &d.Name, &d.Type, &d.Msg)
  52. dataAdmin = append(dataAdmin, d)
  53. }
  54. rows.Close()
  55. j, err = json.Marshal(dataAdmin)
  56. if err != nil {
  57. logAdmin = "[]"
  58. fmt.Printf("loadLog json error: %s\n", err)
  59. continue
  60. }
  61. logAdmin = string(j)
  62. // select detail
  63. rows, err = db.Query("call get_log_details()")
  64. if err != nil {
  65. logDetail = "[]"
  66. fmt.Printf("loadLog query error: %s\n", err)
  67. continue
  68. }
  69. var dataDetails []*LogDataDetails
  70. for rows.Next() {
  71. d := &LogDataDetails{}
  72. var t sql.NullInt64
  73. err = rows.Scan(&d.Uid, &d.Name, &t, &d.Fail)
  74. d.Time = int(t.Int64)
  75. dataDetails = append(dataDetails, d)
  76. }
  77. rows.Close()
  78. j, err = json.Marshal(dataDetails)
  79. if err != nil {
  80. logDetail = "[]"
  81. fmt.Printf("loadLog json error: %s\n", err)
  82. continue
  83. }
  84. logDetail = string(j)
  85. <-ticker.C
  86. }
  87. }