Feat: room hot list

pull/21/head
zijiren233 2 years ago
parent 379ef5d85b
commit 98d51c0604

@ -51,6 +51,8 @@ func Init(e *gin.Engine) {
room.GET("/check", CheckRoom)
room.GET("/hot", RoomHotList)
room.GET("/list", RoomList)
needAuthUser.POST("/create", CreateRoom)

@ -56,27 +56,13 @@ func CreateRoom(ctx *gin.Context) {
}))
}
func RoomList(ctx *gin.Context) {
func RoomHotList(ctx *gin.Context) {
page, pageSize, err := GetPageAndPageSize(ctx)
if err != nil {
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorResp(err))
return
}
resp := make([]*model.RoomListResp, 0, pageSize)
var desc = ctx.DefaultQuery("sort", "desc") == "desc"
// search mode, all, name, creator
var search = ctx.DefaultQuery("search", "all")
scopes := []func(db *gorm.DB) *gorm.DB{
db.Paginate(page, pageSize),
}
total := 0
switch ctx.DefaultQuery("order", "peopleNum") {
case "peopleNum":
r := op.GetAllRoomsInCacheWithoutHidden()
rs := vec.New[*model.RoomListResp](vec.WithCmpLess[*model.RoomListResp](func(v1, v2 *model.RoomListResp) bool {
return v1.PeopleNum < v2.PeopleNum
@ -93,12 +79,43 @@ func RoomList(ctx *gin.Context) {
CreatedAt: v.Room.CreatedAt.UnixMilli(),
})
}
rs.SortStable()
if desc {
if ctx.DefaultQuery("sort", "desc") == "desc" {
rs.Reverse()
}
total = rs.Len()
resp = utils.GetPageItems(rs.Slice(), page, pageSize)
ctx.JSON(http.StatusOK, model.NewApiDataResp(gin.H{
"total": rs.Len(),
"list": utils.GetPageItems(rs.Slice(), page, pageSize),
}))
}
func RoomList(ctx *gin.Context) {
order := ctx.Query("order")
if order == "" {
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorStringResp("order is required"))
return
}
page, pageSize, err := GetPageAndPageSize(ctx)
if err != nil {
ctx.AbortWithStatusJSON(http.StatusBadRequest, model.NewApiErrorResp(err))
return
}
resp := make([]*model.RoomListResp, 0, pageSize)
var desc = ctx.DefaultQuery("sort", "desc") == "desc"
// search mode, all, name, creator
var search = ctx.DefaultQuery("search", "all")
scopes := []func(db *gorm.DB) *gorm.DB{
db.Paginate(page, pageSize),
}
total := 0
switch order {
case "createdAt":
if desc {
scopes = append(scopes, db.OrderByCreatedAtDesc)

Loading…
Cancel
Save