123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- 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', '')).lower()
-
- 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 == 'true':
- 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 == 'true':
- 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', '')).lower()
-
- 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 == 'true':
- 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 == 'true':
- UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(status=False)
- return JsonResponse({
- 'status': 200,
- 'message': u'消息删除成功',
- })
|