Bladeren bron

回滚操作

chanjunkai 5 jaren geleden
bovenliggende
commit
dc1144461d
5 gewijzigde bestanden met toevoegingen van 149 en 42 verwijderingen
  1. 1 1
      Ansjer/urls.py
  2. 53 19
      Controller/EquipmentManagerV3.py
  3. 41 1
      Controller/UidSetController.py
  4. 17 2
      Controller/UidUser.py
  5. 37 19
      Model/models.py

+ 1 - 1
Ansjer/urls.py

@@ -198,7 +198,7 @@ urlpatterns = [
     url(r'^v3/account/resetPwdByCode$', UserController.v3resetPwdByCodeView.as_view()),
     url(r'^v3/account/register$', UserController.v3registerView.as_view()),
     url(r'^v3/uiduser/add', UidUser.v3addInterface),
-    #url(r'^v3/uiduser/query', UidUser.v3queryInterface),
+    url(r'^v3/uiduser/query', UidUser.v3queryInterface),
     # 判断节假日接口
     url(r'^date/(?P<operation>.*)$', DateController.DateConView.as_view()),
 

+ 53 - 19
Controller/EquipmentManagerV3.py

@@ -8,7 +8,7 @@ from django.db.models import Q
 from django.views.generic.base import View
 from Object.RedisObject import RedisObject
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
-from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel
+from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -193,10 +193,7 @@ class EquipmentManagerV3(View):
                 dvql = dvqs.values('id', 'userID', 'NickName', 'UID', 'View_Account',
                            'View_Password', 'ChannelIndex', 'Type', 'isShare',
                            'primaryUserID', 'primaryMaster', 'data_joined',
-                           'version', 'deviceModel',
-                           'isVod', 'isExist', 'NotificationMode', 'OutdoorModel',
-                           'WIFIName', 'isDetector', 'DetectorRank', 'MirrorType',
-                           'RecordType', 'TimeZone', 'SpaceUsable', 'SpaceSum')
+                           'version', 'isVod', 'isExist', 'NotificationMode')
                 dvls = CommonService.qs_to_list(dvql)
                 uid_list = []
                 for dvl in dvls:
@@ -209,8 +206,12 @@ class EquipmentManagerV3(View):
                 nowTime = int(time.time())
                 data = []
                 # 设备拓展信息表
-                us_qs = UidSetModel.objects.filter(uid__in=uid_list).values('uid', 'version', 'nickname', 'ucode', 'detect_status', 'detect_group', 'detect_interval', 'region_alexa', 'is_alexa', 'light_alarm_type',
-                   'light_alarm_level', 'light_alarm_man_en', 'light_alarm_vol', 'light_long_light', 'light_night_model')
+                us_qs = UidSetModel.objects.filter(uid__in=uid_list).values('id', 'uid', 'version', 'nickname', 'ucode',
+                                                                            'detect_status', 'detect_group', 'detect_interval',
+                                                                            'region_alexa', 'is_alexa', 'deviceModel',
+                                                                            'TimeZone', 'TimeStatus', 'SpaceUsable',
+                                                                            'SpaceSum', 'MirrorType', 'RecordType',
+                                                                            'OutdoorModel', 'WIFIName', 'isDetector', 'DetectorRank')
                 uv_dict = {}
                 for us in us_qs:
                     uv_dict[us['uid']] = {
@@ -222,13 +223,40 @@ class EquipmentManagerV3(View):
                         'detect_status': us['detect_status'],
                         'region_alexa': us['region_alexa'],
                         'is_alexa': us['is_alexa'],
-                        'light_alarm_type': us['light_alarm_type'],
-                        'light_alarm_level': us['light_alarm_level'],
-                        'light_alarm_man_en': us['light_alarm_man_en'],
-                        'light_alarm_vol': us['light_alarm_vol'],
-                        'light_long_light': us['light_long_light'],
-                        'light_night_model': us['light_night_model']
+                        'deviceModel': us['deviceModel'],
+                        'TimeZone': us['TimeZone'],
+                        'TimeStatus': us['TimeStatus'],
+                        'SpaceUsable': us['SpaceUsable'],
+                        'SpaceSum': us['SpaceSum'],
+                        'MirrorType': us['MirrorType'],
+                        'RecordType': us['RecordType'],
+                        'OutdoorModel': us['OutdoorModel'],
+                        'WIFIName': us['WIFIName'],
+                        'isDetector': us['isDetector'],
+                        'DetectorRank': us['DetectorRank']
                     }
