shutdownStatisticsControllers.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * Shutdown Statistics API List
  3. * /dashboard/shutdownStatistics/date - GET shutdown统计最新日期
  4. * /dashboard/shutdownStatistics - GET shutdown统计
  5. */
  6. package controllers
  7. import (
  8. "fwh-toolbox-server/dto"
  9. "fwh-toolbox-server/services"
  10. "time"
  11. "github.com/gofiber/fiber/v2"
  12. )
  13. // 获取shutdown统计最新日期
  14. // /dashboard/shutdownStatistics/date
  15. func GetShutdownStatisticsDate(c *fiber.Ctx) error {
  16. date, err := services.GetShutdownStatisticsDate()
  17. if err != nil {
  18. return Error(c, "Shutdown statistics date read failed.")
  19. }
  20. return Success(c, date)
  21. }
  22. // 获取shutdown统计
  23. // /dashboard/shutdownStatistics
  24. func GetShutdownStatistics(c *fiber.Ctx) error {
  25. date := c.Query("date", "")
  26. var pDate *string = nil
  27. if date != "" {
  28. pDate = &date
  29. }
  30. // 提取月份
  31. t, err := time.Parse(time.DateOnly, date)
  32. if err != nil {
  33. return Fail(c, "Invalid request para date.")
  34. }
  35. month := t.Month()
  36. data, err := services.GetShutdownStatistics(pDate)
  37. if err != nil {
  38. return Error(c, "Shutdown statistics read failed.")
  39. }
  40. // 转换数据输出结构
  41. return Success(c, dto.ShutdownStatisticsInfo{
  42. Date: data.Date,
  43. DayTotal: dto.ShutdownStatisticsDayItem{
  44. Count: data.Weekly.ALL[6],
  45. Growth: int(int64(data.Weekly.ALL[6]) - int64(data.Weekly.ALL[5])),
  46. Weekly: data.Weekly.ALL,
  47. MonthCount: data.Yearly.ALL[month-1],
  48. Year: data.Yearly.ALL,
  49. },
  50. UsTotal: dto.ShutdownStatisticsDayItem{
  51. Count: data.Weekly.US[6],
  52. Growth: int(int64(data.Weekly.US[6]) - int64(data.Weekly.US[5])),
  53. Weekly: data.Weekly.US,
  54. MonthCount: data.Yearly.US[month-1],
  55. Year: data.Yearly.US,
  56. },
  57. AuTotal: dto.ShutdownStatisticsDayItem{
  58. Count: data.Weekly.AU[6],
  59. Growth: int(int64(data.Weekly.AU[6]) - int64(data.Weekly.AU[5])),
  60. Weekly: data.Weekly.AU,
  61. MonthCount: data.Yearly.AU[month-1],
  62. Year: data.Yearly.AU,
  63. },
  64. })
  65. }