浏览代码

新增ap模式设备列表

chenjunkai 5 年之前
父节点
当前提交
5cea1fa524
共有 8 个文件被更改,包括 370 次插入114 次删除
  1. 58 11
      Ansjer/test/kbt.py
  2. 6 1
      Ansjer/urls.py
  3. 0 87
      Controller/EquipmentInfo.py
  4. 16 11
      Controller/EquipmentManager.py
  5. 1 2
      Controller/OTAEquipment.py
  6. 259 0
      Controller/UidUser.py
  7. 29 1
      Model/models.py
  8. 1 1
      Object/TokenObject.py

+ 58 - 11
Ansjer/test/kbt.py

@@ -1,11 +1,58 @@
-import requests
-
-url0 = 'http://apg.oss-cn-shenzhen.aliyuncs.com/MUJ887NLR8K8GBM9111A%2F1%2F1573616384_0.jpeg?OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1573635665&Signature=bVkpjhszdm8HRc7mFCorIP7b%2BLk%3D'
-url1 = 'http://apg.oss-cn-shenzhen.aliyuncs.com/MUJ887NLR8K8GBM9111A%2F1%2F1573616384_1.jpeg?OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1573635665&Signature=TLQkUG79FEBlDNPfowKuiCbJq2Q%3D'
-url2 = 'http://apg.oss-cn-shenzhen.aliyuncs.com/MUJ887NLR8K8GBM9111A%2F1%2F1573616384_2.jpeg?OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1573635665&Signature=3Ew2Ml2DXLakfVjrTeFCs%2BErlBw%3D'
-res0 = requests.put(url0, data='0')
-print(res0.status_code)
-res1 = requests.put(url1, data='1')
-print(res1.status_code)
-res2 = requests.put(url2, data='2')
-print(res2.status_code)
+aws_access_key_id = 'AKIA2E67UIMD45Y3HL53'
+aws_secret_access_key = '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'
+REGION_NAME = 'us-east-1'  # e.g
+from datetime import datetime
+startTime =datetime(2019, 11, 15,2,0)
+endTime =datetime(2019, 11, 15,4,0)
+print(startTime)
+print(endTime)
+def lmm():
+    import boto3
+    print('1234')
+    STREAM_NAME = "oxoxo"
+    kvs = boto3.client("kinesisvideo")
+    # Grab the endpoint from GetDataEndpoint
+    endpoint = kvs.get_data_endpoint(
+        APIName="GET_HLS_STREAMING_SESSION_URL",
+        StreamName=STREAM_NAME
+    )['DataEndpoint']
+    print(endpoint)
+    print('----------')
+    # Grab the HLS Stream URL from the endpoint
+    kvam = boto3.client("kinesis-video-archived-media", endpoint_url=endpoint)
+    url = kvam.get_hls_streaming_session_url(
+        StreamName=STREAM_NAME,
+        PlaybackMode="LIVE_REPLAY",
+        HLSFragmentSelector={
+            'FragmentSelectorType': 'PRODUCER_TIMESTAMP',
+            'TimestampRange': {
+                'StartTimestamp': startTime,
+                'EndTimestamp': endTime
+            }
+        },
+    )['HLSStreamingSessionURL']
+    print(url)
+    exit()
+
+lmm()
+exit()
+import boto3
+
+
+boto3_session = boto3.Session(aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_access_key_id)
+
+kv_client = boto3_session.client('kinesisvideo',region_name='us-east-1')
+
+STREAM_NAME = "oxoxo"
+print(STREAM_NAME)
+
+endpoint = kv_client.get_data_endpoint(
+    APIName="GET_HLS_STREAMING_SESSION_URL",
+    # APIName="ListStreams",
+    StreamName=STREAM_NAME
+)['DataEndpoint']
+print(endpoint)
+exit()
+
+res = kv_client.describe_stream(StreamName='test_stream')
+print(res)

+ 6 - 1
Ansjer/urls.py

@@ -7,7 +7,7 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, EquipmentSensor, S
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UidSetController, \
     UserManger, CheckUserData, \
     UserController, CloudVod, OrderContrller, VodBucket, DetectController, DeviceShare, UserBrandController, \
