diff --git a/apps/application/serializers/chat_serializers.py b/apps/application/serializers/chat_serializers.py index b90194d5ae2..ea43c6c5793 100644 --- a/apps/application/serializers/chat_serializers.py +++ b/apps/application/serializers/chat_serializers.py @@ -174,7 +174,14 @@ def get_query_set(self, select_ids=None): condition = base_condition & min_trample_query else: condition = base_condition - return query_set.filter(condition).order_by("-application_chat.update_time") + inner_queryset = QuerySet(Chat).filter(application_id=self.data.get("application_id")) + if 'abstract' in self.data and self.data.get('abstract') is not None: + inner_queryset = inner_queryset.filter(abstract__icontains=self.data.get('abstract')) + + return { + 'inner_queryset': inner_queryset, + 'default_queryset': query_set.filter(condition).order_by("-application_chat.update_time") + } def list(self, with_valid=True): if with_valid: diff --git a/apps/application/sql/list_application_chat.sql b/apps/application/sql/list_application_chat.sql index 7f3e1680c99..c9f83c6b7c3 100644 --- a/apps/application/sql/list_application_chat.sql +++ b/apps/application/sql/list_application_chat.sql @@ -11,6 +11,9 @@ FROM chat_id FROM application_chat_record + WHERE chat_id IN ( + SELECT id FROM application_chat ${inner_queryset}) GROUP BY application_chat_record.chat_id - ) chat_record_temp ON application_chat."id" = chat_record_temp.chat_id \ No newline at end of file + ) chat_record_temp ON application_chat."id" = chat_record_temp.chat_id +${default_queryset} \ No newline at end of file