| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package services
- import (
- "context"
- "fwh-toolbox-server/cache"
- "fwh-toolbox-server/domain"
- "fwh-toolbox-server/repositories"
- "time"
- )
- // 从数据库获取告警统计
- func GetAlarmStatistics(date *string) (*domain.AlarmStatisticsDashboard, error) {
- currDate, err := getDashboardAlarmDate()
- if err != nil {
- return nil, err
- }
- if date == nil {
- date = currDate
- }
- infoMap, err := GetAlarmStatisticsInfoMap(date)
- if err != nil {
- return nil, err
- }
- codeStatistics := infoMap.CodeStatistics
- siteStatistics := len(infoMap.SiteMap)
- return &domain.AlarmStatisticsDashboard{
- Date: *date,
- CodeStatistics: codeStatistics,
- SiteStatistics: uint(siteStatistics),
- }, nil
- }
- // 从数据库获取告警统计信息详细数据
- func GetAlarmStatisticsInfoMap(date *string) (*domain.AlarmStatisticsItem, error) {
- currDate, err := getDashboardAlarmDate()
- if err != nil {
- return nil, err
- }
- if date == nil {
- date = currDate
- }
- return repositories.GetStatisticsAlarm(*date)
- }
- // 对Dashboard常规数据做缓存
- const (
- RedisKeyDashboardAlarmDate = "fwhtoolbox:dashboard:alarmDate"
- RedisKeyDashboardAlarmWeekly = "fwhtoolbox:dashboard:alarmWeekly"
- RedisKeyDashboardAlarmYearly = "fwhtoolbox:dashboard:alarmYearly"
- )
- func getDashboardAlarmDate() (*string, error) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- var date string
- err := cache.GetJSON(ctx, RedisKeyDashboardAlarmDate, &date)
- if err == nil {
- return &date, nil // 命中缓存
- }
- // 未命中缓存 → 查询数据库
- alarmData, err := repositories.GetLatestStatisticsAlarm()
- if err != nil {
- return nil, err
- }
- date = alarmData.Date
- // 缓存结果 24h
- cache.SetJSON(ctx, RedisKeyDashboardAlarmDate, date, time.Hour*24)
- return &date, nil
- }
|