msg_center.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends, HTTPException, Query
  4. from sqlalchemy.exc import IntegrityError
  5. from fastapi.responses import HTMLResponse, FileResponse
  6. from fastapi.responses import JSONResponse
  7. from database import get_db
  8. from sqlalchemy import text, exists, and_, or_, not_
  9. from sqlalchemy.orm import Session
  10. from models import *
  11. import json
  12. import os
  13. from sqlalchemy import create_engine, select
  14. from typing import Optional
  15. from utils.StripTagsHTMLParser import *
  16. from common.db import db_event_management, db_user, db_area, db_msg_center, db_yzy
  17. from common.security import valid_access_token
  18. import traceback
  19. from utils import *
  20. from datetime import datetime, timedelta
  21. from common import YzyApi
  22. from common.db import db_dict
  23. from urllib.parse import quote
  24. import base64
  25. from io import BytesIO
  26. from PIL import Image
  27. from config import settings
  28. router = APIRouter()
  29. @router.post("/unread_msg_count")
  30. async def msg_count(
  31. request: Request,
  32. body = Depends(remove_xss_json),
  33. db: Session = Depends(get_db),
  34. user_id = Depends(valid_access_token)):
  35. try:
  36. msg_types = get_req_param(body, "msg_types")
  37. msg_type_list = msg_types.split(",")
  38. data = db_msg_center.get_unread_msg_count(db, user_id, msg_type_list)
  39. return {
  40. "code": 200,
  41. "msg": "反馈成功",
  42. "data": data
  43. }
  44. except Exception as e:
  45. # 处理异常
  46. traceback.print_exc()
  47. raise HTTPException(status_code=500, detail=str(e))
  48. @router.post("/send_yzy_msg")
  49. async def send_yzy_msg(request: Request,
  50. body = Depends(remove_xss_json),
  51. db: Session = Depends(get_db),
  52. user_id = Depends(valid_access_token)):
  53. msg_type = body['msg_type']
  54. detail_url = body['detail_url']
  55. description = body['description']
  56. foreign_key = '0'
  57. if 'foreign_key' in body:
  58. foreign_key = body['foreign_key']
  59. from_scenario = ''
  60. if 'from_scenario' in body:
  61. from_scenario = body['from_scenario']
  62. user_list = []
  63. tousers = body['tousers']
  64. for to_user_id in tousers:
  65. user_info = db_user.get_user_info(db, to_user_id)
  66. yzy_account = user_info.yzy_account
  67. yzy_userid = db_yzy.get_userid_by_account(db, yzy_account)
  68. if yzy_userid not in user_list:
  69. data = {
  70. "yzy_userid": yzy_userid,
  71. "mobile": yzy_account,
  72. "content": description,
  73. "recorded_by": user_id,
  74. "detail_url": settings.YZY_WEB_ROOT + detail_url,
  75. "foreign_key": foreign_key,
  76. "from_scenario": from_scenario,
  77. "title": msg_type
  78. }
  79. YzyApi.add_to_msg_queue(db, data)
  80. db_msg_center.add_msg(db, msg_type, foreign_key, to_user_id)
  81. user_list.append(yzy_userid)
  82. return {
  83. "code": 200,
  84. "msg": "消息暂存成功"
  85. }