#!/usr/bin/env python3 # -*- coding: utf-8 -*- from fastapi import APIRouter, Request, Depends,Query,HTTPException from database import get_db from sqlalchemy.orm import Session from sqlalchemy import case,or_ from sqlalchemy import text from utils import * from utils.ry_system_util import * from utils.video_util import * from common.security import valid_access_token from fastapi.responses import JSONResponse import traceback import base64 from datetime import datetime from common import AvconH5API, AvconMiniAPI from models import * ''' 融合通信相关接口 ''' router = APIRouter() @router.get('/get_video_list') async def get_video_list( db: Session = Depends(get_db), user_id=Depends(valid_access_token) ): return AvconH5API.get_channel_all() @router.get('/get_mini_video_list') async def get_mini_video_list( db: Session = Depends(get_db) ): # domain = AvconMiniAPI.get_config("DOMAIN") # rsa_public_key = AvconMiniAPI.get_config("RSA_PUBLIC_KEY") # return domain + " / " + rsa_public_key # return AvconMiniAPI.get_group_page() # return AvconMiniAPI.get_group_device("G6@mm.zw.yj") # return AvconMiniAPI.get_device_info("19.152.196.150@mm.zw.yj") # return AvconMiniAPI.get_device_all() # return AvconMiniAPI.get_device_channel("19.152.196.150@mm.zw.yj") # return AvconMiniAPI.get_device_channel_gps("19.152.196.150@mm.zw.yj") return AvconMiniAPI.get_channel_all() @router.post("/get_start_mini_param") async def get_start_mini_param( body = Depends(remove_xss_json), db: Session = Depends(get_db), user_id = Depends(valid_access_token) ): userid = get_req_param_optional(body, "userid") if userid == "": user_info = db.query(AvconUser).filter(AvconUser.user_id).first() if user_info is None: return { "code": 500, "msg": "当前账号对应的融合设备为空,请联系管理员配置。" } userid = user_info.dev_id password = get_req_param_optional(body, "password") if password == "": password = "123" windowpos = get_req_param(body, "windowpos") x = windowpos['x'] y = windowpos['y'] width = windowpos['width'] height = windowpos['height'] top = windowpos['top'] # 进入会议后需要广播的人员列表 members = get_req_param(body, "members") params = { "mode": "mini", "cmd": "enterroom", "serverip": "19.152.196.106", "userid": userid, "password": password, "windowpos": {"x": x,"y": y,"width": width,"height": height,"top": top}, "members": members } logger.info("发起融合通信mini客户端: {}", params) json_str = json.dumps(params, ensure_ascii=False) base64_str = base64.b64encode(json_str.encode('utf-8')).decode('utf-8') return { "code": 0, "msg": "success", "data": "" + "avcon6://" + base64_str } @router.post("/get_start_mini_with_no_param") async def get_start_mini_param( body = Depends(remove_xss_json), db: Session = Depends(get_db), user_id = Depends(valid_access_token) ): userid = get_req_param_optional(body, "userid") if userid == "": user_info = db.query(AvconUser).filter(AvconUser.user_id).first() if user_info is None: return { "code": 500, "msg": "当前账号对应的融合设备为空,请联系管理员配置。" } userid = user_info.dev_id password = get_req_param_optional(body, "password") if password == "": password = "123" roomcode = get_req_param_optional(body, "roomcode") windowpos = get_req_param(body, "windowpos") x = windowpos['x'] y = windowpos['y'] width = windowpos['width'] height = windowpos['height'] top = windowpos['top'] params = { "mode": "mini", "cmd": "enterroom", "serverip": "19.152.196.106", "userid": userid, "password": password, "roomcode": roomcode, "windowpos": {"x": x,"y": y,"width": width,"height": height,"top": top}, } logger.info("发起融合通信mini客户端入会: {}", params) json_str = json.dumps(params, ensure_ascii=False) base64_str = base64.b64encode(json_str.encode('utf-8')).decode('utf-8') return { "code": 0, "msg": "success", "data": "" + "avcon6://" + base64_str }