Files
filestoragesystem/go/internal/controller/stats.go
T
2026-08-23 00:48:10 +08:00

55 lines
1.2 KiB
Go

package controller
import (
"github.com/gin-gonic/gin"
"filestoragesystem/internal/middleware"
"filestoragesystem/internal/utils"
)
// StatsController 统计控制器
type StatsController struct {
*Base
}
// NewStatsController 创建统计控制器
func NewStatsController(b *Base) *StatsController { return &StatsController{Base: b} }
// UserStats 用户存储统计
func (ctl *StatsController) UserStats(c *gin.Context) {
userID := middleware.CurrentUserID(c)
stats, err := ctl.svc.Stats.UserStats(userID)
if err != nil {
utils.ServerError(c, err.Error())
return
}
utils.OK(c, stats)
}
// ProjectStats 项目存储统计
func (ctl *StatsController) ProjectStats(c *gin.Context) {
id, ok := paramID(c)
if !ok {
return
}
userID := middleware.CurrentUserID(c)
stats, err := ctl.svc.Stats.ProjectStats(userID, id, middleware.IsAdmin(c))
if err != nil {
utils.FailMsg(c, err.Error())
return
}
utils.OK(c, stats)
}
// TrafficStats 流量统计
func (ctl *StatsController) TrafficStats(c *gin.Context) {
userID := middleware.CurrentUserID(c)
days := parseIntQuery(c, "days", 30)
stats, err := ctl.svc.Stats.TrafficStats(userID, days)
if err != nil {
utils.ServerError(c, err.Error())
return
}
utils.OK(c, stats)
}