feat: 支持主列表选择每页条数 (#242)

This commit is contained in:
chengma
2026-08-15 15:15:38 +08:00
parent 8c09023434
commit b4558537d5
37 changed files with 479 additions and 160 deletions
+10 -4
View File
@@ -23,8 +23,14 @@ type UserListResult struct {
TotalPages int
}
// ListUsers 搜索并分页。用户页沿用全站统一的每页 20 条规则。
// ListUsers 使用默认页容量搜索并分页。
func ListUsers(db *sql.DB, actor *model.User, keyword string, status model.UserStatus, requestedPage int) (*UserListResult, error) {
return ListUsersWithPageSize(db, actor, keyword, status, requestedPage, DefaultPageSize)
}
// ListUsersWithPageSize 按白名单页容量搜索并分页。
func ListUsersWithPageSize(db *sql.DB, actor *model.User, keyword string, status model.UserStatus, requestedPage, pageSize int) (*UserListResult, error) {
pageSize = NormalizePageSize(pageSize)
if actor == nil || !actor.IsAdmin() {
return nil, ErrAdminRequired
}
@@ -36,15 +42,15 @@ func ListUsers(db *sql.DB, actor *model.User, keyword string, status model.UserS
if page < 1 {
page = 1
}
rows, total, err := repository.ListUsers(db, keyword, status, PageSize, (page-1)*PageSize)
rows, total, err := repository.ListUsers(db, keyword, status, pageSize, (page-1)*pageSize)
if err != nil {
return nil, err
}
totalPages := TotalPages(total)
totalPages := TotalPages(total, pageSize)
clampedPage := ClampPage(page, totalPages)
if clampedPage != page {
page = clampedPage
rows, _, err = repository.ListUsers(db, keyword, status, PageSize, (page-1)*PageSize)
rows, _, err = repository.ListUsers(db, keyword, status, pageSize, (page-1)*pageSize)
if err != nil {
return nil, err
}