|
@@ -0,0 +1,56 @@
|
|
|
|
+from fastapi import APIRouter, Request, Depends, HTTPException, Query, Header
|
|
|
|
+from sqlalchemy.exc import IntegrityError
|
|
|
|
+from fastapi.responses import HTMLResponse, FileResponse, StreamingResponse, RedirectResponse
|
|
|
|
+from fastapi.responses import JSONResponse
|
|
|
|
+from starlette.requests import HTTPConnection
|
|
|
|
+from database import get_db
|
|
|
|
+from sqlalchemy import text, exists, and_, or_, not_
|
|
|
|
+from sqlalchemy.orm import Session
|
|
|
|
+from sqlalchemy.sql import func
|
|
|
|
+from models import *
|
|
|
|
+import json
|
|
|
|
+import random
|
|
|
|
+from sqlalchemy import create_engine, select
|
|
|
|
+from typing import Optional
|
|
|
|
+from utils.StripTagsHTMLParser import *
|
|
|
|
+from common.db import db_event_management, db_user, db_area, db_emergency_plan
|
|
|
|
+from common.security import valid_access_token
|
|
|
|
+import traceback
|
|
|
|
+from utils import *
|
|
|
|
+from datetime import datetime, timedelta
|
|
|
|
+import qrcode
|
|
|
|
+from PIL import Image
|
|
|
|
+from io import BytesIO
|
|
|
|
+from config import settings
|
|
|
|
+from common import YzyApi
|
|
|
|
+from extensions import logger
|
|
|
|
+
|
|
|
|
+router = APIRouter()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@router.get('/event/checkin', response_class=StreamingResponse)
|
|
|
|
+async def get_qrcode(
|
|
|
|
+ request: Request,
|
|
|
|
+ event_id: str,
|
|
|
|
+ db: Session = Depends(get_db)
|
|
|
|
+):
|
|
|
|
+ url = str(request.url)
|
|
|
|
+ print('url:', url)
|
|
|
|
+ url = settings.YZY_WEB_ROOT + f"/api/event_management/checkin/qrcode2?event_id={event_id}&r="+rnd()
|
|
|
|
+ # url = url.replace("http://" + request.url.hostname, settings.YZY_WEB_ROOT)
|
|
|
|
+ logger.info('替换到互联网ip: {}', url)
|
|
|
|
+
|
|
|
|
+ qr = qrcode.QRCode(
|
|
|
|
+ version=1,
|
|
|
|
+ error_correction=qrcode.constants.ERROR_CORRECT_M,
|
|
|
|
+ box_size=10,
|
|
|
|
+ border=0,
|
|
|
|
+ )
|
|
|
|
+ qr.add_data(url)
|
|
|
|
+ qr.make(fit=True)
|
|
|
|
+ image = qr.make_image()
|
|
|
|
+
|
|
|
|
+ buf = BytesIO()
|
|
|
|
+ image.save(buf, 'png')
|
|
|
|
+ img_data = buf.getvalue()
|
|
|
|
+ return StreamingResponse(BytesIO(img_data), media_type="image/png")
|