avcon.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends,Query,HTTPException
  4. from database import get_db
  5. from sqlalchemy.orm import Session
  6. from sqlalchemy import case,or_
  7. from sqlalchemy import text
  8. from utils import *
  9. from utils.ry_system_util import *
  10. from utils.video_util import *
  11. from common.security import valid_access_token
  12. from fastapi.responses import JSONResponse
  13. import traceback
  14. import base64
  15. from datetime import datetime
  16. from common import AvconH5API, AvconMiniAPI
  17. from models import *
  18. '''
  19. 融合通信相关接口
  20. '''
  21. router = APIRouter()
  22. @router.get('/get_video_list')
  23. async def get_video_list(
  24. db: Session = Depends(get_db),
  25. user_id=Depends(valid_access_token)
  26. ):
  27. return AvconH5API.get_channel_all()
  28. @router.get('/get_mini_video_list')
  29. async def get_mini_video_list(
  30. db: Session = Depends(get_db)
  31. ):
  32. # domain = AvconMiniAPI.get_config("DOMAIN")
  33. # rsa_public_key = AvconMiniAPI.get_config("RSA_PUBLIC_KEY")
  34. # return domain + " / " + rsa_public_key
  35. # return AvconMiniAPI.get_group_page()
  36. # return AvconMiniAPI.get_group_device("G6@mm.zw.yj")
  37. # return AvconMiniAPI.get_device_info("19.152.196.150@mm.zw.yj")
  38. # return AvconMiniAPI.get_device_all()
  39. # return AvconMiniAPI.get_device_channel("19.152.196.150@mm.zw.yj")
  40. # return AvconMiniAPI.get_device_channel_gps("19.152.196.150@mm.zw.yj")
  41. return AvconMiniAPI.get_channel_all()
  42. @router.post("/get_start_mini_param")
  43. async def get_start_mini_param(
  44. body = Depends(remove_xss_json),
  45. db: Session = Depends(get_db),
  46. user_id = Depends(valid_access_token)
  47. ):
  48. userid = get_req_param_optional(body, "userid")
  49. if userid == "":
  50. user_info = db.query(AvconUser).filter(AvconUser.user_id).first()
  51. if user_info is None:
  52. return {
  53. "code": 500,
  54. "msg": "当前账号对应的融合设备为空,请联系管理员配置。"
  55. }
  56. userid = user_info.dev_id
  57. password = get_req_param_optional(body, "password")
  58. if password == "":
  59. password = "123"
  60. roomid = get_req_param_optional(body, "roomid")
  61. windowpos = get_req_param(body, "windowpos")
  62. x = windowpos['x']
  63. y = windowpos['y']
  64. width = windowpos['width']
  65. height = windowpos['height']
  66. top = windowpos['top']
  67. # 进入会议后需要广播的人员列表
  68. members = get_req_param(body, "members")
  69. params = {
  70. "mode": "mini",
  71. "cmd": "enterroom",
  72. "serverip": "19.152.196.106",
  73. "userid": userid,
  74. "password": password,
  75. "roomid": roomid,
  76. "windowpos": {"x": x,"y": y,"width": width,"height": height,"top": top},
  77. "members": members
  78. }
  79. logger.info("发起融合通信mini客户端: {}", params)
  80. json_str = json.dumps(params, ensure_ascii=False)
  81. base64_str = base64.b64encode(json_str.encode('utf-8')).decode('utf-8')
  82. return {
  83. "code": 0,
  84. "msg": "success",
  85. "data": "" + "avcon6://" + base64_str
  86. }