db_msg_center.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from sqlalchemy.orm import Session
  4. from sqlalchemy import text, exists, and_, or_, not_
  5. from sqlalchemy.sql import func
  6. from database import get_db
  7. from models import *
  8. from extensions import logger
  9. from utils import *
  10. def add_msg(db: Session, msg_type: str, msg_id: str , user_id: int) -> None:
  11. new_msg = MsgCenter(
  12. msg_type = msg_type, msg_id = str(msg_id), recv_time = datetime.now(), recv_userid = user_id, recv_status = 0, update_time = datetime.now()
  13. )
  14. db.add(new_msg)
  15. db.commit()
  16. db.refresh(new_msg)
  17. return new_msg.id
  18. def get_unread_msg_count(db: Session, user_id: int, msg_type_list: dict) -> dict:
  19. data = []
  20. for msg_type in msg_type_list:
  21. where = and_(MsgCenter.msg_type == msg_type.strip())
  22. logger.info(msg_type)
  23. c1 = 0
  24. if msg_type == '事件管理':
  25. # 等同 list_active
  26. where = and_(EventBase.del_flag == '0', EventBase.event_title != '', EventBase.event_status.in_(['0', '1']))
  27. c1 = db.query(EventBase).filter(where).count()
  28. else:
  29. if msg_type == '巡查工作':
  30. where = and_(MsgCenter.msg_type == '隐患巡查')
  31. elif msg_type == '数据管理':
  32. where = and_(MsgCenter.msg_type == '数据采集')
  33. c1 = db.query(MsgCenter).filter(where).filter(and_(MsgCenter.recv_userid == user_id, MsgCenter.recv_status == 0)).count()
  34. data.append({"name" : msg_type, "num": c1})
  35. logger.info(data)
  36. return data
  37. def update_msg_read(db: Session, user_id: int, msg_type: str, msg_id: str) -> None:
  38. db.query(MsgCenter).filter(and_(MsgCenter.msg_type == msg_type, MsgCenter.recv_userid == user_id, MsgCenter.msg_id == str(msg_id))).update({"recv_status": 1, "update_time": datetime.now()})
  39. db.commit()