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 | ||
|  | } | ||
|  | 
 |