feat(media): 为媒体素材库添加分页加载功能

- 新增 PaginatedResult 泛型类型统一分页返回数据结构
- 重构后端媒体素材列表接口,支持分页参数并返回完整分页信息
- 前端媒体素材页面添加分页控件,适配分页加载逻辑
- 上传素材后自动重置页码至第一页并重新加载列表
- 更新接口文档和用户文档,补充分页API使用规范
- 新增对应测试用例覆盖分页接口与前端调用逻辑
This commit is contained in:
duanshuwen committed 2026-08-27 15:45:46 +08:00
1 parent 68d2b88c04
commit c381eb8b38
9 files changed
+132 -14

No files matched your search

+22 -3
View File
@@ -1500,9 +1500,28 @@ def update_lead_status(lead_id: str, body: LeadStatusIn, request: Request, _user
@router.get("/media-assets")
def list_media_assets(_user: AdminUser = Depends(require_admin_permission("admin:media:read")), db: Session = Depends(get_db)):
assets = db.scalars(apply_data_scope(select(MediaAsset), MediaAsset, _user, db).order_by(MediaAsset.createdAt.desc()).limit(200)).all()
return success_response({"items": [media_model_dict(asset) for asset in assets]})
def list_media_assets(
pageNum: int = Query(default=1, ge=1),
pageSize: int = Query(default=20, ge=1, le=200),
_user: AdminUser = Depends(require_admin_permission("admin:media:read")),
db: Session = Depends(get_db),
):
offset = (pageNum - 1) * pageSize
assets_stmt = (
select(MediaAsset)
.order_by(MediaAsset.createdAt.desc())
.offset(offset)
.limit(pageSize)
)
assets = db.scalars(apply_data_scope(assets_stmt, MediaAsset, _user, db)).all()
total_stmt = apply_data_scope(select(func.count()).select_from(MediaAsset), MediaAsset, _user, db)
total = db.scalar(total_stmt) or 0
return success_response({
"items": [media_model_dict(asset) for asset in assets],
"total": total,
"pageNum": pageNum,
"pageSize": pageSize,
})
@router.post("/media-assets/upload", status_code=status.HTTP_201_CREATED)