説明なし

views.py 5.8KB

    # -*- coding: utf-8 -*- from django.conf import settings from django.http import JsonResponse from account.models import UserInfo from message.models import UserMessageInfo, SystemMessageInfo, SystemMessageReadInfo, SystemMessageDeleteInfo from utils.page_utils import pagination from utils.error.errno_utils import UserStatusCode, MessageStatusCode from utils.error.response_utils import response from utils.redis.rmessage import set_system_message_delete_info, get_system_message_delete_info def message_list_api(request): """ 消息列表 :param request: :return: """ user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '') messages = UserMessageInfo.MESSAGE_TYPE_INFO final_messages = [] for message in messages: msg_type = message['msg_type'] if msg_type == UserMessageInfo.SYSTEM: deleted_message_ids = get_system_message_delete_info(user_id) type_messages = SystemMessageInfo.objects.filter( status=True, ).exclude( pk__in=deleted_message_ids, ) else: type_messages = UserMessageInfo.objects.filter( to_uid=user_id, msg_type=msg_type, status=True, ) type_messages = type_messages.order_by( '-pk' )[:settings.MESSAGE_NUM_PER_PAGE] type_messages = [msg.msg_info(user_id) for msg in type_messages] message['msg_list'] = type_messages final_messages.append(message) return JsonResponse({ 'status': 200, 'message': u'获取消息列表成功', 'data': { 'messages': final_messages, }, }) def message_type_list_api(request, msg_type): """ 分类消息列表 :param request: :param msg_type: :return: """ user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '') page = int(request.POST.get('page', 0) or request.GET.get('page', 0) or 1) num = int(request.POST.get('num', 0) or request.GET.get('num', 0) or settings.MESSAGE_NUM_PER_PAGE) if msg_type == UserMessageInfo.SYSTEM: deleted_message_ids = get_system_message_delete_info(user_id) type_messages = SystemMessageInfo.objects.filter( status=True, ).exclude( pk__in=deleted_message_ids, ) else: type_messages = UserMessageInfo.objects.filter( to_uid=user_id, msg_type=msg_type, status=True, ) type_messages = type_messages.order_by( '-pk' ) type_messages, left = pagination(type_messages, page, num) type_messages = [msg.msg_info(user_id) for msg in type_messages] return JsonResponse({ 'status': 200, 'message': u'获取消息列表成功', 'data': { 'messages': type_messages, 'left': left, }, }) def message_type_read_api(request, msg_type=None): """ 消息读取 :param request: :return: """ user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '') pk = int(request.POST.get('pk', 0) or request.GET.get('pk', 0) or -1) _all = request.POST.get('all', '') or request.GET.get('all', '') # 用户校验 try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return response(UserStatusCode.USER_NOT_FOUND) if msg_type == UserMessageInfo.SYSTEM: if pk > 0: # 系统消息单个读取 if not SystemMessageInfo.objects.filter(pk=pk).exists(): return response(MessageStatusCode.MESSAGE_NOT_FOUND) SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=pk) if _all: # 系统消息全部读取 for msg in SystemMessageInfo.objects.filter(status=True): SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=msg.pk) else: if pk > 0: # 用户(点赞/评论)消息单个读取 UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(read=True) if _all: # 用户消息(点赞/评论)全部读取 UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(read=True) return JsonResponse({ 'status': 200, 'message': u'已读消息成功', }) def message_type_delete_api(request, msg_type=None): """ 消息删除 :param request: :param msg_type: :return: """ user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '') pk = int(request.POST.get('pk', 0) or request.GET.get('pk', 0) or -1) _all = request.POST.get('all', '') or request.GET.get('all', '') # 用户校验 try: user = UserInfo.objects.get(user_id=user_id) except UserInfo.DoesNotExist: return response(UserStatusCode.USER_NOT_FOUND) if msg_type == UserMessageInfo.SYSTEM: if pk > 0: # 系统消息单个删除 if not SystemMessageInfo.objects.filter(pk=pk).exists(): return response(MessageStatusCode.MESSAGE_NOT_FOUND) SystemMessageDeleteInfo.objects.get_or_create(user_id=user_id, msg_id=pk) if _all: # 系统消息全部删除 for msg in SystemMessageInfo.objects.filter(status=True): SystemMessageDeleteInfo.objects.get_or_create(user_id=user_id, msg_id=msg.pk) set_system_message_delete_info(user_id) else: if pk > 0: # 用户(点赞/评论)消息单个删除 UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(status=False) if _all: # 用户消息(点赞/评论)全部删除 UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(status=False) return JsonResponse({ 'status': 200, 'message': u'消息删除成功', })