package handler import ( "net/http" "github.com/freefire/jiang13-bbs/middleware" "github.com/gin-gonic/gin" ) // Overview 首页聚合数据:统计、热门榜、活跃用户、板块计数 func (h *Handlers) Overview(c *gin.Context) { data, err := h.OverviewSvc.Get() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } // 热门榜按当前登录用户填充点赞态;登录用户同时返回签到状态 if claims := middleware.CurrentUser(c); claims != nil { ids := make([]uint, 0, len(data.Hot)) for _, p := range data.Hot { ids = append(ids, p.ID) } likedMap := h.Like.BatchHasLiked(ids, claims.ID) for i := range data.Hot { data.Hot[i].Liked = likedMap[data.Hot[i].ID] } if status, err := h.Checkin.Status(claims.ID); err == nil { data.Checkin = status } } c.JSON(http.StatusOK, gin.H{ "stats": data.Stats, "hot": data.Hot, "active_users": data.ActiveUsers, "boards": data.Boards, "announcements": data.Announcements, "announcements_total": data.AnnouncementsTotal, "sidebar_pages": data.SidebarPages, "new_users": data.NewUsers, "checkin": data.Checkin, }) }