From eb247500288aaf392b01445894180cbe74d54441 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Wed, 13 Nov 2024 15:05:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=B9=E8=AF=9D=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=BD=BF=E7=94=A8=E6=9C=80=E5=90=8E=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --story=1017064 --user=王孝刚 【对话日志】- 列表排序使用最后对话时间 issue #1587 https://www.tapd.cn/57709429/s/1609354 --- .../0020_application_record_update_time.py | 22 +++++++++++++++++++ .../serializers/chat_message_serializers.py | 5 ++++- .../serializers/chat_serializers.py | 8 +++---- ui/src/views/log/index.vue | 4 ++-- 4 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 apps/application/migrations/0020_application_record_update_time.py diff --git a/apps/application/migrations/0020_application_record_update_time.py b/apps/application/migrations/0020_application_record_update_time.py new file mode 100644 index 000000000..dc1d14081 --- /dev/null +++ b/apps/application/migrations/0020_application_record_update_time.py @@ -0,0 +1,22 @@ +from django.db import migrations, connection + +batch_update_update_time = """ +UPDATE application_chat ac +SET update_time = acr_max.max_update_time +FROM ( + SELECT chat_id, MAX(update_time) AS max_update_time + FROM application_chat_record + GROUP BY chat_id +) acr_max +WHERE ac.id = acr_max.chat_id; +""" + + +class Migration(migrations.Migration): + dependencies = [ + ('application', '0019_application_file_upload_enable_and_more.py'), + ] + + operations = [ + migrations.RunPython(batch_update_update_time), + ] diff --git a/apps/application/serializers/chat_message_serializers.py b/apps/application/serializers/chat_message_serializers.py index b14e9f33e..455ef6a67 100644 --- a/apps/application/serializers/chat_message_serializers.py +++ b/apps/application/serializers/chat_message_serializers.py @@ -6,6 +6,7 @@ @date:2023/11/14 13:51 @desc: """ +from datetime import datetime import uuid from typing import List, Dict from uuid import UUID @@ -125,7 +126,9 @@ class ChatInfo: # 插入数据库 if not QuerySet(Chat).filter(id=self.chat_id).exists(): Chat(id=self.chat_id, application_id=self.application.id, abstract=chat_record.problem_text[0:1024], - client_id=client_id).save() + client_id=client_id, update_time=datetime.now()).save() + else: + Chat.objects.filter(id=self.chat_id).update(update_time=datetime.now()) # 插入会话记录 chat_record.save() diff --git a/apps/application/serializers/chat_serializers.py b/apps/application/serializers/chat_serializers.py index ad25ac7d9..45e18a1ed 100644 --- a/apps/application/serializers/chat_serializers.py +++ b/apps/application/serializers/chat_serializers.py @@ -127,12 +127,12 @@ class ChatSerializers(serializers.Serializer): "star_num": models.IntegerField(), 'trample_num': models.IntegerField(), 'comparer': models.CharField(), - 'application_chat.create_time': models.DateTimeField(), + 'application_chat.update_time': models.DateTimeField(), 'application_chat.id': models.UUIDField(), })) base_query_dict = {'application_chat.application_id': self.data.get("application_id"), - 'application_chat.create_time__gte': start_time, - 'application_chat.create_time__lte': end_time, + 'application_chat.update_time__gte': start_time, + 'application_chat.update_time__lte': end_time, } if 'abstract' in self.data and self.data.get('abstract') is not None: base_query_dict['application_chat.abstract__icontains'] = self.data.get('abstract') @@ -158,7 +158,7 @@ class ChatSerializers(serializers.Serializer): condition = base_condition & min_trample_query else: condition = base_condition - return query_set.filter(condition).order_by("-application_chat.create_time") + return query_set.filter(condition).order_by("-application_chat.update_time") def list(self, with_valid=True): if with_valid: diff --git a/ui/src/views/log/index.vue b/ui/src/views/log/index.vue index 9df70acb6..eb1b0c3aa 100644 --- a/ui/src/views/log/index.vue +++ b/ui/src/views/log/index.vue @@ -123,9 +123,9 @@ - +