libushang hace 2 meses
padre
commit
f3c78b9f44
Se han modificado 4 ficheros con 63 adiciones y 2 borrados
  1. 1 1
      .env
  2. 2 0
      routers/api/__init__.py
  3. 56 0
      routers/api/qrcode/__init__.py
  4. 4 1
      routers/api/taskRegistration/__init__.py

+ 1 - 1
.env

@@ -49,7 +49,7 @@ STAGE_YJXP_WEB_ROOT_PATH = "http://120.241.74.139:8086/yjxp/#"
 STAGE_YJXP_CALLBACK_WEB_PATH = "http://19.155.220.206:8086/api/yzy/callback.html"
 # STAGE_YJXP_CALLBACK_WEB_PATH = "http://120.241.74.139:8086/api/yzy/callback.html"
 
-STAGE_YZY_WEB_ROOT = "https://yjxp.tjp.com.cn:8086"
+STAGE_YZY_WEB_ROOT = "http://120.241.74.139:8086"
 
 #########################################################################
 # 生产环境配置

+ 2 - 0
routers/api/__init__.py

@@ -37,6 +37,7 @@ from . import city
 from extensions import logger
 from routers.prod_api import system
 from routers.prod_api import auth
+from . import qrcode
 
 router = APIRouter()
 
@@ -48,6 +49,7 @@ async def callback(request: Request, code: str, state: str):
     return RedirectResponse(url)
 
 router.include_router(auth.router, prefix="/auth")
+router.include_router(qrcode.router, prefix="/qrcode")
 router.include_router(login_router)
 
 router.include_router(system.router, prefix="/system", dependencies=[Depends(valid_access_token)])

+ 56 - 0
routers/api/qrcode/__init__.py

@@ -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")

+ 4 - 1
routers/api/taskRegistration/__init__.py

@@ -158,7 +158,10 @@ async def select_tasks(
         missing_event_code = db.query(EventBase).filter(EventBase.event_code == event_code).first()
         # print(missing_event_code)
         if not missing_event_code:
-            return Response(content="事件不存在", status_code=400)
+            return {
+                "code": 500,
+                "msg": "事件不存在"
+            }
 
 
         data_query = db.query(TaskRegistration).filter(TaskRegistration.del_flag != '2')