rtlogin.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package events
  2. import (
  3. "fmt"
  4. "os"
  5. "time"
  6. "github.com/astaxie/beego"
  7. "github.com/tealeg/xlsx"
  8. )
  9. func RtLogin_get_range_day_time_count(serverId string) ([]*tgSeries, []string) {
  10. var series []*tgSeries
  11. date := time.Now().Format("2006-01-02")
  12. item := &tgSeries{}
  13. glCount, totalCount := Login_get_day_time_count(date, serverId)
  14. item.Name = date + fmt.Sprintf(" 活跃人数:%d", totalCount)
  15. for i := 0; i < 289; i++ {
  16. item.Data = append(item.Data, glCount[i])
  17. }
  18. item.MapCount = glCount
  19. series = append(series, item)
  20. // log.Printf("login date[%s] item[%v]", date, item)
  21. var arrCate []string
  22. loc, _ := time.LoadLocation("Local")
  23. theTime, _ := time.ParseInLocation("2006-01-02 15:04:05", time.Now().Format("2006-01-02")+" 00:00:00", loc)
  24. for i := 0; i < 289; i++ {
  25. ti := theTime.Add(time.Minute * 5 * time.Duration(i))
  26. arrCate = append(arrCate, fmt.Sprintf("%02d:%02d:%02d", ti.Hour(), ti.Minute(), ti.Second()))
  27. }
  28. return series, arrCate
  29. }
  30. // 保存文件
  31. func Save_rtlogin_records(series []*tgSeries, user string) string {
  32. var file *xlsx.File
  33. var sheet *xlsx.Sheet
  34. var row *xlsx.Row
  35. var err error
  36. file = xlsx.NewFile()
  37. date := time.Now().Format("2006-01-02")
  38. sheet, err = file.AddSheet(fmt.Sprintf("%s实时登录分布", date))
  39. if err != nil {
  40. beego.Warn(err)
  41. return ""
  42. }
  43. row = sheet.AddRow()
  44. row.AddCell().Value = "时间"
  45. row.AddCell().Value = "人数"
  46. loc, _ := time.LoadLocation("Local")
  47. theTime, _ := time.ParseInLocation("2006-01-02 15:04:05", date+" 00:00:00", loc)
  48. for i := 0; i < len(series); i++ {
  49. item := series[i]
  50. for k, v := range item.MapCount {
  51. row = sheet.AddRow()
  52. ti := theTime.Add(time.Minute * 5 * time.Duration(k))
  53. row.AddCell().SetString(fmt.Sprintf("%02d:%02d:%02d", ti.Hour(), ti.Minute(), ti.Second()))
  54. row.AddCell().SetInt(v)
  55. }
  56. }
  57. name := fmt.Sprintf("./static/统计-实时登录-%s-%s.xlsx", user, date)
  58. os.Remove(name)
  59. err = file.Save(name)
  60. if err != nil {
  61. beego.Warn(err)
  62. return ""
  63. }
  64. return name
  65. }