55 lines
1.2 KiB
Go
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)
|
|
}
|