fix: sys-site-msg support revoke

This commit is contained in:
Bai
2026-06-15 14:46:20 +08:00
parent 378a0a5686
commit d3ca87418c
3 changed files with 21 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
from rest_framework.decorators import action
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin
from rest_framework.response import Response
from django.shortcuts import get_object_or_404
from common.api import JMSGenericViewSet
from common.const.http import GET, PATCH, POST
@@ -11,6 +12,8 @@ from ..serializers import (
SiteMessageSendSerializer,
)
from ..site_msg import SiteMessageUtil
from ..models import MessageContent
__all__ = ('SiteMessageViewSet',)
@@ -59,5 +62,14 @@ class SiteMessageViewSet(ListModelMixin, RetrieveModelMixin, JMSGenericViewSet):
def send(self, request, **kwargs):
s = self.get_serializer(data=request.data)
s.is_valid(raise_exception=True)
SiteMessageUtil.send_msg(**s.validated_data, sender=request.user)
site_msg = SiteMessageUtil.send_msg(**s.validated_data, sender=request.user)
if site_msg:
return Response({'detail': 'ok', 'site_msg_id': str(site_msg.id)})
else:
return Response({'detail': 'error'})
@action(methods=[PATCH], detail=True, permission_classes=[OnlySuperUser,])
def revoke(self, request, **kwargs):
msg = get_object_or_404(MessageContent, id=kwargs['pk'])
msg.revoke_msg()
return Response({'detail': 'ok'})

View File

@@ -52,8 +52,15 @@ class MessageContent(JMSBaseModel):
return {
'id': str(self.id),
'subject': self.subject,
'is_broadcast': self.is_broadcast,
'message': self.message,
'display_mode': self.display_mode,
'date_created': str(self.date_created),
'sender': str(self.sender) if self.sender else ''
}
def revoke_msg(self):
if not self.is_broadcast:
return
self.is_broadcast = False
self.save()

View File

@@ -41,6 +41,7 @@ class SiteMessageUtil:
site_msg.users.add(*user_ids)
# 只有调用 save 才能触发 post_save 信号
site_msg.save()
return site_msg
@classmethod
def get_user_all_msgs(cls, user_id):