feat(media): 为媒体素材库添加分页加载功能
- 新增 PaginatedResult 泛型类型统一分页返回数据结构 - 重构后端媒体素材列表接口,支持分页参数并返回完整分页信息 - 前端媒体素材页面添加分页控件,适配分页加载逻辑 - 上传素材后自动重置页码至第一页并重新加载列表 - 更新接口文档和用户文档,补充分页API使用规范 - 新增对应测试用例覆盖分页接口与前端调用逻辑
This commit is contained in:
1 parent
68d2b88c04
commit
c381eb8b38
9 files changed
+132
-14
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user