-    StsOssController, UIDPreview, SysMsg
+    StsOssController, UIDPreview, SysMsg, UidUser
 
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
@@ -165,6 +165,11 @@ urlpatterns = [
     # 删除云存视频
     path('cv/del', CloudVod.deleteVodHls),
     url(r'^equipment/judge', EquipmentManager.judgeInterface),
+    # ap模式,新增设备表
+    url(r'^uiduser/add', UidUser.addInterface),
+    url(r'^uiduser/query', UidUser.queryInterface),
+    url(r'^uiduser/update', UidUser.updateInterface),
+    url(r'^uiduser/delete', UidUser.deleteInterface),
 
     # 路由加参数参考
     # url(r'^(?P<path>.*)/(?P<UID>.*)/lls$', Test.Test.as_view(), name=u'gg'),

+ 0 - 87
Controller/EquipmentInfo.py

@@ -113,68 +113,6 @@ class EquipmentInfo(View):
             else:
                 return response.json(500)
 
-    def query_infocc(self, request_dict, userID, response):
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        nowTime = int(time.time())
-        if not page or not line:
-            return response.json(444, 'page,line')
-
-        qs = Equipment_Info.objects.filter(userID_id=userID, addTime__gte=nowTime - 3600 * 24 * 27)
-        uid = request_dict.get('uid', None)
-        if uid:
-            qs = qs.filter(devUid=uid)
-            dvqs = Device_Info.objects.filter(UID=uid).values('Type', 'NickName')
-            uid_type_dict = {uid: {'type': dvqs[0]['Type'], 'NickName': dvqs[0]['NickName']}}
-        else:
-            dvqs = Device_Info.objects.filter(userID_id=userID).values('UID', 'Type', 'NickName')
-            uid_type_dict = {}
-            for dv in dvqs:
-                uid_type_dict[dv['UID']] = {'type': dv['Type'], 'NickName': dv['NickName']}
-        print(uid_type_dict)
-        if not qs.exists():
-            return response.json(0, {'datas': [], 'count': 0})
-        qs = qs.values('id', 'devUid', 'devNickName', 'Channel', 'eventType', 'status', 'alarm', 'eventTime',
-                       'receiveTime', 'is_st')
-        count = qs.count()
-        qr = qs[(page - 1) * line:page * line]
-        res = []
-        auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
-        img_bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
-        # vod_time_list = []
-        for p in qr:
-            devUid = p['devUid']
-            eventTime = p['eventTime']
-            channel = p['Channel']
-            if p['is_st'] == 1:
-                p['img'] = img_bucket.sign_url('GET', '{uid}/{channel}/{time}.jpeg'.
-                                               format(uid=devUid, channel=p['Channel'], time=eventTime), 300)
-                p['img_list'] = [img_bucket.sign_url('GET', '{uid}/{channel}/{time}.jpeg'.
-                                                     format(uid=devUid, channel=channel, time=eventTime), 300)]
-            elif p['is_st'] == 2:
-                # 列表装载回放时间戳标记
-                vodqs = VodHlsModel.objects.filter(uid=devUid, channel=channel, time=int(eventTime)) \
-                    .values("bucket__bucket", "bucket__endpoint")
-                print(vodqs)
-                if vodqs.exists():
-                    bucket_name = vodqs[0]['bucket__bucket']
-                    endpoint = vodqs[0]['bucket__endpoint']
-                    bucket = oss2.Bucket(auth, endpoint, bucket_name)
-                    ts = '{uid}/vod{channel}/{etime}/ts0.ts'.format(uid=devUid, channel=p['Channel'], etime=eventTime)
-                    thumb0 = bucket.sign_url('GET', ts, 3600, params={'x-oss-process': 'video/snapshot,t_0000,w_700'})
-                    thumb1 = bucket.sign_url('GET', ts, 3600, params={'x-oss-process': 'video/snapshot,t_1000,w_700'})
-                    thumb2 = bucket.sign_url('GET', ts, 3600, params={'x-oss-process': 'video/snapshot,t_2000,w_700'})
-                    # thumb3 = bucket.sign_url('GET', ts, 3600, params={'x-oss-process': 'video/snapshot,t_3000,w_700'})
-                    p['img_list'] = [thumb0, thumb1, thumb2]
-            if devUid in uid_type_dict.keys():
-                p['uid_type'] = uid_type_dict[devUid]['type']
-                p['devNickName'] = uid_type_dict[devUid]['NickName']
-            else:
-                p['uid_type'] = ''
-            res.append(p)
-        return response.json(0, {'datas': res, 'count': count})
-
-
     def query_info(self, request_dict, userID, response):
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
@@ -209,31 +147,6 @@ class EquipmentInfo(View):
             res.append(p)
         return response.json(0, {'datas': res, 'count': count})
 
-        # return response.json(0, send_json)
-
-    def query_infovv(self, request_dict, userID, response):
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        if not page or not line:
-            return response.json(444, 'page,line')
-        qs = Equipment_Info.objects.filter(userID_id=userID)
-        uid = request_dict.get('uid', None)
-        if uid:
-            qs.filter(devUid=uid)
-        if not qs.exists():
-            return response.json(0, {'datas': [], 'count': 0})
-        count = qs.count()
-        res = qs[(page - 1) * line:page * line]
-        send_json = CommonService.qs_to_dict(res)
-        res = []
-
-        for p in send_json['datas']:
-            p['fields']['viewAccont'] = ''
-            p['fields']['viewPwd'] = ''
-            res.append(p)
-        return response.json(0, {'datas': res, 'count': count})
-
-        # return response.json(0, send_json)
 
     def update_info(self, request_dict, userID, response):
         id_list = request_dict.getlist('id[]', None)

+ 16 - 11
Controller/EquipmentManager.py

@@ -332,11 +332,7 @@ def addInterface(request):
                     # if is_bind:
                     #     return response.json(15)
                     try:
-                        pk = CommonService.getUserID(getUser=False)
-                        userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
-                                                 NickName=NickName, View_Account=View_Account,
-                                                 View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex)
-                        userDevice.save()
+                        # 判断是否有用户绑定
                         nowTime = int(time.time())
                         us_qs = UidSetModel.objects.filter(uid=UID)
                         if not us_qs.exists():
