GatewayFamilyMemberController.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : GatewayFamilyMemberController.py
  4. @Time : 2022/5/25 10:21
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. from django.views.generic.base import View
  10. from Model.models import FamilyMemberJoin, UserFamily
  11. from Object.ResponseObject import ResponseObject
  12. from Object.TokenObject import TokenObject
  13. from SensorGateway.EquipmentFamilyController import EquipmentFamilyView
  14. # 家庭房间管理
  15. class GatewayFamilyMemberView(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, request, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, request, operation)
  24. def validation(self, request_dict, request, operation):
  25. token = request.META.get('HTTP_AUTHORIZATION')
  26. token = TokenObject(token)
  27. lang = request_dict.get('lang', None)
  28. response = ResponseObject(lang) if lang else ResponseObject(token.lang)
  29. if token.code != 0:
  30. return response.json(token.code)
  31. app_user_id = token.userID
  32. # 添加设备关联房间
  33. if operation == 'join':
  34. return self.member_join(app_user_id, request_dict, response)
  35. elif operation == 'join/page':
  36. return self.member_join_page(request_dict, response)
  37. @classmethod
  38. def member_join(cls, app_user_id, request_dict, response):
  39. pass
  40. @classmethod
  41. def member_join_page(cls, request_dict, response):
  42. """
  43. 家庭成员邀请记录
  44. @param request_dict:
  45. @param response:
  46. @return:
  47. """
  48. page_no = request_dict.get('pageNo', None)
  49. page_size = request_dict.get('pageSize', None)
  50. family_id = request_dict.get('familyId', None)
  51. if not all([page_no, page_size, family_id]):
  52. return response.json(444)
  53. member_join = FamilyMemberJoin.objects.filter(family_id=family_id).values('status', 'user__username',
  54. 'user__userIconUrl', 'user__phone',
  55. 'user__userEmail', 'updated_time',
  56. 'created_time')
  57. page_no = int(page_no)
  58. page_size = int(page_size)
  59. member_join = member_join.order_by('-created_time')[(page_no - 1) * page_size: page_no * page_size]
  60. if not member_join.exists():
  61. return response.json(0, [])
  62. result = []
  63. for item in member_join:
  64. result.append({
  65. 'status': item['status'],
  66. 'userName': item['user__username'],
  67. 'userIconUrl': item['user__userIconUrl'],
  68. 'phone': item['user__phone'],
  69. 'userEmail': item['user__userEmail'],
  70. 'updatedTime': item['updated_time'],
  71. 'createdTime': item['created_time']
  72. })
  73. return response.json(0, result)
  74. @classmethod
  75. def family_qrcode(cls, user_id, request_dict, response):
  76. """
  77. 获取邀请码信息
  78. @param user_id:
  79. @param request_dict:
  80. @param response:
  81. @return:
  82. """
  83. family_id = request_dict.get('familyId', None)
  84. if not family_id:
  85. return response.json(444)
  86. is_owner = EquipmentFamilyView.get_family_owner(user_id, family_id)
  87. if not is_owner:
  88. return response.json(404)
  89. try:
  90. UserFamily.objects.get(id=family_id)
  91. except Exception as e:
  92. print(e)
  93. return response.json(173, repr(e))
  94. pass