feat: 管理后台待审稿件置顶优先显示
- FindAdminPageable 新增 pageResultsAdmin,使用 CASE WHEN 排序 - pending 和有 PendingBody 的 approved 帖子排在最前 - 其余帖子按创建时间倒序排在后面
This commit is contained in:
@ -68,10 +68,10 @@ func (r *PostRepo) FindPageable(keyword string, offset, limit int) ([]model.Post
|
|||||||
return r.pageResults(query, offset, limit)
|
return r.pageResults(query, offset, limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindAdminPageable 管理后台分页查询(全状态筛选)
|
// FindAdminPageable 管理后台分页查询(全状态筛选,待审置顶)
|
||||||
func (r *PostRepo) FindAdminPageable(keyword, status string, offset, limit int) ([]model.Post, int64, error) {
|
func (r *PostRepo) FindAdminPageable(keyword, status string, offset, limit int) ([]model.Post, int64, error) {
|
||||||
query := r.buildQuery(keyword, status)
|
query := r.buildQuery(keyword, status)
|
||||||
return r.pageResults(query, offset, limit)
|
return r.pageResultsAdmin(query, offset, limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindByUserID 分页查询某用户发布的帖子(仅 approved,含作者用户名)
|
// FindByUserID 分页查询某用户发布的帖子(仅 approved,含作者用户名)
|
||||||
@ -111,6 +111,22 @@ func (r *PostRepo) pageResults(query *gorm.DB, offset, limit int) ([]model.Post,
|
|||||||
return posts, total, nil
|
return posts, total, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pageResultsAdmin 管理后台分页:待审稿件(pending 或 修订待审)置顶优先
|
||||||
|
func (r *PostRepo) pageResultsAdmin(query *gorm.DB, offset, limit int) ([]model.Post, int64, error) {
|
||||||
|
var total int64
|
||||||
|
if err := query.Count(&total).Error; err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var posts []model.Post
|
||||||
|
err := query.Order(`CASE WHEN posts.status = 'pending' OR (posts.status = 'approved' AND posts.pending_body != '') THEN 0 ELSE 1 END ASC, posts.created_at DESC`).
|
||||||
|
Offset(offset).Limit(limit).Find(&posts).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
return posts, total, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Update 更新帖子
|
// Update 更新帖子
|
||||||
func (r *PostRepo) Update(post *model.Post) error {
|
func (r *PostRepo) Update(post *model.Post) error {
|
||||||
return r.db.Save(post).Error
|
return r.db.Save(post).Error
|
||||||
|
|||||||
Reference in New Issue
Block a user