通知消息完善
parent
fcdfa6aa7b
commit
50f5b88146
|
@ -211,6 +211,8 @@ class UserProfileSerializer(CustomModelSerializer):
|
|||
"""
|
||||
admin = serializers.SerializerMethodField(read_only=True)
|
||||
deptId = serializers.IntegerField(source='dept.id', read_only=True)
|
||||
# 未读通知数量
|
||||
# unread_msg_count = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
def get_admin(self, obj: UserProfile):
|
||||
role_list = obj.role.all().values_list('admin', flat=True)
|
||||
|
@ -218,6 +220,13 @@ class UserProfileSerializer(CustomModelSerializer):
|
|||
return True
|
||||
return False
|
||||
|
||||
# def get_unread_msg_count(self, obj: UserProfile):
|
||||
# UserProfile.objects.all()
|
||||
# role_list = obj.role.all().values_list('admin', flat=True)
|
||||
# if True in list(set(role_list)):
|
||||
# return True
|
||||
# return False
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
depth = 1
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
from django.db import models
|
||||
from django.db.models import *
|
||||
|
||||
from apps.op_drf.fields import UpdateDateTimeField, CreateDateTimeField
|
||||
from apps.op_drf.models import CoreModel
|
||||
from apps.permission.models import UserProfile
|
||||
|
||||
"""
|
||||
消息通知模型
|
||||
|
@ -8,14 +11,14 @@ from apps.op_drf.models import CoreModel
|
|||
|
||||
|
||||
class MessagePush(CoreModel):
|
||||
content = TextField(verbose_name="通知内容")
|
||||
title = CharField(max_length=128, verbose_name="通知标题")
|
||||
is_read = BooleanField(default=False, verbose_name="是否已读")
|
||||
message_type = CharField(max_length=64, verbose_name="消息类型")
|
||||
is_reviewed = BooleanField(default=False, verbose_name="是否审核")
|
||||
is_send = BooleanField(default=False, verbose_name="是否已发送")
|
||||
recipient_id = ManyToManyField(to="permission.UserProfile", db_constraint=False, null=True, blank=True,
|
||||
related_name="recipient", related_query_name="recipient_query")
|
||||
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="消息状态")
|
||||
user = ManyToManyField(to="permission.UserProfile",
|
||||
related_name="user", related_query_name="user_query", through='MessagePushUser',
|
||||
through_fields=('message_push', 'user'))
|
||||
|
||||
class Meta:
|
||||
verbose_name = '消息通知'
|
||||
|
@ -23,3 +26,20 @@ class MessagePush(CoreModel):
|
|||
|
||||
def __str__(self):
|
||||
return f"{self.title}"
|
||||
|
||||
|
||||
class MessagePushUser(models.Model):
|
||||
message_push = ForeignKey(MessagePush, on_delete=CASCADE, db_constraint=False,
|
||||
related_name="messagepushuser_message_push",
|
||||
verbose_name='消息通知', help_text='消息通知')
|
||||
|
||||
user = ForeignKey(UserProfile, on_delete=CASCADE, db_constraint=False,
|
||||
related_name="messagepushuser_user",
|
||||
verbose_name='用户', help_text='用户')
|
||||
is_read = BooleanField(default=False, verbose_name="是否已读")
|
||||
update_datetime = UpdateDateTimeField() # 修改时间
|
||||
create_datetime = CreateDateTimeField() # 创建时间
|
||||
|
||||
class Meta:
|
||||
verbose_name = "消息通知与用户关系"
|
||||
verbose_name_plural = verbose_name
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
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 permission.serializers import UserProfileSerializer
|
||||
|
||||
|
||||
class DictDataSerializer(CustomModelSerializer):
|
||||
"""
|
||||
|
@ -155,20 +155,48 @@ class SaveFileCreateUpdateSerializer(CustomModelSerializer):
|
|||
fields = '__all__'
|
||||
|
||||
|
||||
# ================================================= #
|
||||
# ************** 消息通知 序列化器 ************** #
|
||||
# ================================================= #
|
||||
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
|
||||
|
||||
# recipient_id = UserProfileSerializer()
|
||||
class Meta:
|
||||
model = MessagePush
|
||||
fields = "__all__"
|
||||
depth = 1
|
||||
|
||||
def save(self, **kwargs):
|
||||
return super().save(**kwargs)
|
||||
|
||||
|
||||
class MessagePushCreateUpdateSerializer(CustomModelSerializer):
|
||||
"""
|
||||
消息通知 创建/更新时的列化器
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = MessagePush
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class ExportMessagePushSerializer(CustomModelSerializer):
|
||||
"""
|
||||
导出 消息通知 简单序列化器
|
||||
"""
|
||||
users = serializers.CharField(read_only=True)
|
||||
|
||||
def get_users(self, obj):
|
||||
return ','.join(MessagePush.objects.filter(id=obj.id).values_list('user__username', flat=True))
|
||||
|
||||
class Meta:
|
||||
model = MessagePush
|
||||
fields = (
|
||||
'id', 'title', 'content', 'message_type', 'is_reviewed', 'status', 'users', 'creator', 'modifier',
|
||||
'update_datetime', 'create_datetime')
|
||||
|
|
|
@ -22,6 +22,8 @@ urlpatterns = [
|
|||
# 用户获取个人消息通知列表页
|
||||
re_path('message/list/(?P<pk>.*)/', MessagePushModelViewSet.as_view({"get": "get_message_list"})),
|
||||
# 用户获取个人通知列表
|
||||
re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"}))
|
||||
re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"})),
|
||||
# 消息通知导出
|
||||
re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})),
|
||||
]
|
||||
urlpatterns += router.urls
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
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.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
|
||||
|
@ -7,8 +8,7 @@ from apps.system.serializers import DictDataSerializer, DictDataCreateUpdateSeri
|
|||
DictDetailsCreateUpdateSerializer, DictDetailsListSerializer, ConfigSettingsSerializer, \
|
||||
ConfigSettingsCreateUpdateSerializer, SaveFileSerializer, SaveFileCreateUpdateSerializer, \
|
||||
ExportConfigSettingsSerializer, ExportDictDataSerializer, ExportDictDetailsSerializer, \
|
||||
MessagePushSerializer, MessagePushCreateUpdateSerializer
|
||||
from apps.op_drf.filters import DataLevelPermissionsFilter
|
||||
MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer
|
||||
from utils.export_excel import export_excel_save_model
|
||||
from utils.response import SuccessResponse
|
||||
|
||||
|
@ -151,9 +151,8 @@ class MessagePushModelViewSet(CustomModelViewSet):
|
|||
serializer_class = MessagePushSerializer
|
||||
create_serializer_class = MessagePushCreateUpdateSerializer
|
||||
update_serializer_class = MessagePushCreateUpdateSerializer
|
||||
|
||||
extra_filter_backends = []
|
||||
ordering = "id" # 默认排序
|
||||
extra_filter_backends = [DataLevelPermissionsFilter]
|
||||
ordering = "-update_datetime" # 默认排序
|
||||
|
||||
def get_message_list(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
|
@ -189,3 +188,15 @@ class MessagePushModelViewSet(CustomModelViewSet):
|
|||
"""
|
||||
|
||||
pass
|
||||
|
||||
def export(self, request: Request, *args, **kwargs):
|
||||
"""
|
||||
导出岗位
|
||||
:param request:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态','通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间']
|
||||
data = ExportMessagePushSerializer(MessagePush.objects.all(), many=True).data
|
||||
return SuccessResponse(export_excel_save_model(request, field_data, data, '导出岗位数据.xls'))
|
||||
|
|
|
@ -28,7 +28,7 @@ MONGO_PORT = 27017
|
|||
REDIS_DB = 1
|
||||
REDIS_HOST = '127.0.0.1'
|
||||
REDIS_PORT = 6379
|
||||
REDIS_PASSWORD = ''
|
||||
REDIS_PASSWORD = 'q1w2e3r4T%Y^U&'
|
||||
|
||||
# ================================================= #
|
||||
# ************** 默认配置 ************** #
|
||||
|
|
|
@ -132,7 +132,7 @@ def export_excel_save_model(request,field_data,data,FilName):
|
|||
savefile.type = 'application/vnd.ms-excel'
|
||||
savefile.size = os.path.getsize(os.path.join(settings.MEDIA_ROOT, file_rul))
|
||||
savefile.address = '本地存储'
|
||||
savefile.creator = request.user.username
|
||||
savefile.creator = request.user.id
|
||||
savefile.modifier = request.user.username
|
||||
savefile.save()
|
||||
return SaveFileSerializer(savefile).data
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<template>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "message",
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
Loading…
Reference in New Issue