Develop feature qianduan #19

Merged
ouyangyang_0626 merged 2 commits from develop_feature_qianduan into develop 2026-09-13 22:27:29 +08:00
Showing only changes of commit 6c76d5b9fd - Show all commits
+39
View File
@@ -0,0 +1,39 @@
"""分页通用工具:统一页码校验、偏移量和列表响应结构。"""
from __future__ import annotations
from collections.abc import Sequence
from math import ceil
from typing import Any
def normalize_pagination(
page: int = 1,
page_size: int = 10,
*,
max_page_size: int = 10,
) -> tuple[int, int, int]:
"""规范化分页参数,返回 ``(page, page_size, offset)``。"""
page = max(1, int(page))
page_size = min(max_page_size, max(1, int(page_size)))
return page, page_size, (page - 1) * page_size
def pagination_result(
items: Sequence[Any],
total: int,
*,
page: int,
page_size: int,
) -> dict[str, Any]:
"""构造统一分页响应,包含总页数供前端直接计算翻页状态。"""
total = max(0, int(total))
return {
"items": list(items),
"total": total,
"page": page,
"page_size": page_size,
"total_pages": ceil(total / page_size) if total else 0,
}
__all__ = ["normalize_pagination", "pagination_result"]