videoinfo.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends,Query
  4. from database import get_db
  5. from sqlalchemy.orm import Session
  6. from sqlalchemy import case
  7. from utils import *
  8. from utils.ry_system_util import *
  9. from common.security import valid_access_token
  10. router = APIRouter()
  11. @router.get('/get_video_list_by_user')
  12. async def get_video_url_by_id(
  13. db: Session = Depends(get_db),
  14. body=Depends(remove_xss_json),
  15. user_id=Depends(valid_access_token),
  16. page: int = Query(1, gt=0, description='页码'),
  17. pageSize: int = Query(10, gt=0, description='每页条目数量')
  18. ):
  19. videoIds = user_id_get_user_videoIds(db, user_id)
  20. video_list = [i.video_code_int for i in videoIds]
  21. query = db.query(TpVideoLog)
  22. total_items = query.count()
  23. query = query.order_by(
  24. case([(TpVideoLog.video_code_int == video_code_int, 0) for video_code_int in video_list], else_=1),
  25. TpVideoLog.area.asc()
  26. )
  27. videos = query.offset((page - 1) * pageSize).limit(pageSize).all()
  28. video_list = [{
  29. "name": video.name,
  30. "invideoIds":video.video_code_int in video_list,
  31. "area": video.area,
  32. "ip": video.ip,
  33. "status": video.status,
  34. "status_lifetime": video.status_lifetime,
  35. "record_status": video.record_status,
  36. "inspection_datetime": video.inspection_datetime,
  37. "video_code_int": video.video_code_int,
  38. "video_code": video.video_code
  39. } for video in videos]
  40. return {
  41. "code": 200,
  42. "msg": "操作成功",
  43. "rows": video_list,
  44. "total": total_items,
  45. "page": page,
  46. "pageSize": pageSize,
  47. "totalPages": (total_items + pageSize - 1) // pageSize
  48. }