+                    # 从uid_channel里面取出通道配置信息
+                    ucs_qs = UidChannelSetModel.objects.filter(uid__id=us['id']).values()
+                    channels = []
+                    for ucs in ucs_qs:
+                        channel = {
+                            'channel': ucs['channel'],
+                            'pir_audio': ucs['pir_audio'],
+                            'mic_audio': ucs['mic_audio'],
+                            'battery_status': ucs['battery_status'],
+                            'battery_level': ucs['battery_level'],
+                            'sleep_status': ucs['sleep_status'],
+                            'sleep_time': ucs['sleep_time'],
+                            'light_night_model': ucs['light_night_model'],
+                            'light_alarm_type': ucs['light_alarm_type'],
+                            'light_alarm_level': ucs['light_alarm_level'],
+                            'light_alarm_man_en': ucs['light_alarm_man_en'],
+                            'light_alarm_vol': ucs['light_alarm_vol'],
+                            'light_long_light': ucs['light_long_light']
+                        }
+                        channels.append(channel)
+                    uv_dict[us['uid']]['channels'] = channels
+
                 for p in dvls:
                     p['vod'] = []
                     for dm in ubqs:
@@ -251,12 +279,18 @@ class EquipmentManagerV3(View):
                         p['detect_group'] = uv_dict[p_uid]['detect_group']
                         p['region_alexa'] = uv_dict[p_uid]['region_alexa']
                         p['is_alexa'] = uv_dict[p_uid]['is_alexa']
-                        p['light_alarm_type'] = uv_dict[p_uid]['light_alarm_type']
-                        p['light_alarm_level'] = uv_dict[p_uid]['light_alarm_level']
-                        p['light_alarm_man_en'] = uv_dict[p_uid]['light_alarm_man_en']
-                        p['light_alarm_vol'] = uv_dict[p_uid]['light_alarm_vol']
-                        p['light_long_light'] = uv_dict[p_uid]['light_long_light']
-                        p['light_night_model'] = uv_dict[p_uid]['light_night_model']
+                        p['deviceModel'] = uv_dict[p_uid]['deviceModel']
+                        p['TimeZone'] = uv_dict[p_uid]['TimeZone']
+                        p['TimeStatus'] = uv_dict[p_uid]['TimeStatus']
+                        p['SpaceUsable'] = uv_dict[p_uid]['SpaceUsable']
+                        p['SpaceSum'] = uv_dict[p_uid]['SpaceSum']
+                        p['MirrorType'] = uv_dict[p_uid]['MirrorType']
+                        p['RecordType'] = uv_dict[p_uid]['RecordType']
+                        p['OutdoorModel'] = uv_dict[p_uid]['OutdoorModel']
+                        p['WIFIName'] = uv_dict[p_uid]['WIFIName']
+                        p['isDetector'] = uv_dict[p_uid]['isDetector']
+                        p['DetectorRank'] = uv_dict[p_uid]['DetectorRank']
+                        p['channels'] = uv_dict[p_uid]['channels']
                         # 设备昵称 调用影子信息昵称,先阶段不可
                         if uv_dict[p_uid]['nickname']:
                             p['NickName'] = uv_dict[p_uid]['nickname']

+ 41 - 1
Controller/UidSetController.py

@@ -20,7 +20,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 
 from Model.models import UidSetModel, Device_User, Device_Info, UidPushModel, Equipment_Info, UID_Preview, UID_Bucket, \
