# -*- encoding: utf-8 -*- """ @File : GatewayFamilyMemberController.py @Time : 2022/5/25 10:21 @Author : stephen @Email : zhangdongming@asj6.wecom.work @Software: PyCharm """ from django.views.generic.base import View from Model.models import FamilyMemberJoin from Object.ResponseObject import ResponseObject from Object.TokenObject import TokenObject # 家庭房间管理 class GatewayFamilyMemberView(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.GET, request, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.POST, request, operation) def validation(self, request_dict, request, operation): token = request.META.get('HTTP_AUTHORIZATION') token = TokenObject(token) lang = request_dict.get('lang', None) response = ResponseObject(lang) if lang else ResponseObject(token.lang) if token.code != 0: return response.json(token.code) app_user_id = token.userID # 添加设备关联房间 if operation == 'join': return self.member_join(app_user_id, request_dict, response) elif operation == 'join/page': return self.member_join_page(request_dict, response) @classmethod def member_join(cls, app_user_id, request_dict, response): pass @classmethod def member_join_page(cls, request_dict, response): """ 家庭成员邀请记录 @param request_dict: @param response: @return: """ page_no = request_dict.get('pageNo', None) page_size = request_dict.get('pageSize', None) family_id = request_dict.get('familyId', None) if not all([page_no, page_size, family_id]): return response.json(444) member_join = FamilyMemberJoin.objects.filter(family_id=family_id).values('status', 'user__username', 'user__userIconUrl', 'user__phone', 'user__userEmail', 'updated_time', 'created_time') page_no = int(page_no) page_size = int(page_size) member_join = member_join.order_by('-created_time')[(page_no - 1) * page_size: page_no * page_size] if not member_join.exists(): return response.json(0, []) result = [] for item in member_join: result.append({ 'status': item['status'], 'userName': item['user__username'], 'userIconUrl': item['user__userIconUrl'], 'phone': item['user__phone'], 'userEmail': item['user__userEmail'], 'updatedTime': item['updated_time'], 'createdTime': item['created_time'] }) return response.json(0, result)