108 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package repositories
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"time"
 | |
| 
 | |
| 	"tyapi-server/internal/domains/statistics/entities"
 | |
| )
 | |
| 
 | |
| // StatisticsRepository 统计指标仓储接口
 | |
| type StatisticsRepository interface {
 | |
| 	// 基础CRUD操作
 | |
| 	Save(ctx context.Context, metric *entities.StatisticsMetric) error
 | |
| 	FindByID(ctx context.Context, id string) (*entities.StatisticsMetric, error)
 | |
| 	FindByType(ctx context.Context, metricType string, limit, offset int) ([]*entities.StatisticsMetric, error)
 | |
| 	Update(ctx context.Context, metric *entities.StatisticsMetric) error
 | |
| 	Delete(ctx context.Context, id string) error
 | |
| 
 | |
| 	// 按类型和日期范围查询
 | |
| 	FindByTypeAndDateRange(ctx context.Context, metricType string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
 | |
| 	FindByTypeDimensionAndDateRange(ctx context.Context, metricType, dimension string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
 | |
| 	FindByTypeNameAndDateRange(ctx context.Context, metricType, metricName string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
 | |
| 
 | |
| 	// 聚合查询
 | |
| 	GetAggregatedMetrics(ctx context.Context, metricType, dimension string, startDate, endDate time.Time) (map[string]float64, error)
 | |
| 	GetMetricsByDimension(ctx context.Context, dimension string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
 | |
| 
 | |
| 	// 统计查询
 | |
| 	CountByType(ctx context.Context, metricType string) (int64, error)
 | |
| 	CountByTypeAndDateRange(ctx context.Context, metricType string, startDate, endDate time.Time) (int64, error)
 | |
| 
 | |
| 	// 批量操作
 | |
| 	BatchSave(ctx context.Context, metrics []*entities.StatisticsMetric) error
 | |
| 	BatchDelete(ctx context.Context, ids []string) error
 | |
| 
 | |
| 	// 清理操作
 | |
| 	DeleteByDateRange(ctx context.Context, startDate, endDate time.Time) error
 | |
| 	DeleteByTypeAndDateRange(ctx context.Context, metricType string, startDate, endDate time.Time) error
 | |
| }
 | |
| 
 | |
| // StatisticsReportRepository 统计报告仓储接口
 | |
| type StatisticsReportRepository interface {
 | |
| 	// 基础CRUD操作
 | |
| 	Save(ctx context.Context, report *entities.StatisticsReport) error
 | |
| 	FindByID(ctx context.Context, id string) (*entities.StatisticsReport, error)
 | |
| 	FindByUser(ctx context.Context, userID string, limit, offset int) ([]*entities.StatisticsReport, error)
 | |
| 	FindByStatus(ctx context.Context, status string) ([]*entities.StatisticsReport, error)
 | |
| 	Update(ctx context.Context, report *entities.StatisticsReport) error
 | |
| 	Delete(ctx context.Context, id string) error
 | |
| 
 | |
| 	// 按类型查询
 | |
| 	FindByType(ctx context.Context, reportType string, limit, offset int) ([]*entities.StatisticsReport, error)
 | |
| 	FindByTypeAndPeriod(ctx context.Context, reportType, period string, limit, offset int) ([]*entities.StatisticsReport, error)
 | |
| 
 | |
| 	// 按日期范围查询
 | |
| 	FindByDateRange(ctx context.Context, startDate, endDate time.Time, limit, offset int) ([]*entities.StatisticsReport, error)
 | |
| 	FindByUserAndDateRange(ctx context.Context, userID string, startDate, endDate time.Time, limit, offset int) ([]*entities.StatisticsReport, error)
 | |
| 
 | |
| 	// 统计查询
 | |
| 	CountByUser(ctx context.Context, userID string) (int64, error)
 | |
| 	CountByType(ctx context.Context, reportType string) (int64, error)
 | |
| 	CountByStatus(ctx context.Context, status string) (int64, error)
 | |
| 
 | |
| 	// 批量操作
 | |
| 	BatchSave(ctx context.Context, reports []*entities.StatisticsReport) error
 | |
| 	BatchDelete(ctx context.Context, ids []string) error
 | |
| 
 | |
| 	// 清理操作
 | |
| 	DeleteExpiredReports(ctx context.Context, expiredBefore time.Time) error
 | |
| 	DeleteByStatus(ctx context.Context, status string) error
 | |
| }
 | |
| 
 | |
| // StatisticsDashboardRepository 统计仪表板仓储接口
 | |
| type StatisticsDashboardRepository interface {
 | |
| 	// 基础CRUD操作
 | |
| 	Save(ctx context.Context, dashboard *entities.StatisticsDashboard) error
 | |
| 	FindByID(ctx context.Context, id string) (*entities.StatisticsDashboard, error)
 | |
| 	FindByUser(ctx context.Context, userID string, limit, offset int) ([]*entities.StatisticsDashboard, error)
 | |
| 	FindByUserRole(ctx context.Context, userRole string, limit, offset int) ([]*entities.StatisticsDashboard, error)
 | |
| 	Update(ctx context.Context, dashboard *entities.StatisticsDashboard) error
 | |
| 	Delete(ctx context.Context, id string) error
 | |
| 
 | |
| 	// 按角色查询
 | |
| 	FindByRole(ctx context.Context, userRole string, limit, offset int) ([]*entities.StatisticsDashboard, error)
 | |
| 	FindDefaultByRole(ctx context.Context, userRole string) (*entities.StatisticsDashboard, error)
 | |
| 	FindActiveByRole(ctx context.Context, userRole string, limit, offset int) ([]*entities.StatisticsDashboard, error)
 | |
| 
 | |
| 	// 按状态查询
 | |
| 	FindByStatus(ctx context.Context, isActive bool, limit, offset int) ([]*entities.StatisticsDashboard, error)
 | |
| 	FindByAccessLevel(ctx context.Context, accessLevel string, limit, offset int) ([]*entities.StatisticsDashboard, error)
 | |
| 
 | |
| 	// 统计查询
 | |
| 	CountByUser(ctx context.Context, userID string) (int64, error)
 | |
| 	CountByRole(ctx context.Context, userRole string) (int64, error)
 | |
| 	CountByStatus(ctx context.Context, isActive bool) (int64, error)
 | |
| 
 | |
| 	// 批量操作
 | |
| 	BatchSave(ctx context.Context, dashboards []*entities.StatisticsDashboard) error
 | |
| 	BatchDelete(ctx context.Context, ids []string) error
 | |
| 
 | |
| 	// 特殊操作
 | |
| 	SetDefaultDashboard(ctx context.Context, dashboardID string) error
 | |
| 	RemoveDefaultDashboard(ctx context.Context, userRole string) error
 | |
| 	ActivateDashboard(ctx context.Context, dashboardID string) error
 | |
| 	DeactivateDashboard(ctx context.Context, dashboardID string) error
 | |
| }
 | |
| 
 |