拍爱

views.py 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. from logit import logit
  4. from account.models import UserInfo
  5. from message.models import SystemMessageDeleteInfo, SystemMessageInfo, SystemMessageReadInfo, UserMessageInfo
  6. from utils.error.errno_utils import MessageStatusCode, UserStatusCode
  7. from utils.error.response_utils import response
  8. from utils.message_utils import system_messages, system_unread_messages
  9. from utils.page_utils import pagination
  10. from utils.redis.rmessage import set_system_message_delete_info, set_system_message_read_info
  11. @logit
  12. def message_list_api(request):
  13. """ 消息列表 """
  14. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  15. messages = UserMessageInfo.MESSAGE_TYPE_INFO
  16. final_messages = []
  17. for message in messages:
  18. msg_type = message['msg_type']
  19. if msg_type == UserMessageInfo.SYSTEM:
  20. type_unread_messages = system_unread_messages(user_id, SystemMessageInfo.PAIAI_USER)
  21. else:
  22. type_unread_messages = UserMessageInfo.objects.filter(
  23. to_uid=user_id,
  24. msg_type=msg_type,
  25. read=False,
  26. status=True,
  27. )
  28. message['msg_unread_num'] = type_unread_messages.count()
  29. final_messages.append(message)
  30. return response(200, 'Get Message List Success', u'获取消息列表成功', {
  31. 'messages': final_messages,
  32. })
  33. @logit
  34. def message_type_list_api(request, msg_type):
  35. """ 分类消息列表 """
  36. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  37. page = int(request.POST.get('page', 0) or request.GET.get('page', 0) or 1)
  38. num = int(request.POST.get('num', 0) or request.GET.get('num', 0) or settings.MESSAGE_NUM_PER_PAGE)
  39. if msg_type == UserMessageInfo.SYSTEM:
  40. type_messages = system_messages(user_id, SystemMessageInfo.PAIAI_USER)
  41. else:
  42. type_messages = UserMessageInfo.objects.filter(
  43. to_uid=user_id,
  44. msg_type=msg_type,
  45. status=True,
  46. )
  47. type_messages = type_messages.order_by(
  48. '-pk'
  49. )
  50. type_messages, left = pagination(type_messages, page, num)
  51. type_messages = [msg.msg_info(user_id) for msg in type_messages]
  52. return response(200, 'Get Message List Success', u'获取消息列表成功', {
  53. 'messages': type_messages,
  54. 'left': left,
  55. })
  56. @logit
  57. def message_type_read_api(request, msg_type=None):
  58. """ 消息读取 """
  59. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  60. pk = int(request.POST.get('pk', 0) or request.GET.get('pk', 0) or -1)
  61. _all = (request.POST.get('all', '') or request.GET.get('all', '')).lower()
  62. # 用户校验
  63. try:
  64. user = UserInfo.objects.get(user_id=user_id)
  65. except UserInfo.DoesNotExist:
  66. return response(UserStatusCode.USER_NOT_FOUND)
  67. # 消息读取
  68. if msg_type == UserMessageInfo.SYSTEM:
  69. if pk > 0: # 系统消息单个读取
  70. if not SystemMessageInfo.objects.filter(pk=pk).exists():
  71. return response(MessageStatusCode.MESSAGE_NOT_FOUND)
  72. SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=pk)
  73. if _all == 'true': # 系统消息全部读取
  74. for msg in SystemMessageInfo.objects.filter(src=SystemMessageInfo.PAIAI_USER, status=True):
  75. SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=msg.pk)
  76. set_system_message_read_info(user_id)
  77. else:
  78. if pk > 0: # 用户(点赞/评论)消息单个读取
  79. UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(read=True)
  80. if _all == 'true': # 用户消息(点赞/评论)全部读取
  81. UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(read=True)
  82. return response(200, 'Read Message Success', u'已读消息成功')
  83. @logit
  84. def message_type_delete_api(request, msg_type=None):
  85. """ 消息删除 """
  86. user_id = request.POST.get('user_id', '') or request.GET.get('user_id', '')
  87. pk = int(request.POST.get('pk', 0) or request.GET.get('pk', 0) or -1)
  88. _all = (request.POST.get('all', '') or request.GET.get('all', '')).lower()
  89. # 用户校验
  90. try:
  91. user = UserInfo.objects.get(user_id=user_id)
  92. except UserInfo.DoesNotExist:
  93. return response(UserStatusCode.USER_NOT_FOUND)
  94. # 消息删除
  95. if msg_type == UserMessageInfo.SYSTEM:
  96. if pk > 0: # 系统消息单个删除
  97. if not SystemMessageInfo.objects.filter(pk=pk).exists():
  98. return response(MessageStatusCode.MESSAGE_NOT_FOUND)
  99. SystemMessageDeleteInfo.objects.get_or_create(user_id=user_id, msg_id=pk)
  100. if _all == 'true': # 系统消息全部删除
  101. for msg in SystemMessageInfo.objects.filter(src=SystemMessageInfo.PAIAI_USER, status=True):
  102. SystemMessageDeleteInfo.objects.get_or_create(user_id=user_id, msg_id=msg.pk)
  103. set_system_message_delete_info(user_id)
  104. else:
  105. if pk > 0: # 用户(点赞/评论)消息单个删除
  106. UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(status=False)
  107. if _all == 'true': # 用户消息(点赞/评论)全部删除
  108. UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(status=False)
  109. return response(200, 'Delete Message Success', u'消息删除成功')