package handlers import ( "github.com/gofiber/fiber/v2" "platform/web/auth" "platform/web/core" q "platform/web/queries" ) // region ListAnnouncements type ListAnnouncementsRequest struct { core.PageReq } func ListAnnouncements(c *fiber.Ctx) error { // 检查权限 _, err := auth.Protect(c, []auth.PayloadType{auth.PayloadUser}, []string{}) if err != nil { return err } // 解析请求参数 req := new(ListAnnouncementsRequest) if err := c.BodyParser(req); err != nil { return err } // 查询公告 do := q.Announcement. Where(q.Announcement.Status.Eq(1)) list, err := q.Announcement. Where(do). Offset(req.GetOffset()). Limit(req.GetLimit()). Order(q.Announcement.CreatedAt.Desc()). Find() if err != nil { return err } var total int64 if len(list) < req.GetLimit() { total = int64(len(list) + req.GetOffset()) } else { total, err = q.Announcement.Where(do).Count() if err != nil { return err } } // 返回结果 return c.JSON(core.PageResp{ Total: int(total), List: list, Page: req.GetPage(), Size: req.GetSize(), }) } // endregion