From ad44d4d6b2ada07f8de8e9a353b6000954181958 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Tue, 15 Jul 2025 14:47:16 +0800 Subject: [PATCH] Historical conversation batch delete --- apps/chat/serializers/chat_record.py | 11 +++++++++++ apps/chat/urls.py | 1 + apps/chat/views/chat_record.py | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/apps/chat/serializers/chat_record.py b/apps/chat/serializers/chat_record.py index 4ed5ae90a..a32240790 100644 --- a/apps/chat/serializers/chat_record.py +++ b/apps/chat/serializers/chat_record.py @@ -132,6 +132,17 @@ class HistoricalConversationOperateSerializer(serializers.Serializer): chat_user_id=self.data.get('chat_user_id')).update(is_deleted=True) return True + class Clear(serializers.Serializer): + application_id = serializers.UUIDField(required=True, label=_('Application ID')) + chat_user_id = serializers.UUIDField(required=True, label=_('Chat User ID')) + + def batch_logic_delete(self, with_valid=True): + if with_valid: + self.is_valid(raise_exception=True) + QuerySet(Chat).filter(application_id=self.data.get('application_id'), + chat_user_id=self.data.get('chat_user_id')).update(is_deleted=True) + return True + class HistoricalConversationRecordSerializer(serializers.Serializer): application_id = serializers.UUIDField(required=True, label=_('Application ID')) diff --git a/apps/chat/urls.py b/apps/chat/urls.py index a1ba999a9..d5bdb60dd 100644 --- a/apps/chat/urls.py +++ b/apps/chat/urls.py @@ -20,6 +20,7 @@ urlpatterns = [ path('historical_conversation', views.HistoricalConversationView.as_view(), name='historical_conversation'), path('historical_conversation//record/',views.ChatRecordView.as_view(),name='conversation_details'), path('historical_conversation//', views.HistoricalConversationView.PageView.as_view(), name='historical_conversation'), + path('historical_conversation/clear',views.HistoricalConversationView.BatchDelete.as_view(), name='historical_conversation_clear'), path('historical_conversation/',views.HistoricalConversationView.Operate.as_view(), name='historical_conversation_operate'), path('historical_conversation_record/', views.HistoricalConversationRecordView.as_view(), name='historical_conversation_record'), path('historical_conversation_record///', views.HistoricalConversationRecordView.PageView.as_view(), name='historical_conversation_record') diff --git a/apps/chat/views/chat_record.py b/apps/chat/views/chat_record.py index 754d56e9b..970da5431 100644 --- a/apps/chat/views/chat_record.py +++ b/apps/chat/views/chat_record.py @@ -99,6 +99,24 @@ class HistoricalConversationView(APIView): 'chat_id': chat_id, }).logic_delete()) + class BatchDelete(APIView): + authentication_classes = [TokenAuth] + + @extend_schema( + methods=['DELETE'], + description=_("Batch delete history conversation"), + summary=_("Batch delete history conversation"), + operation_id=_("Batch delete history conversation"), # type: ignore + parameters=HistoricalConversationOperateAPI.get_parameters(), + responses=HistoricalConversationOperateAPI.get_response(), + tags=[_('Chat')] # type: ignore + ) + def delete(self, request: Request): + return result.success(HistoricalConversationOperateSerializer.Clear(data={ + 'application_id': request.auth.application_id, + 'chat_user_id': request.auth.chat_user_id, + }).batch_logic_delete()) + class PageView(APIView): authentication_classes = [TokenAuth]