@@ -349,6 +345,11 @@ def addInterface(request):
                                 'nickname': NickName,
                             }
                             UidSetModel.objects.create(**uid_set_create_dict)
+                        pk = CommonService.getUserID(getUser=False)
+                        userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
+                                                 NickName=NickName, View_Account=View_Account,
+                                                 View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex)
+                        userDevice.save()
                     except Exception as e:
                         return response.json(10, repr(e))
                     else:
@@ -395,10 +396,14 @@ def judgeInterface(request):
                 is_bind = Device_Info.objects.filter(UID=uid, isShare=False)
                 # 判断是否有已绑定用户
                 if is_bind:
-                    user = is_bind.values('userID__NickName', 'NickName')
+                    qs = is_bind.values('userID__NickName', 'NickName')
+                    nickname = qs[0]['NickName']
+                    us_qs = UidSetModel.objects.filter(uid=uid).values('nickname')
+                    if us_qs.exists():
+                        nickname = us_qs[0]['NickName']
                     res = {
-                        'bind_user': user[0]['userID__NickName'],
-                        'bind_device_name': user[0]['NickName'],
+                        'bind_user': qs[0]['userID__NickName'],
+                        'bind_device_name': nickname,
                     }
                     return response.json(15, res=res)
                 else:
@@ -697,9 +702,9 @@ def queryInterface(request):
             if p_uid in uv_dict:
                 # 设备版本号
                 p['uid_version'] = uv_dict[p_uid]['version']
-                # 设备昵称
-                if uv_dict[p_uid]['nickname']:
-                    p['NickName'] = uv_dict[p_uid]['nickname']
+                # 设备昵称 调用影子信息昵称,先阶段不可
+                # if uv_dict[p_uid]['nickname']:
+                #     p['NickName'] = uv_dict[p_uid]['nickname']
             else:
                 # 设备版本号
                 p['uid_version'] = ''

+ 1 - 2
Controller/OTAEquipment.py

@@ -489,10 +489,9 @@ def getNewVerInterface(request):
         equipmentValid = Equipment_Version.objects.filter(code=code, status=1, lang='en').order_by(
             '-data_joined')
     if equipmentValid.exists():
-        ver = equipmentValid[0].softwareVersion
         equipment = equipmentValid[0]
         file_path = equipment.filePath
