From 5127214375cb4ad6458276a7a0c38e3cd6951c69 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Thu, 14 Apr 2022 12:18:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=AB=99=E5=86=85=E4=BF=A1=E4=B8=80?= =?UTF-8?q?=E9=94=AE=E5=B7=B2=E8=AF=BB=20(#8057)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: feng626 <1304903146@qq.com> --- apps/notifications/api/site_msgs.py | 6 ++++++ apps/notifications/site_msg.py | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/notifications/api/site_msgs.py b/apps/notifications/api/site_msgs.py index 632101384..29bd785d5 100644 --- a/apps/notifications/api/site_msgs.py +++ b/apps/notifications/api/site_msgs.py @@ -50,6 +50,12 @@ class SiteMessageViewSet(ListModelMixin, RetrieveModelMixin, JMSGenericViewSet): SiteMessageUtil.mark_msgs_as_read(user.id, ids) return Response({'detail': 'ok'}) + @action(methods=[PATCH], detail=False, url_path='mark-as-read-all') + def mark_as_read_all(self, request, **kwargs): + user = request.user + SiteMessageUtil.mark_msgs_as_read(user.id) + return Response({'detail': 'ok'}) + @action(methods=[POST], detail=False) def send(self, request, **kwargs): seri = self.get_serializer(data=request.data) diff --git a/apps/notifications/site_msg.py b/apps/notifications/site_msg.py index 7a3c9457f..faa36b5f4 100644 --- a/apps/notifications/site_msg.py +++ b/apps/notifications/site_msg.py @@ -1,4 +1,4 @@ -from django.db.models import F +from django.db.models import F, Q from django.db import transaction from common.utils.timezone import local_now @@ -80,11 +80,11 @@ class SiteMessageUtil: return site_msgs_count @classmethod - def mark_msgs_as_read(cls, user_id, msg_ids): - site_msg_users = SiteMessageUsers.objects.filter( - user_id=user_id, sitemessage_id__in=msg_ids, - has_read=False - ) + def mark_msgs_as_read(cls, user_id, msg_ids=None): + q = Q(user_id=user_id) & Q(has_read=False) + if msg_ids is not None: + q &= Q(sitemessage_id__in=msg_ids) + site_msg_users = SiteMessageUsers.objects.filter(q) for site_msg_user in site_msg_users: site_msg_user.has_read = True