-    VodHlsModel, Order_Model, OssCrdModel,UidUserModel
+    VodHlsModel, Order_Model, OssCrdModel, UidUserModel, UidChannelSetModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -82,6 +82,8 @@ class UidSetView(View):
             return self.do_update(request_dict, response)
         elif operation == 'updateSet':
             return self.do_update_set(request_dict, response)
+        elif operation == 'updateChannel':
+            return self.do_update_channel_set(request_dict, response)
         else:
             return response.json(444, 'error path')
 
@@ -339,3 +341,41 @@ class UidSetView(View):
             return response.json(177, repr(e))
         else:
             return response.json(0)
+
+    def do_update_channel_set(self, request_dict, response):
+        uid = request_dict.get('uid', None)
+        channel = request_dict.get('channel', None)
+        channelContent = request_dict.get('content', None)
+        token = request_dict.get('token', None)
+        print(channelContent)
+        if not channelContent or not uid or not channel:
+            return response.json(444, 'content,uid, chan')
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        if userID is None:
+            return response.json(309)
+        try:
+            redisObj = RedisObject(db=8)
+            redisObj.del_data(key='uid_qs_' + userID)
+            deviceData = json.loads(channelContent)
+            uid_channel_set_qs = UidChannelSetModel.objects.filter(uid__uid=uid, channel=channel)
+            if not uid_channel_set_qs.exists():
+                uidObject = UidSetModel.objects.filter(uid=uid)
+                ucs = {
+                    'channel': channel,
+                    'uid': uidObject[0]
+                }
+                keys = deviceData.keys()
+                for key in keys:
+                    ucs[key] = deviceData[key]
+                UidChannelSetModel.objects.create(**ucs)
+            else:
+                uid_channel_set_qs.update(**deviceData)
+
+        except Exception as e:
+            return response.json(177, repr(e))
+        else:
+            return response.json(0)

+ 17 - 2
Controller/UidUser.py

@@ -29,6 +29,7 @@ from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 from Object.RedisObject import RedisObject
 import base64