-        # 检测ip进行替换
+        ver = equipment.softwareVersion
         min_ver = equipment.min_ver
         if now_ver >= min_ver:
             # 创建url的token

+ 259 - 0
Controller/UidUser.py

@@ -0,0 +1,259 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: AnsjerFormal
+@software: PyCharm
+@DATE: 2019/11/15 16:45
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: UserUid.py
+@Contact: chanjunkai@163.com
+"""
+# 添加设备字段
+
+import re
+import time
+
+import oss2
+
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
+from Model.models import UID_Bucket, UID_Preview, UidSetModel
+from Model.models import UidUserModel
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Service.CommonService import CommonService
+
+'''
+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
+http://192.168.136.40:8077/uiduser/delete?token=local&id=138001380001573884997393980&is_ap=1
+'''
+
+
+# 添加设备字段
+def addInterface(request):
+    request.encoding = 'utf-8'
+    response = ResponseObject()
+    if request.method == 'POST':
+        request_dict = request.POST
+    elif request.method == 'GET':
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    token = request_dict.get('token', None)
+    UID = request_dict.get('UID', None)
+    NickName = request_dict.get('NickName', None)
+    View_Account = request_dict.get('View_Account', None)
+    View_Password = request_dict.get('View_Password', '')
+    Type = request_dict.get('Type', None)
+    ChannelIndex = request_dict.get('ChannelIndex', None)
+    is_ap = request_dict.get('is_ap', None)
+    if all([UID, NickName, View_Account, Type, ChannelIndex]):
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code == 0:
+            userID = tko.userID
+            re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
+            if re_uid.match(UID):
+                is_ap = int(is_ap)
+                is_exist = UidUserModel.objects.filter(UID=UID, userID_id=userID, is_ap=is_ap)
+                if is_exist:
+                    return response.json(174)
+                else:
+                    try:
+                        pk = CommonService.getUserID(getUser=False)
+                        create_data = {
+                            'id': pk, 'userID_id': userID, 'UID': UID,
+                            'NickName': NickName, 'View_Account': View_Account,
+                            'View_Password': View_Password, 'Type': Type, 'ChannelIndex': ChannelIndex
+                        }
+                        UidUserModel.objects.create(**create_data)
+                        # 判断影子信息
+                        nowTime = int(time.time())
+                        us_qs = UidSetModel.objects.filter(uid=UID)
+                        if not us_qs.exists():
+                            uid_set_create_dict = {
+                                'uid': UID,
+                                'addTime': nowTime,
+                                'updTime': nowTime,
+                                'ip': CommonService.get_ip_address(request),
+                                'channel': ChannelIndex,
+                                'nickname': NickName}
+                            UidSetModel.objects.create(**uid_set_create_dict)
+                    except Exception as e:
+                        return response.json(10, repr(e))
+                    else:
+                        uid_user_qs = UidUserModel.objects.filter(id=pk). \
+                            values('id', 'userID', 'NickName', 'UID', 'View_Account', 'View_Password',
+                                   'ChannelIndex', 'Type', 'isShare', 'primaryUserID', 'primaryMaster',
+                                   'data_joined', 'version', 'isVod', 'isExist')
+                        uid_user_ql = CommonService.qs_to_list(uid_user_qs)
+                        ubqs = UID_Bucket.objects.filter(uid=UID). \
+                            values('bucket__content', 'status', 'channel', 'endTime', 'uid')
+                        res = uid_user_ql[0]
+                        res['vod'] = list(ubqs)
+                        return response.json(0, res)
+            else:
+                return response.json(444, {'param': 'UID'})
+        else:
+            return response.json(tko.code)
+    else:
+        return response.json(444, {'param': 'UID,NickName,View_Account,View_Password,Type,ChannelIndex'})
+
+
+# 新查询设备字段
+def queryInterface(request):
+    request.encoding = 'utf-8'
+    response = ResponseObject()
+    if request.method == 'POST':
+        request_dict = request.POST
+    elif request.method == 'GET':
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    token = request_dict.get('token', None)
+    page = request_dict.get('page', None)
+    line = request_dict.get('line', None)
+    NickName = request_dict.get('NickName', None)
+    uid = request_dict.get('uid', None)
+    is_ap = request_dict.get('is_ap', None)
+    page = int(page)
+    line = int(line)
+    is_ap = int(is_ap)
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if page <= 0:
+        return response.json(0)
+    if tko.code == 0:
+        userID = tko.userID
+        uid_user_qs = UidUserModel.objects.filter(userID_id=userID)
+        if is_ap:
+            uid_user_qs = uid_user_qs.filter(is_ap=is_ap)
+        if NickName:
+            uid_user_qs = uid_user_qs.filter(NickName__icontains=NickName)
+        if uid:
+            uid_user_qs = uid_user_qs.filter(UID=uid)
+        uid_user_ql = uid_user_qs[(page - 1) * line:page * line]. \
+            values('id', 'userID', 'NickName', 'UID', 'View_Account',
+                   'View_Password', 'ChannelIndex', 'Type', 'isShare',
+                   'primaryUserID', 'primaryMaster', 'data_joined', 'version',
+                   'isVod', 'isExist', 'NotificationMode')
+        uid_user_ls = CommonService.qs_to_list(uid_user_ql)
+        uid_list = []
+        for uid_user in uid_user_ls:
+            uid_list.append(uid_user['UID'])
+        ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
+            values('bucket__content', 'status', 'channel', 'endTime', 'uid')
+        upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
+        auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+        bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
+        nowTime = int(time.time())
+        data = []
+        # 设备拓展信息表
+        us_qs = UidSetModel.objects.filter(uid__in=uid_list).values('uid', 'version', 'nickname')
+        uv_dict = {}
+        for us in us_qs:
+            uv_dict[us['uid']] = {'version': us['version'], 'nickname': us['nickname']}
+        for p in uid_user_ls:
+            p['vod'] = []
+            for dm in ubqs:
+                if p['UID'] == dm['uid']:
+                    if dm['endTime'] > nowTime:
+                        p['vod'].append(dm)
+            p['preview'] = []
+            for up in upqs:
+                if p['UID'] == up['uid']:
+                    obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=up['uid'], channel=up['channel'])
+                    img_sign = bucket.sign_url('GET', obj, 300)
+                    p['preview'].append(img_sign)
+            p_uid = p['UID']
+            if p_uid in uv_dict:
+                # 设备版本号
+                p['uid_version'] = uv_dict[p_uid]['version']
+                # 设备昵称
+                if uv_dict[p_uid]['nickname']:
+                    p['NickName'] = uv_dict[p_uid]['nickname']
+            else:
+                # 设备版本号
+                p['uid_version'] = ''
+            data.append(p)
+        return response.json(0, data)
+    else:
+        return response.json(tko.code)
+
+
+# http://192.168.136.40:8077/uiduser/update?token=local&id=138001380001573885065588328&View_Account=12&View_Password=555&NickName=555
+
+# 添加设备字段
+def updateInterface(request):
+    request.encoding = 'utf-8'
+    response = ResponseObject()
+    if request.method == 'POST':
+        request_dict = request.POST
+    elif request.method == 'GET':
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    token = request_dict.get('token', None)
+    NickName = request_dict.get('NickName', None)
+    View_Account = request_dict.get('View_Account', None)
+    View_Password = request_dict.get('View_Password', None)
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code == 0:
+        userID = tko.userID
+        uid_user_qs = UidUserModel.objects.filter(userID_id=userID,)
+        if uid_user_qs.exists():
+            update_dict = {}
+            if NickName:
+                update_dict['NickName'] = NickName
+            if View_Account is not None:
+                update_dict['View_Account'] = View_Account
+            if View_Password is not None:
+                update_dict['View_Password'] = View_Password
+            is_update = uid_user_qs.update(**update_dict)
+            if is_update:
+                return response.json(0)
+            else:
+                return response.json(177)
+        else:
+            return response.json(174)
+    else:
+        return response.json(tko.code)
+
+
+# 新删除设备
+def deleteInterface(request):
+    '''
+    删除用户设备
+    :param request:
+    :return:
+    '''
+    response = ResponseObject()
+    request.encoding = 'utf-8'
+    if request.method == 'POST':
+        request_dict = request.POST
+    elif request.method == 'GET':
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    token = request_dict.get('token', None)
+    id = request_dict.get('id', None)
+    is_ap = request_dict.get('is_ap', None)
+    if all([token, id, is_ap]):
+        tko = TokenObject(token)
+        response.lang = tko.lang
+        if tko.code == 0:
+            userID = tko.userID
+            uid_user_qs = UidUserModel.objects.filter(userID_id=userID, id=id)
+            if uid_user_qs.exists():
+                uid_user_qs.delete()
+                return response.json(0)
+            else:
+                return response.json(173)
+        else:
+            return response.json(tko.code)
+    else:
+        return response.json(444, {'param': 'token,id,is_ap'})

+ 29 - 1
Model/models.py

@@ -490,7 +490,7 @@ class Equipment_Version(models.Model):
     lang = models.CharField(blank=True, default='en', max_length=32, verbose_name=u'ota包内置语言')
     mci = models.CharField(default='', blank=True, max_length=10, verbose_name='设备类型')
     img = models.TextField(blank=True, default='', verbose_name=u'图片路径')
-    min_ver = models.CharField(default='',max_length=16,verbose_name='最小版本号')
+    min_ver = models.CharField(default='', max_length=16, verbose_name='最小版本号')
 
     def __str__(self):
         return self.eid
@@ -725,6 +725,7 @@ class UserExModel(models.Model):
         verbose_name_plural = verbose_name
         ordering = ('-id',)
 
+
 # oauth2 第三方登录补全信息
 class UserOauth2Model(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')
@@ -758,3 +759,30 @@ class SysMassModel(models.Model):
         verbose_name = '群发消息记录表'
         verbose_name_plural = verbose_name
         ordering = ('-id',)
+
+
+class UidUserModel(models.Model):
+    id = models.CharField(max_length=32, primary_key=True)
+    userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
+    NickName = models.CharField(max_length=32, verbose_name=u'设备名称')
+    UID = models.CharField(max_length=32, verbose_name=u'设备UID', default='')
+    View_Account = models.CharField(max_length=32, verbose_name=u'设备用户名称', default='')
+    View_Password = models.CharField(max_length=32, verbose_name=u'设备密码', default='')
+    ChannelIndex = models.IntegerField(verbose_name=u'通道号', default=0)
+    Type = models.IntegerField(verbose_name='设备类型')
+    NotificationMode = models.IntegerField(verbose_name=u'是否报警', default=0)
+    isShare = models.BooleanField(verbose_name=u'共享设备', default=False)
+    primaryUserID = models.CharField(verbose_name='主用户id', max_length=32, default='')
+    primaryMaster = models.CharField(max_length=64, verbose_name=u'主用户名', default='')
+    data_joined = models.DateTimeField(verbose_name=u'设备添加时间', auto_now_add=True)
+    version = models.CharField(max_length=20, default='', verbose_name=u'版本号')
+    isVod = models.SmallIntegerField(default=0, verbose_name='是否支持云存')  # 是否支持云存设备
+    isExist = models.SmallIntegerField(default=1, verbose_name='是否被删除')  # 是否被删除了(需主用户交互) 1存在,0不存在
+    is_ap = models.SmallIntegerField(default=1, verbose_name='是否为ap模式添加')  # 1为ap模式添加,0为非ap模式添加
+
+
+    class Meta:
+        db_table = 'uid_user'
+        ordering = ('-data_joined',)
+        verbose_name = u'用户设备ap表'
+        verbose_name_plural = verbose_name

+ 1 - 1
Object/TokenObject.py

@@ -21,7 +21,7 @@ class TokenObject:
 
     def __init__(self, token=None):
         if token == 'local':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NzMyODEzMjB9.qc20AsKGCVz-rvPSPyxulQy0BrG_nUdO3fxjT-KSv0w'
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NzY0NzY2NDR9.ZksD1AGi5sCI2HRQ_sPfS1Qgj-0Cm5soYEMqhx-H1Ew'
         if token == 'test':
             token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1Njk5OTg4OTYsInVzZXJJRCI6IjE1MTU2NDI2MjMzNzkzOTUxMzgwMDEzODAwMSIsImxhbmciOiJlbiIsIm1fY29kZSI6IjEyMzQxMzI0MzIxNCJ9.VAQtT9AbCCfXcrNj9DL5cvVasMDoI7AP8ptgU1GoMu8'
         self.token = token