feat: 站内信一键已读 (#8057)

Co-authored-by: feng626 <1304903146@qq.com>
pull/8060/head
fit2bot 2022-04-14 12:18:11 +08:00 committed by GitHub
parent b610d71e11
commit 5127214375
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 6 deletions

View File

@ -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)

View File

@ -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