videoinfo.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. if len(video_list)==0:
  22. video_list = ['']
  23. query = db.query(TpVideoLog)
  24. total_items = query.count()
  25. query = query.order_by(
  26. case(
  27. [(TpVideoLog.video_code_int == video_code_int, 0) for video_code_int in video_list],
  28. else_=1
  29. )
  30. )
  31. videos = query.offset((page - 1) * pageSize).limit(pageSize).all()
  32. video_list = [{
  33. "name": video.name,
  34. "invideoIds":video.video_code_int in video_list,
  35. "area": video.area,
  36. "ip": video.ip,
  37. "status": video.status,
  38. "status_lifetime": video.status_lifetime,
  39. "record_status": video.record_status,
  40. "inspection_datetime": video.inspection_datetime,
  41. "video_code_int": video.video_code_int,
  42. "video_code": video.video_code
  43. } for video in videos]
  44. return {
  45. "code": 200,
  46. "msg": "操作成功",
  47. "rows": video_list,
  48. "total": total_items,
  49. "page": page,
  50. "pageSize": pageSize,
  51. "totalPages": (total_items + pageSize - 1) // pageSize
  52. }