fix bug
This commit is contained in:
@ -1,14 +1,18 @@
|
||||
import json
|
||||
from typing import Union, Any, List
|
||||
|
||||
from fastapi import APIRouter, BackgroundTasks, Depends
|
||||
from fastapi import Request
|
||||
from sqlalchemy.orm import Session
|
||||
from starlette.responses import PlainTextResponse
|
||||
|
||||
from app import schemas
|
||||
from app.chain.message import MessageChain
|
||||
from app.core.config import settings
|
||||
from app.core.security import verify_token
|
||||
from app.db import get_db
|
||||
from app.db.models import User
|
||||
from app.db.models.message import Message
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.db.userauth import get_current_active_superuser
|
||||
from app.log import logger
|
||||
@ -52,6 +56,25 @@ async def web_message(text: str, current_user: User = Depends(get_current_active
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@router.get("/web", summary="获取WEB消息", response_model=List[dict])
|
||||
def get_web_message(_: schemas.TokenPayload = Depends(verify_token),
|
||||
db: Session = Depends(get_db),
|
||||
page: int = 1,
|
||||
count: int = 20):
|
||||
"""
|
||||
获取WEB消息列表
|
||||
"""
|
||||
ret_messages = []
|
||||
messages = Message.list_by_page(db, page=page, count=count)
|
||||
for message in messages:
|
||||
try:
|
||||
ret_messages.append(message.to_dict())
|
||||
except Exception as e:
|
||||
logger.error(f"获取WEB消息列表失败: {str(e)}")
|
||||
continue
|
||||
return ret_messages
|
||||
|
||||
|
||||
def wechat_verify(echostr: str, msg_signature: str,
|
||||
timestamp: Union[str, int], nonce: str) -> Any:
|
||||
"""
|
||||
|
@ -1,5 +1,6 @@
|
||||
import json
|
||||
import queue
|
||||
import time
|
||||
from typing import Optional, Any
|
||||
|
||||
from app.utils.singleton import Singleton
|
||||
@ -24,8 +25,10 @@ class MessageHelper(metaclass=Singleton):
|
||||
else:
|
||||
if isinstance(message, str):
|
||||
self.user_queue.put(message)
|
||||
elif hasattr(message, "dict"):
|
||||
self.user_queue.put(json.dumps(message.dict()))
|
||||
elif hasattr(message, "to_dict"):
|
||||
content = message.to_dict()
|
||||
content['date'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||
self.user_queue.put(json.dumps(content))
|
||||
|
||||
def get(self, role: str = "sys") -> Optional[str]:
|
||||
"""
|
||||
|
@ -17,18 +17,20 @@ class CommingMessage(BaseModel):
|
||||
channel: Optional[MessageChannel] = None
|
||||
# 消息体
|
||||
text: Optional[str] = None
|
||||
# 时间
|
||||
date: Optional[str] = None
|
||||
# 消息方向
|
||||
action: Optional[int] = 0
|
||||
|
||||
def dict(self):
|
||||
def to_dict(self):
|
||||
"""
|
||||
转换为字典
|
||||
"""
|
||||
return {
|
||||
"userid": self.userid,
|
||||
"username": self.username,
|
||||
"channel": self.channel.value if self.channel else None,
|
||||
"text": self.text,
|
||||
"action": 0
|
||||
}
|
||||
items = self.dict()
|
||||
for k, v in items.items():
|
||||
if isinstance(v, MessageChannel):
|
||||
items[k] = v.value
|
||||
return items
|
||||
|
||||
|
||||
class Notification(BaseModel):
|
||||
@ -49,18 +51,21 @@ class Notification(BaseModel):
|
||||
link: Optional[str] = None
|
||||
# 用户ID
|
||||
userid: Optional[Union[str, int]] = None
|
||||
# 时间
|
||||
date: Optional[str] = None
|
||||
# 消息方向
|
||||
action: Optional[int] = 1
|
||||
|
||||
def dict(self):
|
||||
return {
|
||||
"channel": self.channel.value if self.channel else None,
|
||||
"mtype": self.mtype.value if self.mtype else None,
|
||||
"title": self.title,
|
||||
"text": self.text,
|
||||
"image": self.image,
|
||||
"link": self.link,
|
||||
"userid": self.userid,
|
||||
"action": 1
|
||||
}
|
||||
def to_dict(self):
|
||||
"""
|
||||
转换为字典
|
||||
"""
|
||||
items = self.dict()
|
||||
for k, v in items.items():
|
||||
if isinstance(v, MessageChannel) \
|
||||
or isinstance(v, NotificationType):
|
||||
items[k] = v.value
|
||||
return items
|
||||
|
||||
|
||||
class NotificationSwitch(BaseModel):
|
||||
|
Reference in New Issue
Block a user