|
@@ -10,10 +10,10 @@
|
|
import json
|
|
import json
|
|
import time
|
|
import time
|
|
|
|
|
|
|
|
+from django.db import transaction
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
|
|
|
|
-from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
|
|
|
|
-from Model.models import FamilyMemberJoin, UserFamily
|
|
|
|
|
|
+from Model.models import UserFamily, FamilyMemberJoin, FamilyMember, Device_User, SysMsgModel
|
|
from Object.RedisObject import RedisObject
|
|
from Object.RedisObject import RedisObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
@@ -47,13 +47,99 @@ class GatewayFamilyMemberView(View):
|
|
elif operation == 'join/page':
|
|
elif operation == 'join/page':
|
|
return self.member_join_page(request_dict, response)
|
|
return self.member_join_page(request_dict, response)
|
|
elif operation == 'qrcode/generate':
|
|
elif operation == 'qrcode/generate':
|
|
- return self.generate_token_url(app_user_id, request_dict, response)
|
|
|
|
|
|
+ return self.family_generate_token(app_user_id, request_dict, response)
|
|
elif operation == 'qrcode/check':
|
|
elif operation == 'qrcode/check':
|
|
- return self.check_qrcode(app_user_id, request_dict, response)
|
|
|
|
|
|
+ return self.check_qrcode(request_dict, response)
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def member_join(cls, app_user_id, request_dict, response):
|
|
def member_join(cls, app_user_id, request_dict, response):
|
|
- pass
|
|
|
|
|
|
+ """
|
|
|
|
+ 家庭成员加入
|
|
|
|
+ @param app_user_id:
|
|
|
|
+ @param request_dict:
|
|
|
|
+ @param response:
|
|
|
|
+ @return:
|
|
|
|
+ """
|
|
|
|
+ family_id = request_dict.get('familyId', None)
|
|
|
|
+ invite = request_dict.get('QRCodeInvite', None)
|
|
|
|
+ user_id = request_dict.get('app_user_id', None)
|
|
|
|
+ lang = request_dict.get('lang', 'en')
|
|
|
|
+ if not all([family_id, invite]):
|
|
|
|
+ return response.json(444)
|
|
|
|
+ invite = int(invite)
|
|
|
|
+ family_id = int(family_id)
|
|
|
|
+ now_time = int(time.time())
|
|
|
|
+ # 判断当前家庭是否已有该成员
|
|
|
|
+ if invite == 1:
|
|
|
|
+ family_qs = FamilyMember.objects.filter(family_id=family_id, user_id=app_user_id)
|
|
|
|
+ elif user_id:
|
|
|
|
+ family_qs = FamilyMember.objects.filter(family_id=family_id, user_id=user_id)
|
|
|
|
+ else:
|
|
|
|
+ return response.json(173)
|
|
|
|
+ if family_qs.exists():
|
|
|
|
+ return response.json(174)
|
|
|
|
+ try:
|
|
|
|
+ user_family_qs = UserFamily.objects.filter(id=family_id)
|
|
|
|
+ if not user_family_qs:
|
|
|
|
+ return response.json(173)
|
|
|
|
+ user_family = user_family_qs.first()
|
|
|
|
+ family_name = user_family.name
|
|
|
|
+ data = {
|
|
|
|
+ 'addTime': now_time,
|
|
|
|
+ 'updTime': now_time,
|
|
|
|
+ 'eventType': 705
|
|
|
|
+ }
|
|
|
|
+ # 请求加入家庭,用户信息
|
|
|
|
+ user_qs = Device_User.objects.filter(userID=app_user_id)
|
|
|
|
+ nick_name = user_qs.first().NickName
|
|
|
|
+
|
|
|
|
+ if invite == 1:
|
|
|
|
+ msg_text = cls.get_msg_text(nick_name, family_name, lang, True)
|
|
|
|
+ # 通知对象 家庭所有者
|
|
|
|
+ join_user_id = app_user_id
|
|
|
|
+ data['userID_id'] = user_family.user_id
|
|
|
|
+ elif app_user_id:
|
|
|
|
+ msg_text = cls.get_msg_text(nick_name, family_name, lang, False)
|
|
|
|
+ # 通知对象 被邀请人
|
|
|
|
+ join_user_id = user_id
|
|
|
|
+ data['userID_id'] = user_id
|
|
|
|
+ else:
|
|
|
|
+ return response.json(173)
|
|
|
|
+ data['msg'] = msg_text
|
|
|
|
+ with transaction.atomic():
|
|
|
|
+ family_user_join = FamilyMemberJoin.objects.create(family_id=family_id, user_id=join_user_id,
|
|
|
|
+ status=0,
|
|
|
|
+ updated_time=now_time,
|
|
|
|
+ created_time=now_time)
|
|
|
|
+ data['uid'] = family_user_join.id
|
|
|
|
+ SysMsgModel.objects.create(**data)
|
|
|
|
+ return response.json(0)
|
|
|
|
+ except Exception as e:
|
|
|
|
+ print(e)
|
|
|
|
+ return response.json(177, repr(e))
|
|
|
|
+
|
|
|
|
+ @classmethod
|
|
|
|
+ def get_msg_text(cls, nick_name, family_name, lang, is_invite=False):
|
|
|
|
+ """
|
|
|
|
+ 系统消息通知内容,中英文判断
|
|
|
|
+ @param nick_name:
|
|
|
|
+ @param family_name:
|
|
|
|
+ @param lang:
|
|
|
|
+ @param is_invite:
|
|
|
|
+ @return:
|
|
|
|
+ """
|
|
|
|
+ if lang and lang == 'cn':
|
|
|
|
+ if is_invite:
|
|
|
|
+ msg_text = '{}请求加入你的{}'.format(nick_name, family_name)
|
|
|
|
+ else:
|
|
|
|
+ msg_text = '{}邀请你加入{}'.format(nick_name, family_name)
|
|
|
|
+ else:
|
|
|
|
+ if is_invite:
|
|
|
|
+ msg_text = '{} Request to join your Homegroup {}'.format(nick_name, family_name)
|
|
|
|
+ else:
|
|
|
|
+ msg_text = '{} invite you to join the Homegroup {}'.format(nick_name, family_name)
|
|
|
|
+
|
|
|
|
+ return msg_text
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def member_join_page(cls, request_dict, response):
|
|
def member_join_page(cls, request_dict, response):
|
|
@@ -85,6 +171,7 @@ class GatewayFamilyMemberView(View):
|
|
'userName': item['user__username'],
|
|
'userName': item['user__username'],
|
|
'userIconUrl': item['user__userIconUrl'],
|
|
'userIconUrl': item['user__userIconUrl'],
|
|
'phone': item['user__phone'],
|
|
'phone': item['user__phone'],
|
|
|
|
+ 'nickName': item['user__NickName'],
|
|
'userEmail': item['user__userEmail'],
|
|
'userEmail': item['user__userEmail'],
|
|
'updatedTime': item['updated_time'],
|
|
'updatedTime': item['updated_time'],
|
|
'createdTime': item['created_time']
|
|
'createdTime': item['created_time']
|
|
@@ -92,29 +179,14 @@ class GatewayFamilyMemberView(View):
|
|
return response.json(0, result)
|
|
return response.json(0, result)
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
- def family_qrcode(cls, user_id, request_dict, response):
|
|
|
|
|
|
+ def family_generate_token(cls, app_user_id, request_dict, response):
|
|
"""
|
|
"""
|
|
- 获取邀请码信息
|
|
|
|
- @param user_id:
|
|
|
|
|
|
+ 获取家庭令牌信息
|
|
|
|
+ @param app_user_id:
|
|
@param request_dict:
|
|
@param request_dict:
|
|
@param response:
|
|
@param response:
|
|
@return:
|
|
@return:
|
|
"""
|
|
"""
|
|
- family_id = request_dict.get('familyId', None)
|
|
|
|
- if not family_id:
|
|
|
|
- return response.json(444)
|
|
|
|
- is_owner = EquipmentFamilyView.get_family_owner(user_id, family_id)
|
|
|
|
- if not is_owner:
|
|
|
|
- return response.json(404)
|
|
|
|
- try:
|
|
|
|
- UserFamily.objects.get(id=family_id)
|
|
|
|
- except Exception as e:
|
|
|
|
- print(e)
|
|
|
|
- return response.json(173, repr(e))
|
|
|
|
- pass
|
|
|
|
-
|
|
|
|
- @classmethod
|
|
|
|
- def generate_token_url(cls, app_user_id, request_dict, response):
|
|
|
|
family_id = request_dict.get('familyId', None)
|
|
family_id = request_dict.get('familyId', None)
|
|
if not family_id:
|
|
if not family_id:
|
|
return response.json(444)
|
|
return response.json(444)
|
|
@@ -146,7 +218,13 @@ class GatewayFamilyMemberView(View):
|
|
})
|
|
})
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
- def check_qrcode(cls, app_user_id, request_dict, response):
|
|
|
|
|
|
+ def check_qrcode(cls, request_dict, response):
|
|
|
|
+ """
|
|
|
|
+ 检查二维码是否过期
|
|
|
|
+ @param request_dict:
|
|
|
|
+ @param response:
|
|
|
|
+ @return:
|
|
|
|
+ """
|
|
share_token = request_dict.get('shareToken', None)
|
|
share_token = request_dict.get('shareToken', None)
|
|
if not share_token:
|
|
if not share_token:
|
|
return response.json(444)
|
|
return response.json(444)
|
|
@@ -158,6 +236,20 @@ class GatewayFamilyMemberView(View):
|
|
sharer = data.get('sharer', None)
|
|
sharer = data.get('sharer', None)
|
|
family_id = data.get('familyId', None)
|
|
family_id = data.get('familyId', None)
|
|
if not all([sharer, family_id]):
|
|
if not all([sharer, family_id]):
|
|
- return response.json(137)
|
|
|
|
- print(app_user_id)
|
|
|
|
- return response.json(0)
|
|
|
|
|
|
+ return response.json(173)
|
|
|
|
+ family_id = int(family_id)
|
|
|
|
+ user_family_qs = UserFamily.objects.filter(id=family_id)
|
|
|
|
+ if not user_family_qs.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
+ user_family_qs = user_family_qs.values('name', 'user__userEmail',
|
|
|
|
+ 'user__userIconUrl',
|
|
|
|
+ 'user__phone', 'user__NickName',
|
|
|
|
+ 'user__username')
|
|
|
|
+ return response.json(0, {
|
|
|
|
+ 'userPhone': user_family_qs['user__phone'],
|
|
|
|
+ 'nickName': user_family_qs['user__NickName'],
|
|
|
|
+ 'userIconUrl': user_family_qs['user__userIconUrl'],
|
|
|
|
+ 'userName': user_family_qs['user__username'],
|
|
|
|
+ 'familyName': user_family_qs['name'],
|
|
|
|
+ 'userEmail': user_family_qs['user__userEmail'],
|
|
|
|
+ })
|