拍爱

views.py 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. from django.http import JsonResponse
  4. from account.models import UserInfo
  5. from message.models import UserMessageInfo, SystemMessageInfo, SystemMessageReadInfo, SystemMessageDeleteInfo
  6. from utils.page_utils import pagination
  7. from utils.error.errno_utils import UserStatusCode, MessageStatusCode
  8. from utils.error.response_utils import response
  9. from utils.redis.rmessage import set_system_message_delete_info, get_system_message_delete_info
  10. def message_list_api(request):
  11. """
  12. 消息列表
  13. :param request:
  14. :return:
  15. """
  16. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  17. messages = UserMessageInfo.MESSAGE_TYPE_INFO
  18. final_messages = []
  19. for message in messages:
  20. msg_type = message['msg_type']
  21. if msg_type == UserMessageInfo.SYSTEM:
  22. deleted_message_ids = get_system_message_delete_info(user_id)
  23. type_messages = SystemMessageInfo.objects.filter(
  24. status=True,
  25. ).exclude(
  26. pk__in=deleted_message_ids,
  27. )
  28. else:
  29. type_messages = UserMessageInfo.objects.filter(
  30. to_uid=user_id,
  31. msg_type=msg_type,
  32. status=True,
  33. )
  34. type_messages = type_messages.order_by(
  35. '-pk'
  36. )[:settings.MESSAGE_NUM_PER_PAGE]
  37. type_messages = [msg.msg_info(user_id) for msg in type_messages]
  38. message['msg_list'] = type_messages
  39. final_messages.append(message)
  40. return JsonResponse({
  41. 'status': 200,
  42. 'message': u'获取消息列表成功',
  43. 'data': {
  44. 'messages': final_messages,
  45. },
  46. })
  47. def message_type_list_api(request, msg_type):
  48. """
  49. 分类消息列表
  50. :param request:
  51. :param msg_type:
  52. :return:
  53. """
  54. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  55. page = int(request.POST.get('page', 0) or request.GET.get('page', 0) or 1)
  56. num = int(request.POST.get('num', 0) or request.GET.get('num', 0) or settings.MESSAGE_NUM_PER_PAGE)
  57. if msg_type == UserMessageInfo.SYSTEM:
  58. deleted_message_ids = get_system_message_delete_info(user_id)
  59. type_messages = SystemMessageInfo.objects.filter(
  60. status=True,
  61. ).exclude(
  62. pk__in=deleted_message_ids,
  63. )
  64. else:
  65. type_messages = UserMessageInfo.objects.filter(
  66. to_uid=user_id,
  67. msg_type=msg_type,
  68. status=True,
  69. )
  70. type_messages = type_messages.order_by(
  71. '-pk'
  72. )
  73. type_messages, left = pagination(type_messages, page, num)
  74. type_messages = [msg.msg_info(user_id) for msg in type_messages]
  75. return JsonResponse({
  76. 'status': 200,
  77. 'message': u'获取消息列表成功',
  78. 'data': {
  79. 'messages': type_messages,
  80. 'left': left,
  81. },
  82. })
  83. def message_type_read_api(request, msg_type=None):
  84. """
  85. 消息读取
  86. :param request:
  87. :return:
  88. """
  89. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  90. pk = int(request.POST.get('pk', 0) or request.GET.get('pk', 0) or -1)
  91. _all = (request.POST.get('all', '') or request.GET.get('all', '')).lower()
  92. # 用户校验
  93. try:
  94. user = UserInfo.objects.get(user_id=user_id)
  95. except UserInfo.DoesNotExist:
  96. return response(UserStatusCode.USER_NOT_FOUND)
  97. # 消息读取
  98. if msg_type == UserMessageInfo.SYSTEM:
  99. if pk > 0: # 系统消息单个读取
  100. if not SystemMessageInfo.objects.filter(pk=pk).exists():
  101. return response(MessageStatusCode.MESSAGE_NOT_FOUND)
  102. SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=pk)
  103. if _all == 'true': # 系统消息全部读取
  104. for msg in SystemMessageInfo.objects.filter(status=True):
  105. SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=msg.pk)
  106. else:
  107. if pk > 0: # 用户(点赞/评论)消息单个读取
  108. UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(read=True)
  109. if _all == 'true': # 用户消息(点赞/评论)全部读取
  110. UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(read=True)
  111. return JsonResponse({
  112. 'status': 200,
  113. 'message': u'已读消息成功',
  114. })
  115. def message_type_delete_api(request, msg_type=None):
  116. """
  117. 消息删除
  118. :param request:
  119. :param msg_type:
  120. :return:
  121. """
  122. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  123. pk = int(request.POST.get('pk', 0) or request.GET.get('pk', 0) or -1)
  124. _all = (request.POST.get('all', '') or request.GET.get('all', '')).lower()
  125. # 用户校验
  126. try:
  127. user = UserInfo.objects.get(user_id=user_id)
  128. except UserInfo.DoesNotExist:
  129. return response(UserStatusCode.USER_NOT_FOUND)
  130. # 消息删除
  131. if msg_type == UserMessageInfo.SYSTEM:
  132. if pk > 0: # 系统消息单个删除
  133. if not SystemMessageInfo.objects.filter(pk=pk).exists():
  134. return response(MessageStatusCode.MESSAGE_NOT_FOUND)
  135. SystemMessageDeleteInfo.objects.get_or_create(user_id=user_id, msg_id=pk)
  136. if _all == 'true': # 系统消息全部删除
  137. for msg in SystemMessageInfo.objects.filter(status=True):
  138. SystemMessageDeleteInfo.objects.get_or_create(user_id=user_id, msg_id=msg.pk)
  139. set_system_message_delete_info(user_id)
  140. else:
  141. if pk > 0: # 用户(点赞/评论)消息单个删除
  142. UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(status=False)
  143. if _all == 'true': # 用户消息(点赞/评论)全部删除
  144. UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(status=False)
  145. return JsonResponse({
  146. 'status': 200,
  147. 'message': u'消息删除成功',
  148. })