添加公告表及相关处理逻辑,支持公告列表查询
This commit is contained in:
64
web/handlers/announcement.go
Normal file
64
web/handlers/announcement.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"platform/web/auth"
|
||||
"platform/web/common"
|
||||
q "platform/web/queries"
|
||||
"platform/web/services"
|
||||
)
|
||||
|
||||
// region ListAnnouncements
|
||||
|
||||
type ListAnnouncementsRequest struct {
|
||||
common.PageReq
|
||||
}
|
||||
|
||||
func ListAnnouncements(c *fiber.Ctx) error {
|
||||
|
||||
// 检查权限
|
||||
_, err := auth.Protect(c, []services.PayloadType{services.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(common.PageResp{
|
||||
Total: int(total),
|
||||
List: list,
|
||||
Page: req.GetPage(),
|
||||
Size: req.GetSize(),
|
||||
})
|
||||
}
|
||||
|
||||
// endregion
|
||||
@@ -38,7 +38,7 @@ func ListWhitelist(c *fiber.Ctx) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
// 获取白名单信息
|
||||
do := q.Whitelist.
|
||||
Where(q.Whitelist.UserID.Eq(authContext.Payload.Id))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user