libushang hace 5 meses
padre
commit
5757c13584

+ 34 - 0
common/db/db_msg_center.py

@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+from sqlalchemy.orm import Session
+from sqlalchemy import text, exists, and_, or_, not_
+from sqlalchemy.sql import func
+from database import get_db
+from models import *
+from extensions import logger
+from utils import *
+
+def add_msg(db: Session, msg_type: str, msg_id: int, user_id: int) -> None:
+    new_msg = MsgCenter(
+        msg_type = msg_type, msg_id = msg_id, recv_time = datetime.now(), recv_userid = user_id, recv_status = 0, update_time = datetime.now()
+    )
+    db.add(new_msg)
+    db.commit()
+    db.refresh(new_msg)
+    return new_msg.id
+
+def get_unread_msg_count(db: Session, user_id: int, msg_type_list: dict) -> dict:
+    data = []
+    for msg_type in msg_type_list:
+        where = and_(MsgCenter.msg_type == msg_type.strip(), MsgCenter.recv_userid == user_id, MsgCenter.recv_status == 0)
+        logger.info(msg_type)
+        if msg_type == '消息中心':
+            where = and_(MsgCenter.recv_userid == user_id, MsgCenter.recv_status == 0)
+        c1 = db.query(MsgCenter).filter(where).count()
+        data.append({"name" : msg_type, "num": c1})
+    logger.info(data)
+    return data
+
+def update_msg_read(db: Session, user_id: int, msg_type: str, msg_id: int) -> None:
+    db.query(MsgCenter).filter(and_(MsgCenter.msg_type == msg_type, MsgCenter.recv_userid == user_id, MsgCenter.msg_id == msg_id)).update({"recv_status": 1, "update_time": datetime.now()})
+    db.commit()

+ 18 - 0
models/base.py

@@ -100,3 +100,21 @@ class OprIdx(Base):
         orm_mode = True
 
 
+class MsgCenter(Base):
+    """
+    消息中心
+    """
+    
+    __tablename__ = "msg_center"
+    id = Column(Integer, primary_key=True, autoincrement=True, comment='id')
+    msg_type = Column(String, comment='消息类型')
+    msg_id = Column(Integer,comment='消息ID')
+    recv_time = Column(DateTime, default=datetime.now, comment='接收时间')
+    recv_userid = Column(Integer, comment='接收用户ID')
+    recv_status = Column(Integer, default="0", comment='接收状态 0 未阅 1 已阅')
+    update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='创建时间')
+    
+    class Config:
+        orm_mode = True
+
+

+ 3 - 1
routers/api/infoPublish/__init__.py

@@ -6,9 +6,11 @@ from fastapi import APIRouter, Request, Depends
 from . import back
 from . import addressbook
 from . import me
+from . import msg_center
 
 router = APIRouter()
 
 router.include_router(back.router, prefix="/back", tags=["增删改"])
 router.include_router(addressbook.router, prefix="/addressbook", tags=["通信录"])
-router.include_router(me.router, prefix="/me")
+router.include_router(me.router, prefix="/me")
+router.include_router(msg_center.router, prefix="/msg_center")

+ 52 - 0
routers/api/infoPublish/msg_center.py

@@ -0,0 +1,52 @@
+#!/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
+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))
+