Files
MonkeyCode/backend/internal/user/handler/v1/dashboard.go
2025-07-21 18:47:39 +08:00

74 lines
2.0 KiB
Go

package v1
import (
"github.com/GoYoko/web"
"github.com/chaitin/MonkeyCode/backend/domain"
"github.com/chaitin/MonkeyCode/backend/internal/middleware"
)
// UserStat 获取用户统计信息
//
// @Tags User Dashboard
// @Summary 获取用户统计信息
// @Description 获取用户统计信息
// @ID user-dashboard-stat
// @Accept json
// @Produce json
// @Param filter query domain.StatisticsFilter true "筛选参数"
// @Success 200 {object} web.Resp{data=domain.UserStat}
// @Failure 401 {object} string
// @Router /api/v1/user/dashboard/stat [get]
func (h *UserHandler) UserStat(c *web.Context, req domain.StatisticsFilter) error {
req.UserID = middleware.GetUser(c).ID
userStat, err := h.duse.UserStat(c.Request().Context(), req)
if err != nil {
return err
}
return c.Success(userStat)
}
// UserEvents 获取用户事件
//
// @Tags User Dashboard
// @Summary 获取用户事件
// @Description 获取用户事件
// @ID user-dashboard-events
// @Accept json
// @Produce json
// @Param filter query domain.StatisticsFilter true "筛选参数"
// @Success 200 {object} web.Resp{data=[]domain.UserEvent}
// @Failure 401 {object} string
// @Router /api/v1/user/dashboard/events [get]
func (h *UserHandler) UserEvents(c *web.Context) error {
userEvents, err := h.duse.UserEvents(c.Request().Context(), domain.StatisticsFilter{
Precision: "day",
Duration: 90,
UserID: middleware.GetUser(c).ID,
})
if err != nil {
return err
}
return c.Success(userEvents)
}
// UserHeatmap 用户热力图
//
// @Tags User Dashboard
// @Summary 用户热力图
// @Description 用户热力图
// @ID user-dashboard-heatmap
// @Accept json
// @Produce json
// @Success 200 {object} web.Resp{data=domain.UserHeatmapResp}
// @Failure 401 {object} string
// @Router /api/v1/user/dashboard/heatmap [get]
func (h *UserHandler) UserHeatmap(c *web.Context) error {
userID := middleware.GetUser(c).ID
userHeatmap, err := h.duse.UserHeatmap(c.Request().Context(), userID)
if err != nil {
return err
}
return c.Success(userHeatmap)
}