Эх сурвалжийг харах

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer

locky 3 жил өмнө
parent
commit
b7b29dad6f

+ 9 - 6
AdminController/DeviceManagementController.py

@@ -35,8 +35,8 @@ class DeviceManagement(View):
         response = ResponseObject(language, 'pc')
         if operation == 'addDeviceType':
             return self.addDeviceType(request, request_dict, response)
-        elif operation == 'delDeviceData':
-            return self.delDeviceData(request_dict, response)
+        elif operation == 'delDeviceData':  # 删除设备数据
+            return self.del_device_data(request_dict, response)
         else:
             tko = TokenObject(
                 request.META.get('HTTP_AUTHORIZATION'),
@@ -304,8 +304,8 @@ class DeviceManagement(View):
             print(e)
             return response.json(500, repr(e))
 
-    # 删除设备数据
-    def delDeviceData(self, request_dict, response):
+    @staticmethod
+    def del_device_data(request_dict, response):
         uidList = request_dict.get('uidList', None)
         delDataOptions = request_dict.get('delDataOptions', None)
 
@@ -323,13 +323,16 @@ class DeviceManagement(View):
                     Equipment_Info.objects.filter(devUid__in=uidList).delete()
                 if '设备AP信息数据' in delDataOptions:
                     UidUserModel.objects.filter(UID__in=uidList).delete()
+                if '设备AI数据' in delDataOptions:
+                    ExperienceAiModel.objects.filter(uid__in=uidList).delete()
+                    Order_Model.objects.filter(UID__in=uidList, order_type=1).delete()
                 if '设备云存数据' in delDataOptions:
                     UID_Bucket.objects.filter(uid__in=uidList).delete()
-                    Unused_Uid_Meal.objects.filter(uid__in=uidList).delete()
-                    Order_Model.objects.filter(UID__in=uidList).delete()
                     StsCrdModel.objects.filter(uid__in=uidList).delete()
                     VodHlsModel.objects.filter(uid__in=uidList).delete()
+                    Unused_Uid_Meal.objects.filter(uid__in=uidList).delete()
                     ExperienceContextModel.objects.filter(uid__in=uidList).delete()
+                    Order_Model.objects.filter(UID__in=uidList, order_type=0).delete()
                     Device_Info.objects.filter(UID__in=uidList).update(vodPrimaryUserID='', vodPrimaryMaster='')
             return response.json(0)
         except Exception as e:

+ 151 - 29
Controller/SensorGateway/GatewayFamilyMemberController.py

@@ -10,10 +10,10 @@
 import json
 import time
 
+from django.db import transaction
 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.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -47,13 +47,127 @@ class GatewayFamilyMemberView(View):
         elif operation == 'join/page':
             return self.member_join_page(request_dict, response)
         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':
-            return self.check_qrcode(app_user_id, request_dict, response)
+            return self.check_qrcode(request_dict, response)
+        elif operation == 'join/info':
+            return self.member_join_info(request_dict, response)
+
+    @classmethod
+    def member_join_info(cls, request_dict, response):
+        """
+        查询加入家庭信息
+        @param request_dict:
+        @param response:
+        @return:
+        """
+        join_id = request_dict.get('joinId', None)
+        if not join_id:
+            return response.json(444)
+        join_id = int(join_id)
+        family_join_qs = FamilyMemberJoin.objects.filter(id=join_id)
+        if not family_join_qs.exists():
+            return response.json(173)
+        family_join_qs = family_join_qs.values('type', 'user__NickName', 'family__name', 'status', 'id')
+        family_join_qs = family_join_qs.first()
+        return response.json(0, {
+            'id': family_join_qs['id'],
+            'type': family_join_qs['type'],
+            'nickName': family_join_qs['user__NickName'],
+            'familyName': family_join_qs['family__name'],
+            'status': family_join_qs['status'],
+        })
 
     @classmethod
     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', 0)
+        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,
+                                                                   type=invite)
+                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
     def member_join_page(cls, request_dict, response):
@@ -71,7 +185,8 @@ class GatewayFamilyMemberView(View):
         member_join = FamilyMemberJoin.objects.filter(family_id=family_id).values('status', 'user__username',
                                                                                   'user__userIconUrl', 'user__phone',
                                                                                   'user__userEmail', 'updated_time',
-                                                                                  'created_time')
+                                                                                  'created_time',
+                                                                                  'user__NickName')
 
         page_no = int(page_no)
         page_size = int(page_size)
@@ -85,6 +200,7 @@ class GatewayFamilyMemberView(View):
                 'userName': item['user__username'],
                 'userIconUrl': item['user__userIconUrl'],
                 'phone': item['user__phone'],
