diff --git a/internal/models/send_stats.go b/internal/models/send_stats.go index 68b6f11..44ceb88 100644 --- a/internal/models/send_stats.go +++ b/internal/models/send_stats.go @@ -1,18 +1,16 @@ package models import ( - "time" - "baihu/internal/constant" ) // SendStats 任务执行统计 type SendStats struct { - ID uint `json:"id" gorm:"primaryKey"` - TaskID uint `json:"task_id" gorm:"index"` - Status string `json:"status" gorm:"size:20;not null"` // success, failed - Num int `json:"num" gorm:"default:0"` - CreatedAt time.Time `json:"created_at"` + ID uint `json:"id" gorm:"primaryKey"` + TaskID uint `json:"task_id" gorm:"uniqueIndex:idx_task_day_status"` + Day string `json:"day" gorm:"size:10;uniqueIndex:idx_task_day_status"` // 格式: 2006-01-02 + Status string `json:"status" gorm:"size:20;uniqueIndex:idx_task_day_status"` + Num int `json:"num" gorm:"default:0"` } func (SendStats) TableName() string { diff --git a/internal/services/send_stats_service.go b/internal/services/send_stats_service.go index 6e7e2f0..facc89a 100644 --- a/internal/services/send_stats_service.go +++ b/internal/services/send_stats_service.go @@ -15,19 +15,18 @@ func NewSendStatsService() *SendStatsService { // IncrementStats 增加任务执行统计 func (s *SendStatsService) IncrementStats(taskID uint, status string) error { - today := time.Now().Format("2006-01-02") - startOfDay, _ := time.ParseInLocation("2006-01-02", today, time.Local) + day := time.Now().Format("2006-01-02") var stats models.SendStats - result := database.DB.Where("task_id = ? AND status = ? AND created_at >= ?", taskID, status, startOfDay).First(&stats) + result := database.DB.Where("task_id = ? AND day = ? AND status = ?", taskID, day, status).First(&stats) if result.Error != nil { // 不存在则创建 stats = models.SendStats{ - TaskID: taskID, - Status: status, - Num: 1, - CreatedAt: time.Now(), + TaskID: taskID, + Day: day, + Status: status, + Num: 1, } return database.DB.Create(&stats).Error } @@ -39,25 +38,22 @@ func (s *SendStatsService) IncrementStats(taskID uint, status string) error { // GetStatsByTaskID 获取任务的统计数据 func (s *SendStatsService) GetStatsByTaskID(taskID uint) []models.SendStats { var stats []models.SendStats - database.DB.Where("task_id = ?", taskID).Order("created_at DESC").Find(&stats) + database.DB.Where("task_id = ?", taskID).Order("day DESC").Find(&stats) return stats } // GetTodayStats 获取今日统计 func (s *SendStatsService) GetTodayStats() []models.SendStats { - today := time.Now().Format("2006-01-02") - startOfDay, _ := time.ParseInLocation("2006-01-02", today, time.Local) - + day := time.Now().Format("2006-01-02") var stats []models.SendStats - database.DB.Where("created_at >= ?", startOfDay).Find(&stats) + database.DB.Where("day = ?", day).Find(&stats) return stats } // GetRecentStats 获取最近N天的统计 func (s *SendStatsService) GetRecentStats(days int) []models.SendStats { - startDate := time.Now().AddDate(0, 0, -days) - + startDay := time.Now().AddDate(0, 0, -days).Format("2006-01-02") var stats []models.SendStats - database.DB.Where("created_at >= ?", startDate).Order("created_at DESC").Find(&stats) + database.DB.Where("day >= ?", startDay).Order("day DESC").Find(&stats) return stats }