This commit is contained in:
2025-09-12 01:15:09 +08:00
parent c563b2266b
commit e05ad9e223
103 changed files with 20034 additions and 1041 deletions

View File

@@ -0,0 +1,107 @@
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
}