feat: support via site-msg websocket send popup msg

This commit is contained in:
Bai
2026-04-21 14:35:07 +08:00
committed by Jiangjie Bai
parent 37aea52f70
commit c31db26290
3 changed files with 14 additions and 5 deletions

View File

@@ -14,6 +14,14 @@ class SiteMessage(JMSBaseModel):
read_at = models.DateTimeField(default=None, null=True)
comment = ''
def as_data(self):
return {
'id': str(self.id),
'content': self.content.as_data() if self.content else {},
'has_read': self.has_read,
'date_created': str(self.date_created)
}
class MessageContent(JMSBaseModel):
DisplayMode = SiteMessageDisplayMode

View File

@@ -68,8 +68,7 @@ class SiteMessageUtil:
def get_user_display_msgs(cls, user_id):
msgs = SiteMessage.objects.filter(user_id=user_id, has_read=False).exclude(
content__display_mode=SiteMessageModel.DisplayMode.default
).values_list('content', flat=True).distinct()
msgs = SiteMessageModel.objects.filter(id__in=msgs)
).prefetch_related('content')
return msgs
@classmethod

View File

@@ -6,7 +6,7 @@ from common.db.utils import safe_db_connection
from common.utils import get_logger
from .signal_handlers import new_site_msg_chan
from .site_msg import SiteMessageUtil
from .models.site_msg import MessageContent
from .models.site_msg import SiteMessage
logger = get_logger(__name__)
@@ -48,8 +48,10 @@ class SiteMsgWebsocket(JsonWebsocketConsumer):
def send_site_msg_for_display(self, user_id):
msgs = SiteMessageUtil.get_user_display_msgs(user_id)
for msg in msgs:
msg: MessageContent
logger.debug('Send need display site msg to user: {} {} {}'.format(user_id, msg.id, msg.display_mode))
msg: SiteMessage
logger.debug('Send need display site msg to user: {} {} {}'.format(
user_id, msg.id, msg.content.display_mode
))
msg_data = msg.as_data()
self.send_json({'type': 'display', 'site_msg': msg_data})