+                'nickName': item['user__NickName'],
                 'userEmail': item['user__userEmail'],
                 'updatedTime': item['updated_time'],
                 'createdTime': item['created_time']
@@ -92,29 +208,14 @@ class GatewayFamilyMemberView(View):
         return response.json(0, result)
 
     @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 response:
         @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)
         if not family_id:
             return response.json(444)
@@ -132,7 +233,7 @@ class GatewayFamilyMemberView(View):
         # share_token = jwt.encode(data, '.#^^&', algorithm='HS256').decode('utf-8')
         # +++++++++++++++++
         redisObj = RedisObject()
-        share_token = str(int(time.time())) + CommonService.RandomStr(8)
+        share_token = str(int(time.time())) + CommonService.RandomStr(22)
         if not redisObj.set_data(key=share_token, val=json.dumps(data), expire=300):
             return response.json(10, '生成失败')
         return response.json(0, {
@@ -146,7 +247,13 @@ class GatewayFamilyMemberView(View):
         })
 
     @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)
         if not share_token:
             return response.json(444)
@@ -158,6 +265,21 @@ class GatewayFamilyMemberView(View):
         sharer = data.get('sharer', None)
         family_id = data.get('familyId', None)
         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('id', 'name', 'user__userEmail',
+                                               'user__userIconUrl',
+                                               'user__phone', 'user__NickName',
+                                               'user__username')
+        return response.json(0, {
+            'familyId': user_family_qs[0]['id'],
+            'userPhone': user_family_qs[0]['user__phone'],
+            'nickName': user_family_qs[0]['user__NickName'],
+            'userIconUrl': user_family_qs[0]['user__userIconUrl'],
+            'userName': user_family_qs[0]['user__username'],
+            'familyName': user_family_qs[0]['name'],
+            'userEmail': user_family_qs[0]['user__userEmail'],
+        })

+ 1 - 1
Controller/UserBrandController.py

@@ -57,9 +57,9 @@ class MyserviceDynamodb(object):
         try:
             session = Session(aws_access_key_id=self.access_key, aws_secret_access_key=self.secret_key,
                               region_name=self.region)
+            return session
         except:
             print("Failed to connect session in region{0}".format(self.region))
-        return session
 
     # 创建user_brand_all表
     def user_brand_all_table_create(self, table_name):

+ 31 - 0
Model/models.py

@@ -1679,6 +1679,35 @@ class DeviceTypeModel(models.Model):
         verbose_name_plural = verbose_name
 
 
+class AppDeviceType(models.Model):
+    id = models.AutoField(primary_key=True)
+    model = models.SmallIntegerField(default=0, verbose_name='设备类型')    # 1:DVR, 2:IPC
+    type = models.IntegerField(default=0, verbose_name='设备型号')
+    icon = models.CharField(default='', max_length=32, verbose_name='文件名')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'app_device_type'
+        verbose_name = 'APP设备类型表'
+        verbose_name_plural = verbose_name
+
+
+class DeviceNameLanguage(models.Model):
+    id = models.AutoField(primary_key=True)
+    app_device_type = models.ForeignKey(AppDeviceType, to_field='id', default='', on_delete=models.CASCADE,
+                                        verbose_name='关联APP设备类型表id')
+    lang = models.CharField(default='', max_length=10, verbose_name='语言')
+    name = models.CharField(default='', max_length=32, verbose_name='设备名称')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'device_name_language'
+        verbose_name = '设备名称语言表'
+        verbose_name_plural = verbose_name
+
+
 class OperatingLogsModel(models.Model):
     id = models.AutoField(primary_key=True)
     userId = models.CharField(blank=False, max_length=32, db_index=True, verbose_name=u'操作人')
@@ -2518,6 +2547,8 @@ class FamilyMemberJoin(models.Model):
     family = models.ForeignKey(UserFamily, to_field='id', default='', on_delete=models.CASCADE,
                                verbose_name='关联用户家庭id')
     status = models.SmallIntegerField(default=0, verbose_name='状态{0:未确认,1:拒绝,2:同意}')
+    # 0:家庭所有者搜索邀请,1:成员扫码加入
+    type = models.SmallIntegerField(default=0, verbose_name='类型')
     updated_time = models.IntegerField(default=0, verbose_name='更新时间')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
 

+ 1 - 1
Service/MiscellService.py

@@ -34,9 +34,9 @@ class MyserviceDynamodb():
     def __session(self):
         try:
             session = Session(aws_access_key_id=self.access_key, aws_secret_access_key=self.secret_key,region_name=self.region)
+            return session
         except:
             print("Failed to connect session in region{0}".format(self.region))
-        return session
 
     # 添加access_log表数据
     def access_log_item_put(self,table_name,data_list):