+from Controller.CheckUserData import RandomStr
 '''
 http://192.168.136.40:8077/uiduser/add?token=local&UID=z123asdfqwerzxcvqw12&NickName=xxoxox&View_Account=user&View_Password=password&ChannelIndex=8&is_ap=1&Type=5&NickName=1234zcxv
 http://192.168.136.40:8077/uiduser/query?token=local&page=1&line=10&is_ap=1&NickName=1234zcxv&uid=zxcvasdfqwerzxcvqwer
@@ -365,6 +366,7 @@ class UidUserView(View):
 
 
 
+
 # v3添加设备字段
 def v3addInterface(request):
     request.encoding = 'utf-8'
@@ -477,7 +479,6 @@ def v3queryInterface(request):
     response.lang = tko.lang
     if page <= 0:
         return response.json(0)
-
     if tko.code == 0:
         userID = tko.userID
         redisObj = RedisObject(db=8)
@@ -509,7 +510,6 @@ def v3queryInterface(request):
         # 设备拓展信息表
         us_qs = UidSetModel.objects.filter(uid__in=uid_list).values('uid', 'version', 'nickname')
         uv_dict = {}
-        return response.json(0, us_qs)
         for us in us_qs:
             uv_dict[us['uid']] = {'version': us['version'], 'nickname': us['nickname']}
         for p in uid_user_ls:
@@ -519,6 +519,7 @@ def v3queryInterface(request):
                     if dm['endTime'] > nowTime:
                         p['vod'].append(dm)
             p['preview'] = []
+            p['View_Password'] = encrypt_pwd(p['View_Password'])
             for up in upqs:
                 if p['UID'] == up['uid']:
                     obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=up['uid'], channel=up['channel'])
@@ -539,6 +540,20 @@ def v3queryInterface(request):
     else:
         return response.json(tko.code)
 
+# 加密
+def encrypt_pwd(userPwd):
+    for i in range(1, 4):
+        if i == 1:
+            userPwd = RandomStr(3, False)+userPwd+RandomStr(3, False)
+            userPwd = base64.b64encode(str(userPwd).encode("utf-8")).decode('utf8')
+        if i == 2:
+            userPwd = RandomStr(2, False)+str(userPwd)+RandomStr(2, False)
+            userPwd = base64.b64encode(str(userPwd).encode("utf-8")).decode('utf8')
+        if i == 3:
+            userPwd = RandomStr(1, False)+str(userPwd)+RandomStr(1, False)
+            userPwd = base64.b64encode(str(userPwd).encode("utf-8")).decode('utf8')
+    return userPwd
+
 
 
 

+ 37 - 19
Model/models.py

@@ -201,6 +201,7 @@ class Device_User(AbstractBaseUser):
 
 
 # 设备表是建项目开发者设计的,自己看着办
+# 谢谢提醒!我选择凉拌。
 class Device_Info(models.Model):
     id = models.CharField(blank=True, max_length=32, primary_key=True)
     userID = models.ForeignKey(Device_User, blank=True, to_field='userID', on_delete=models.CASCADE)
@@ -230,19 +231,7 @@ class Device_Info(models.Model):
     area = models.CharField(blank=True, max_length=100, default='', verbose_name=u'设备区域area')
     # ios要求新增字段
     version = models.CharField(blank=True, max_length=20, default='', verbose_name=u'版本号')
-    SpaceUsable = models.CharField(blank=True, max_length=20, default='', verbose_name=u'可用空间')
-    SpaceSum = models.CharField(blank=True, max_length=20, default='', verbose_name=u'总空间')
-    WIFIName = models.CharField(blank=True, max_length=50, default='', verbose_name=u'无线名称')
-    WIFIIP = models.CharField(blank=True, max_length=20, default='', verbose_name=u'无线ip')
-    WIFIPwd = models.CharField(blank=True, max_length=50, default='', verbose_name=u'无线密码')
-    isDetector = models.BooleanField(blank=True, verbose_name=u'侦测开关0:关闭,1:开启)', default=False)
-    DetectorRank = models.IntegerField(blank=True, default=0, verbose_name=u'侦测灵敏度 1:低,2:中,3:高4:最高')
     iSNotification = models.BooleanField(blank=True, verbose_name=u'报警通知 0:关闭,1:开启)', default=False)
-    MirrorType = models.IntegerField(blank=True, default=0, verbose_name=u'镜像类型 0:关闭镜像,1:上下镜像,2:左右镜像,3:上下左右镜像')
-    RecordType = models.IntegerField(blank=True, default=0, verbose_name=u'录像模式(0:关闭,1:全是录像,3:报警录像)')
-    OutdoorModel = models.IntegerField(blank=True, default=0, verbose_name=u'室外模式 0:关闭,1:开启')
-    TimeZone = models.CharField(blank=True, max_length=50, default='', verbose_name=u'时区')
-    deviceModel = models.CharField(blank=True, max_length=50, default='', verbose_name=u'设备型号')
     isVod = models.SmallIntegerField(blank=True, default=0, verbose_name='是否支持云存')  # 是否支持云存设备
     isExist = models.SmallIntegerField(blank=True, default=1, verbose_name='是否被删除')  # 是否被删除了(需主用户交互) 1存在,0不存在,2设备被重置
     ###
@@ -682,13 +671,17 @@ class UidSetModel(models.Model):
     pwd = models.CharField(max_length=32, default='', verbose_name=u'设备密码') # 暂时是预留字段
     resetTime = models.IntegerField(default=0, verbose_name='设备重置时间')
     region_alexa = models.CharField(max_length=8, verbose_name='设备alexa区域', default='ALL')  # ALL CN EU US
-    light_night_model = models.IntegerField(default='0', verbose_name='夜视模式')  # 0:全彩模式,1:黑白模式,2:智能夜视模式
-    light_alarm_type = models.IntegerField(default=0, verbose_name='警报人形类型')  # 0为人形,1为移动,3是人形和移动侦测0x0f
-    light_alarm_level = models.IntegerField(default=0,
-                                            verbose_name='声光报警级别')  # 0: 关闭,1:强烈声光告警,2:轻微声光告警,3: 强烈声告警,4:轻微声告警,5:强烈光告警
-    light_alarm_man_en = models.IntegerField(default=0, verbose_name='人为告警状态')  # 0:关,1:开
-    light_alarm_vol = models.IntegerField(default=0, verbose_name='报警音量')  # 音量值0-100
-    light_long_light = models.IntegerField(default=0, verbose_name='长亮')
+    deviceModel = models.CharField(blank=True, max_length=64, default='', verbose_name=u'设备型号')
+    TimeZone = models.CharField(blank=True, max_length=50, default='', verbose_name=u'时区')
+    TimeStatus = models.SmallIntegerField(default=0, verbose_name='同步手机时间开关。0:关闭,1:开启')
+    SpaceUsable = models.CharField(blank=True, max_length=20, default='', verbose_name=u'可用空间')
+    SpaceSum = models.CharField(blank=True, max_length=20, default='', verbose_name=u'总空间')
+    MirrorType = models.IntegerField(blank=True, default=0, verbose_name=u'镜像类型 0:关闭镜像,1:上下镜像,2:左右镜像,3:上下左右镜像')
+    RecordType = models.IntegerField(blank=True, default=0, verbose_name=u'录像模式(0:关闭,1:全是录像,3:报警录像)')
+    OutdoorModel = models.IntegerField(blank=True, default=0, verbose_name=u'室外模式 0:关闭,1:开启')
+    WIFIName = models.CharField(blank=True, max_length=50, default='', verbose_name=u'无线名称')
+    isDetector = models.SmallIntegerField(default=0, verbose_name=u'侦测开关0:关闭,1:开启')
+    DetectorRank = models.IntegerField(default=0, verbose_name=u'侦测灵敏度 0:低,1:中,2:高,3:最高')
 
     class Meta:
         db_table = 'uid_set'
@@ -719,6 +712,31 @@ class UidPushModel(models.Model):
         ordering = ('-id',)
 
 
+# 设备通道配置
+class UidChannelSetModel(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    uid = models.ForeignKey(UidSetModel, to_field='id', on_delete=models.CASCADE)
+    channel = models.IntegerField(default=1, verbose_name='通道号')
+    pir_audio = models.SmallIntegerField(default=0, verbose_name='pir声音。0:关闭,1:开启')
+    mic_audio = models.SmallIntegerField(default=0, verbose_name='mic声音。0:关闭,1:开启')
+    battery_status = models.SmallIntegerField(default=0, verbose_name='低电量提醒状态。0:关闭,1:开启')
+    battery_level = models.SmallIntegerField(default=0, verbose_name='低电量提醒级别。0: 低于10%;1:低于25%;2:低于50%;3:低于75%')
+    sleep_status = models.SmallIntegerField(default=0, verbose_name='是否开启【休眠通知】。0:关闭;1:开启')
+    sleep_time = models.SmallIntegerField(default=0, verbose_name='摄像机进入休眠时间。0:不休眠;1:10秒;2:20秒;3:30秒')
+    light_night_model = models.IntegerField(default='0', verbose_name='夜视模式')  # 0:全彩模式,1:黑白模式,2:智能夜视模式
+    light_alarm_type = models.IntegerField(default=0, verbose_name='警报人形类型')  # 0为人形,1为移动,3是人形和移动侦测0x0f
+    light_alarm_level = models.IntegerField(default=0,
+                                            verbose_name='声光报警级别')  # 0: 关闭,1:强烈声光告警,2:轻微声光告警,3: 强烈声告警,4:轻微声告警,5:强烈光告警
+    light_alarm_man_en = models.IntegerField(default=0, verbose_name='人为告警状态')  # 0:关,1:开
+    light_alarm_vol = models.IntegerField(default=0, verbose_name='报警音量')  # 音量值0-100
+    light_long_light = models.IntegerField(default=0, verbose_name='长亮')
+
+    class Meta:
+        db_table = 'uid_channel'
+        verbose_name = '设备通道设置'
+        verbose_name_plural = verbose_name
+
+
 # oauth2 第三方登录补全信息
 class UserExModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')