#!/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: str , user_id: int) -> None: new_msg = MsgCenter( msg_type = msg_type, msg_id = str(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 add_message(db: Session, msg_type: str, recv_userid: str , title: str, content: str, foreign_key: str = '', from_scenario: str = '') -> str: new_msg = MsgCenter( msg_type = msg_type, msg_id = new_guid(), recv_time = datetime.now(), recv_userid = recv_userid, recv_status = 0, update_time = datetime.now(), title = title, content = content, foreign_key = foreign_key, from_scenario = from_scenario, del_flag = '0' ) db.add(new_msg) db.commit() db.refresh(new_msg) return new_msg.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()) # logger.info(msg_type) c1 = 0 if msg_type == '事件管理': # 等同 list_active where = and_(EventBase.del_flag == '0', EventBase.event_title != '', EventBase.event_status.in_(['0', '1'])) c1 = db.query(EventBase).filter(where).count() else: if msg_type == '巡查工作': where = and_(MsgCenter.msg_type.in_(['隐患巡查'])) if msg_type == '风险防控': where = and_(MsgCenter.msg_type.in_(['风险排查'])) elif msg_type == '数据管理': where = and_(MsgCenter.msg_type == '数据采集') elif msg_type == '值班管理': where = and_(MsgCenter.msg_type == '值班消息') elif msg_type == '工作审批': where = and_(MsgCenter.msg_type == '审批消息') c1 = db.query(MsgCenter).filter(where).filter(and_(MsgCenter.del_flag == '0', MsgCenter.recv_userid == user_id, MsgCenter.recv_status == 0)).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, foreign_key: str) -> None: 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()}) db.commit()