From 70f8983d0a4ddbb5d379aab416a8cce95abafc45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 8 Mar 2021 22:13:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=B6=88=E6=81=AF=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dvadmin-backend/apps/system/filters.py | 11 +- .../apps/system/models/__init__.py | 1 + .../apps/system/models/message_push.py | 5 +- dvadmin-backend/apps/system/serializers.py | 34 +- dvadmin-backend/apps/system/views.py | 5 +- .../scripts/permission/permission_menu.sql | 4 +- dvadmin-ui/src/api/system/message.js | 54 +++ dvadmin-ui/src/views/system/message/index.vue | 385 +++++++++++++++++- 8 files changed, 469 insertions(+), 30 deletions(-) create mode 100755 dvadmin-ui/src/api/system/message.js diff --git a/dvadmin-backend/apps/system/filters.py b/dvadmin-backend/apps/system/filters.py index 5e32afe..2731797 100644 --- a/dvadmin-backend/apps/system/filters.py +++ b/dvadmin-backend/apps/system/filters.py @@ -1,6 +1,6 @@ import django_filters -from apps.system.models import DictDetails, DictData, ConfigSettings +from apps.system.models import DictDetails, DictData, ConfigSettings, MessagePush class DictDataFilter(django_filters.rest_framework.FilterSet): @@ -32,3 +32,12 @@ class ConfigSettingsFilter(django_filters.rest_framework.FilterSet): class Meta: model = ConfigSettings fields = '__all__' + +class MessagePushFilter(django_filters.rest_framework.FilterSet): + """ + 消息通知 简单过滤器 + """ + + class Meta: + model = MessagePush + fields = '__all__' diff --git a/dvadmin-backend/apps/system/models/__init__.py b/dvadmin-backend/apps/system/models/__init__.py index 69188a7..38e4a36 100644 --- a/dvadmin-backend/apps/system/models/__init__.py +++ b/dvadmin-backend/apps/system/models/__init__.py @@ -4,4 +4,5 @@ from ..models.dict_details import DictDetails from ..models.web_set import WebSet from ..models.save_file import SaveFile from ..models.message_push import MessagePush +from ..models.message_push import MessagePushUser diff --git a/dvadmin-backend/apps/system/models/message_push.py b/dvadmin-backend/apps/system/models/message_push.py index df1a991..25dbadd 100644 --- a/dvadmin-backend/apps/system/models/message_push.py +++ b/dvadmin-backend/apps/system/models/message_push.py @@ -11,11 +11,12 @@ from apps.permission.models import UserProfile class MessagePush(CoreModel): - title = CharField(max_length=128, verbose_name="通知标题") - content = TextField(verbose_name="通知内容") + title = CharField(max_length=128, verbose_name="消息标题") + content = TextField(verbose_name="消息内容") message_type = CharField(max_length=8, verbose_name="消息类型") is_reviewed = BooleanField(default=True, verbose_name="是否审核") status = CharField(max_length=8, verbose_name="消息状态") + to_path = CharField(max_length=256, verbose_name="跳转路径", null=True, blank=True, ) user = ManyToManyField(to="permission.UserProfile", related_name="user", related_query_name="user_query", through='MessagePushUser', through_fields=('message_push', 'user')) diff --git a/dvadmin-backend/apps/system/serializers.py b/dvadmin-backend/apps/system/serializers.py index 960e5e5..56a7b59 100644 --- a/dvadmin-backend/apps/system/serializers.py +++ b/dvadmin-backend/apps/system/serializers.py @@ -1,8 +1,7 @@ from rest_framework import serializers from apps.op_drf.serializers import CustomModelSerializer -from apps.permission.serializers import UserProfileSerializer -from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush +from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush, MessagePushUser # ================================================= # @@ -162,11 +161,6 @@ class MessagePushSerializer(CustomModelSerializer): """ 消息通知 简单序列化器 """ - # users = UserProfileSerializer(read_only=True) - users = serializers.SerializerMethodField(read_only=True) - - def get_users(self, obj): - return UserProfileSerializer(obj.user.all(), many=True).data class Meta: model = MessagePush @@ -198,5 +192,27 @@ class ExportMessagePushSerializer(CustomModelSerializer): class Meta: model = MessagePush fields = ( - 'id', 'title', 'content', 'message_type', 'is_reviewed', 'status', 'users', 'creator', 'modifier', - 'update_datetime', 'create_datetime') + 'id', 'title', 'content', 'message_type', 'is_reviewed', 'status', 'users', 'creator', 'modifier', + 'update_datetime', 'create_datetime') + +class MessagePushUserSerializer(CustomModelSerializer): + """ + 消息通知 用户查询简单序列化器 + """ + # users = UserProfileSerializer(read_only=True) + # users = serializers.SerializerMethodField(read_only=True) + is_read = serializers.SerializerMethodField(read_only=True) + + # def get_users(self, obj): + # return UserProfileSerializer(obj.user.all(), many=True).data + # 返回这个消息是否已读 + def get_is_read(self, obj): + object = MessagePushUser.objects.filter(message_push=obj,user=self.context.get('request').user).first() + return object.is_read if object else False + + class Meta: + model = MessagePush + fields = "__all__" + + def save(self, **kwargs): + return super().save(**kwargs) diff --git a/dvadmin-backend/apps/system/views.py b/dvadmin-backend/apps/system/views.py index c4657ab..7f1b16b 100644 --- a/dvadmin-backend/apps/system/views.py +++ b/dvadmin-backend/apps/system/views.py @@ -2,7 +2,7 @@ from rest_framework.request import Request from apps.op_drf.filters import DataLevelPermissionsFilter from apps.op_drf.viewsets import CustomModelViewSet -from apps.system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter +from apps.system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter, MessagePushFilter from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush from apps.system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \ DictDetailsCreateUpdateSerializer, DictDetailsListSerializer, ConfigSettingsSerializer, \ @@ -137,7 +137,7 @@ class SaveFileModelViewSet(CustomModelViewSet): serializer_class = SaveFileSerializer create_serializer_class = SaveFileCreateUpdateSerializer update_serializer_class = SaveFileCreateUpdateSerializer - # filter_class = ConfigSettingsFilter + filter_class = ConfigSettingsFilter extra_filter_backends = [DataLevelPermissionsFilter] search_fields = ('configName',) ordering = 'id' # 默认排序 @@ -152,6 +152,7 @@ class MessagePushModelViewSet(CustomModelViewSet): create_serializer_class = MessagePushCreateUpdateSerializer update_serializer_class = MessagePushCreateUpdateSerializer extra_filter_backends = [DataLevelPermissionsFilter] + filter_class = MessagePushFilter ordering = "-update_datetime" # 默认排序 def get_message_list(self, request: Request, *args, **kwargs): diff --git a/dvadmin-backend/scripts/permission/permission_menu.sql b/dvadmin-backend/scripts/permission/permission_menu.sql index 03e0d2e..0f87319 100644 --- a/dvadmin-backend/scripts/permission/permission_menu.sql +++ b/dvadmin-backend/scripts/permission/permission_menu.sql @@ -79,6 +79,6 @@ INSERT INTO `permission_menu` VALUES (45, '', 'admin', '2021-03-03 15:25:15.2249 INSERT INTO `permission_menu` VALUES (46, '', 'admin', '2021-03-03 15:28:30.061632', '2021-03-03 15:27:19.945663', '2', NULL, '文件下载', 4, '1', NULL, NULL, NULL, 'GET', 'system:clearsavefile:download:post', '1', '1', '1', 1, 11); INSERT INTO `permission_menu` VALUES (47, '', 'admin', '2021-03-07 14:35:34.237127', '2021-03-07 14:32:06.754815', '1', 'message', '消息通知', 4, '1', 'system/message', 'system/message/index', '/system/message/', 'GET', 'system:message:get', '1', '1', '1', 1, 1); INSERT INTO `permission_menu` VALUES (48, '', 'admin', '2021-03-07 14:35:06.718432', '2021-03-07 14:35:06.718463', '2', NULL, '发布通知', 1, '1', NULL, NULL, '/system/message/', 'POST', 'system:message:post', '1', '1', '1', 1, 47); -INSERT INTO `permission_menu` VALUES (49, '', 'admin', '2021-03-07 14:36:47.675806', '2021-03-07 14:36:47.675837', '2', NULL, '修改通知', 2, '1', NULL, NULL, '/system/message/', 'PUT', 'system:message:put', '1', '1', '1', 1, 47); -INSERT INTO `permission_menu` VALUES (50, '', 'admin', '2021-03-07 14:37:52.130536', '2021-03-07 14:37:52.130567', '2', NULL, '删除通知', 3, '1', NULL, NULL, '/permission/menu/', 'DELETE', 'permission:menu:delete', '1', '1', '1', 1, 47); +INSERT INTO `permission_menu` VALUES (49, '', 'admin', '2021-03-08 13:04:32.158707', '2021-03-07 14:36:47.675837', '2', NULL, '修改通知', 2, '1', NULL, NULL, '/system/message/{id}/', 'PUT', 'system:message:{id}:put', '1', '1', '1', 1, 47); +INSERT INTO `permission_menu` VALUES (50, '', 'admin', '2021-03-08 13:04:58.206693', '2021-03-07 14:37:52.130567', '2', NULL, '删除通知', 3, '1', NULL, NULL, '/permission/menu/{id}/', 'DELETE', 'permission:menu:{id}:delete', '1', '1', '1', 1, 47); INSERT INTO `permission_menu` VALUES (51, '', 'admin', '2021-03-07 14:42:37.410336', '2021-03-07 14:42:37.410366', '2', NULL, '通知导出', 4, '1', NULL, NULL, '/system/message/export/', 'GET', 'system:message:export:get', '1', '1', '1', 1, 47); diff --git a/dvadmin-ui/src/api/system/message.js b/dvadmin-ui/src/api/system/message.js new file mode 100755 index 0000000..c21f688 --- /dev/null +++ b/dvadmin-ui/src/api/system/message.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 查询参数列表 +export function listMessage(query) { + return request({ + url: '/system/message/', + method: 'get', + params: query + }) +} + +// 查询参数详细 +export function getMessage(messageId) { + return request({ + url: '/system/message/' + messageId + '/', + method: 'get' + }) +} + +// 新增参数配置 +export function addMessage(data) { + return request({ + url: '/system/message/', + method: 'post', + data: data + }) +} + +// 修改参数配置 +export function updateMessage(data) { + return request({ + url: '/system/message/' + data.id + '/', + method: 'put', + data: data + }) +} + +// 删除参数配置 +export function delMessage(messageId) { + return request({ + url: '/system/message/' + messageId + '/', + method: 'delete' + }) +} + + +// 导出参数 +export function exportMessage(query) { + return request({ + url: '/system/message/export/', + method: 'get', + params: query + }) +} diff --git a/dvadmin-ui/src/views/system/message/index.vue b/dvadmin-ui/src/views/system/message/index.vue index 994e089..d9af126 100644 --- a/dvadmin-ui/src/views/system/message/index.vue +++ b/dvadmin-ui/src/views/system/message/index.vue @@ -1,22 +1,379 @@ - -