166 lines
5.3 KiB
Go
166 lines
5.3 KiB
Go
|
|
package routes
|
||
|
|
|
||
|
|
import (
|
||
|
|
"tyapi-server/internal/infrastructure/http/handlers"
|
||
|
|
sharedhttp "tyapi-server/internal/shared/http"
|
||
|
|
"tyapi-server/internal/shared/middleware"
|
||
|
|
|
||
|
|
"go.uber.org/zap"
|
||
|
|
)
|
||
|
|
|
||
|
|
// StatisticsRoutes 统计路由
|
||
|
|
type StatisticsRoutes struct {
|
||
|
|
statisticsHandler *handlers.StatisticsHandler
|
||
|
|
auth *middleware.JWTAuthMiddleware
|
||
|
|
optionalAuth *middleware.OptionalAuthMiddleware
|
||
|
|
admin *middleware.AdminAuthMiddleware
|
||
|
|
logger *zap.Logger
|
||
|
|
}
|
||
|
|
|
||
|
|
// NewStatisticsRoutes 创建统计路由
|
||
|
|
func NewStatisticsRoutes(
|
||
|
|
statisticsHandler *handlers.StatisticsHandler,
|
||
|
|
auth *middleware.JWTAuthMiddleware,
|
||
|
|
optionalAuth *middleware.OptionalAuthMiddleware,
|
||
|
|
admin *middleware.AdminAuthMiddleware,
|
||
|
|
logger *zap.Logger,
|
||
|
|
) *StatisticsRoutes {
|
||
|
|
return &StatisticsRoutes{
|
||
|
|
statisticsHandler: statisticsHandler,
|
||
|
|
auth: auth,
|
||
|
|
optionalAuth: optionalAuth,
|
||
|
|
admin: admin,
|
||
|
|
logger: logger,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Register 注册统计相关路由
|
||
|
|
func (r *StatisticsRoutes) Register(router *sharedhttp.GinRouter) {
|
||
|
|
engine := router.GetEngine()
|
||
|
|
|
||
|
|
// ================ 用户端统计路由 ================
|
||
|
|
|
||
|
|
// 统计公开接口
|
||
|
|
statistics := engine.Group("/api/v1/statistics")
|
||
|
|
{
|
||
|
|
// 获取公开统计信息
|
||
|
|
statistics.GET("/public", r.statisticsHandler.GetPublicStatistics)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 用户统计接口 - 需要认证
|
||
|
|
userStats := engine.Group("/api/v1/statistics", r.auth.Handle())
|
||
|
|
{
|
||
|
|
// 获取用户统计信息
|
||
|
|
userStats.GET("/user", r.statisticsHandler.GetUserStatistics)
|
||
|
|
|
||
|
|
// 独立统计接口(用户只能查询自己的数据)
|
||
|
|
userStats.GET("/api-calls", r.statisticsHandler.GetApiCallsStatistics)
|
||
|
|
userStats.GET("/consumption", r.statisticsHandler.GetConsumptionStatistics)
|
||
|
|
userStats.GET("/recharge", r.statisticsHandler.GetRechargeStatistics)
|
||
|
|
|
||
|
|
// 获取最新产品推荐
|
||
|
|
userStats.GET("/latest-products", r.statisticsHandler.GetLatestProducts)
|
||
|
|
|
||
|
|
// 获取指标列表
|
||
|
|
userStats.GET("/metrics", r.statisticsHandler.GetMetrics)
|
||
|
|
|
||
|
|
// 获取指标详情
|
||
|
|
userStats.GET("/metrics/:id", r.statisticsHandler.GetMetricDetail)
|
||
|
|
|
||
|
|
// 获取仪表板列表
|
||
|
|
userStats.GET("/dashboards", r.statisticsHandler.GetDashboards)
|
||
|
|
|
||
|
|
// 获取仪表板详情
|
||
|
|
userStats.GET("/dashboards/:id", r.statisticsHandler.GetDashboardDetail)
|
||
|
|
|
||
|
|
// 获取仪表板数据
|
||
|
|
userStats.GET("/dashboards/:id/data", r.statisticsHandler.GetDashboardData)
|
||
|
|
|
||
|
|
// 获取报告列表
|
||
|
|
userStats.GET("/reports", r.statisticsHandler.GetReports)
|
||
|
|
|
||
|
|
// 获取报告详情
|
||
|
|
userStats.GET("/reports/:id", r.statisticsHandler.GetReportDetail)
|
||
|
|
|
||
|
|
// 创建报告
|
||
|
|
userStats.POST("/reports", r.statisticsHandler.CreateReport)
|
||
|
|
}
|
||
|
|
|
||
|
|
// ================ 管理员统计路由 ================
|
||
|
|
|
||
|
|
// 管理员路由组
|
||
|
|
adminGroup := engine.Group("/api/v1/admin")
|
||
|
|
adminGroup.Use(r.admin.Handle()) // 管理员权限验证
|
||
|
|
{
|
||
|
|
// 统计指标管理
|
||
|
|
metrics := adminGroup.Group("/statistics/metrics")
|
||
|
|
{
|
||
|
|
metrics.GET("", r.statisticsHandler.AdminGetMetrics)
|
||
|
|
metrics.POST("", r.statisticsHandler.AdminCreateMetric)
|
||
|
|
metrics.PUT("/:id", r.statisticsHandler.AdminUpdateMetric)
|
||
|
|
metrics.DELETE("/:id", r.statisticsHandler.AdminDeleteMetric)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 仪表板管理
|
||
|
|
dashboards := adminGroup.Group("/statistics/dashboards")
|
||
|
|
{
|
||
|
|
dashboards.GET("", r.statisticsHandler.AdminGetDashboards)
|
||
|
|
dashboards.POST("", r.statisticsHandler.AdminCreateDashboard)
|
||
|
|
dashboards.PUT("/:id", r.statisticsHandler.AdminUpdateDashboard)
|
||
|
|
dashboards.DELETE("/:id", r.statisticsHandler.AdminDeleteDashboard)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 报告管理
|
||
|
|
reports := adminGroup.Group("/statistics/reports")
|
||
|
|
{
|
||
|
|
reports.GET("", r.statisticsHandler.AdminGetReports)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 系统统计
|
||
|
|
system := adminGroup.Group("/statistics/system")
|
||
|
|
{
|
||
|
|
system.GET("", r.statisticsHandler.AdminGetSystemStatistics)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 独立域统计接口
|
||
|
|
domainStats := adminGroup.Group("/statistics")
|
||
|
|
{
|
||
|
|
domainStats.GET("/user-domain", r.statisticsHandler.AdminGetUserDomainStatistics)
|
||
|
|
domainStats.GET("/api-domain", r.statisticsHandler.AdminGetApiDomainStatistics)
|
||
|
|
domainStats.GET("/consumption-domain", r.statisticsHandler.AdminGetConsumptionDomainStatistics)
|
||
|
|
domainStats.GET("/recharge-domain", r.statisticsHandler.AdminGetRechargeDomainStatistics)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 排行榜接口
|
||
|
|
rankings := adminGroup.Group("/statistics")
|
||
|
|
{
|
||
|
|
rankings.GET("/user-call-ranking", r.statisticsHandler.AdminGetUserCallRanking)
|
||
|
|
rankings.GET("/recharge-ranking", r.statisticsHandler.AdminGetRechargeRanking)
|
||
|
|
rankings.GET("/api-popularity-ranking", r.statisticsHandler.AdminGetApiPopularityRanking)
|
||
|
|
rankings.GET("/today-certified-enterprises", r.statisticsHandler.AdminGetTodayCertifiedEnterprises)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 用户统计
|
||
|
|
userStats := adminGroup.Group("/statistics/users")
|
||
|
|
{
|
||
|
|
userStats.GET("/:user_id", r.statisticsHandler.AdminGetUserStatistics)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 独立统计接口(管理员可查询任意用户)
|
||
|
|
independentStats := adminGroup.Group("/statistics")
|
||
|
|
{
|
||
|
|
independentStats.GET("/api-calls", r.statisticsHandler.GetApiCallsStatistics)
|
||
|
|
independentStats.GET("/consumption", r.statisticsHandler.GetConsumptionStatistics)
|
||
|
|
independentStats.GET("/recharge", r.statisticsHandler.GetRechargeStatistics)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 数据聚合
|
||
|
|
aggregation := adminGroup.Group("/statistics/aggregation")
|
||
|
|
{
|
||
|
|
aggregation.POST("/trigger", r.statisticsHandler.AdminTriggerAggregation)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
r.logger.Info("统计路由注册完成")
|
||
|
|
}
|