db_msg_center.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. '''
  11. def add_msg(db: Session, msg_type: str, msg_id: str , user_id: int) -> None:
  12. new_msg = MsgCenter(
  13. msg_type = msg_type, msg_id = str(msg_id), recv_time = datetime.now(), recv_userid = user_id, recv_status = 0, update_time = datetime.now()
  14. )
  15. db.add(new_msg)
  16. db.commit()
  17. db.refresh(new_msg)
  18. return new_msg.id
  19. '''
  20. def add_message(db: Session, msg_type: str, recv_userid: str , title: str, content: str, foreign_key: str = '', from_scenario: str = '') -> str:
  21. new_msg = MsgCenter(
  22. msg_type = msg_type,
  23. msg_id = new_guid(),
  24. recv_time = datetime.now(),
  25. recv_userid = recv_userid,
  26. recv_status = 0,
  27. update_time = datetime.now(),
  28. title = title,
  29. content = content,
  30. foreign_key = foreign_key,
  31. from_scenario = from_scenario,
  32. del_flag = '0'
  33. )
  34. db.add(new_msg)
  35. db.commit()
  36. db.refresh(new_msg)
  37. return new_msg.msg_id
  38. def get_unread_msg_count(db: Session, user_id: int, msg_type_list: dict) -> dict:
  39. data = []
  40. for msg_type in msg_type_list:
  41. where = and_(MsgCenter.msg_type == msg_type.strip())
  42. # logger.info(msg_type)
  43. c1 = 0
  44. if msg_type == '事件管理':
  45. # 等同 list_active
  46. where = and_(EventBase.del_flag == '0', EventBase.event_title != '', EventBase.event_status.in_(['0', '1']))
  47. c1 = db.query(EventBase).filter(where).count()
  48. else:
  49. if msg_type == '巡查工作':
  50. where = and_(MsgCenter.msg_type.in_(['隐患巡查']))
  51. if msg_type == '风险防控':
  52. where = and_(MsgCenter.msg_type.in_(['风险排查']))
  53. elif msg_type == '数据管理':
  54. where = and_(MsgCenter.msg_type == '数据采集')
  55. elif msg_type == '值班管理':
  56. where = and_(MsgCenter.msg_type == '值班消息')
  57. elif msg_type == '工作审批':
  58. where = and_(MsgCenter.msg_type == '审批消息')
  59. c1 = db.query(MsgCenter).filter(where).filter(and_(MsgCenter.del_flag == '0', MsgCenter.recv_userid == user_id, MsgCenter.recv_status == 0)).count()
  60. data.append({"name" : msg_type, "num": c1})
  61. # logger.info(data)
  62. return data
  63. def update_msg_read(db: Session, user_id: int, msg_type: str, foreign_key: str) -> None:
  64. db.query(MsgCenter).filter(and_(MsgCenter.msg_type == msg_type, MsgCenter.recv_userid == user_id, MsgCenter.foreign_key == str(foreign_key))).update({"recv_status": 1, "update_time": datetime.now()})
  65. db.commit()