#!/usr/bin/env python3 # -*- coding: utf-8 -*- from fastapi import APIRouter, Request, Depends, HTTPException, Query from sqlalchemy.exc import IntegrityError from fastapi.responses import HTMLResponse, FileResponse from fastapi.responses import JSONResponse from database import get_db from sqlalchemy import text, exists, and_, or_, not_ from sqlalchemy.orm import Session from models import * import json import os 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_msg_center, db_yzy from common.security import valid_access_token import traceback from utils import * from datetime import datetime, timedelta from common import YzyApi from common.db import db_dict from urllib.parse import quote import base64 from io import BytesIO from PIL import Image from config import settings router = APIRouter() @router.post("/unread_msg_count") async def msg_count( request: Request, body = Depends(remove_xss_json), db: Session = Depends(get_db), user_id = Depends(valid_access_token)): try: msg_types = get_req_param(body, "msg_types") msg_type_list = msg_types.split(",") data = db_msg_center.get_unread_msg_count(db, user_id, msg_type_list) return { "code": 200, "msg": "反馈成功", "data": data } except Exception as e: # 处理异常 traceback.print_exc() raise HTTPException(status_code=500, detail=str(e)) @router.post("/send_yzy_msg") async def send_yzy_msg(request: Request, body = Depends(remove_xss_json), db: Session = Depends(get_db), user_id = Depends(valid_access_token)): msg_type = body['msg_type'] detail_url = body['detail_url'] description = body['description'] foreign_key = '0' if 'foreign_key' in body: foreign_key = body['foreign_key'] from_scenario = '' if 'from_scenario' in body: from_scenario = body['from_scenario'] user_list = [] tousers = body['tousers'] for to_user_id in tousers: user_info = db_user.get_user_info(db, to_user_id) yzy_account = user_info.yzy_account yzy_userid = db_yzy.get_userid_by_account(db, yzy_account) if yzy_userid not in user_list: data = { "yzy_userid": yzy_userid, "mobile": yzy_account, "content": description, "recorded_by": user_id, "detail_url": settings.YZY_WEB_ROOT + detail_url, "foreign_key": foreign_key, "from_scenario": from_scenario, "title": msg_type } YzyApi.add_to_msg_queue(db, data) db_msg_center.add_msg(db, msg_type, foreign_key, to_user_id) user_list.append(yzy_userid) return { "code": 200, "msg": "消息暂存成功" }