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

Merge branch 'pzb' of http://192.168.136.45:3000/SERVER/AnsjerServer into pzb

pzb 6 жил өмнө
parent
commit
22c206f28a

+ 0 - 10
Ansjer/test/test.py

@@ -1,10 +0,0 @@
-import requests
-
-put_url = 'http://statres.oss-cn-hongkong.aliyuncs.com/20190522112330231189.png?OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1558502610&Signature=gXXnov4FjwNjmkNdX7%2FNdmJ3d6U%3D'
-# ddd = open('D:/11.jpg', 'rb')
-# print(ddd)
-# exit()
-
-# res = requests.put(put_url, data=open('D:/048.jpg', 'rb'), headers={})
-res = requests.put(put_url, data='22222', headers={})
-print(res)

+ 0 - 0
Ansjer/test/thumnber.py


+ 5 - 2
Ansjer/urls.py

@@ -3,7 +3,7 @@ from django.urls import path, re_path
 
 from Controller import FeedBack, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
     AccessLog, Test, MealManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, AppColophon, \
-    EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UidSetController,\
+    EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UidSetController, \
     UserManger, CheckUserData, \
     UserController, CloudVod, OrderContrller, VodBucket, DetectController, DeviceShare, UserBrandController, \
     StsOssController, UIDPreview, SysMsg
@@ -129,6 +129,7 @@ urlpatterns = [
     url(r'^appVer/views$', AppInfo.AppVersionView.as_view()),
 
     url(r'^user/init$', UserController.InitInfoView.as_view()),
+    # 获取时区相关信息
     url(r'^getTZ$', EquipmentStatus.getTZ),
 
     # oss授权
@@ -141,7 +142,9 @@ urlpatterns = [
 
     url(r'^equipment/flowUpdate', EquipmentManager.update_uid_set),
 
-    # 新的设备接口
+    url(r'^deviceShadow/update', EquipmentManager.update_device_shadow),
+
+    # 分区分流
     path('Test', Test.Test.as_view()),
     # 路由加参数参考
     # url(r'^(?P<path>.*)/(?P<UID>.*)/lls$', Test.Test.as_view(), name=u'gg'),

+ 11 - 12
Controller/DetectController.py

@@ -79,17 +79,19 @@ class DetectControllerView(View):
         nowTime = int(time.time())
         if not page or not line:
             return response.json(444, 'page,line')
-        qs = Equipment_Info.objects.filter(userID_id=userID, eventTime__gte=nowTime - 3600 * 24 * 27)
+
+        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')
-            uid_type_dict = {uid: dvqs[0]['Type']}
+            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')
+            dvqs = Device_Info.objects.filter(userID_id=userID).values('UID', 'Type', 'NickName')
             uid_type_dict = {}
             for dv in dvqs:
-                uid_type_dict[dv['UID']] = dv['Type']
+                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',
@@ -125,13 +127,13 @@ class DetectControllerView(View):
                     # 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]
+                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 do_change_status(self, userID, request_dict, response):
         uid = request_dict.get('uid', None)
         token_val = request_dict.get('token_val', None)
@@ -222,8 +224,6 @@ class DetectControllerView(View):
             return response.json(0)
 
 
-
-
 # http://192.168.136.40:8077/notify/push?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJUTjdNUEUzMjExVUU3NkFQMTExQSJ9.k501567VdnhFpn_ygzGRDat3Kqlz5CsEA9jAC2dDk_g&obj=12341234&n_time=1234561234
 # http://test.dvema.com/notify/push?uidToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJQMldOR0pSRDJFSEE1RVU5MTExQSJ9.xOCI5lerk8JOs5OcAzunrKCfCrtuPIZ3AnkMmnd-bPY&n_time=1526845794&channel=1&event_type=51&is_st=0
 # 移动侦测接口
@@ -256,9 +256,8 @@ class NotificationView(View):
         uid_set_qs = UidSetModel.objects.filter(uid=uid, detect_status=1)
         if uid_set_qs.exists():
             uid_set_id = uid_set_qs[0].id
-            uid_push_qs = UidPushModel.objects.filter(uid_set__id=uid_set_id).values('token_val', 'app_type',
-                                                                                     'appBundleId', 'push_type',
-                                                                                     'userID_id', 'userID__NickName')
+            uid_push_qs = UidPushModel.objects.filter(uid_set__id=uid_set_id). \
+                values('token_val', 'app_type', 'appBundleId', 'push_type', 'userID_id', 'userID__NickName')
             if uid_set_qs.exists():
                 redisObj = RedisObject(db=6)
                 pkey = '{uid}_{channel}_ptl'.format(uid=uid, channel=channel)

+ 53 - 1
Controller/EquipmentManager.py

@@ -11,7 +11,9 @@ from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
+from Object.ETkObject import ETkObject
 import oss2
+from django.http import JsonResponse
 
 
 #     查询用户设备
@@ -635,7 +637,7 @@ def uid_status(request):
     response.lang = tko.lang
     if tko.code != 0:
         return response.json(tko.code)
-    qs = UidSetModel.objects.filter(uid=uid).values('uid', 'detect_status', 'detect_interval', 'version', 'ucode')
+    qs = UidSetModel.objects.filter(uid=uid).values('uid', 'detect_status', 'detect_interval', 'version', 'ucode','p2p_region')
     # 判断uid配置表信息是否存在
     if qs.exists():
         data = {
@@ -643,6 +645,7 @@ def uid_status(request):
             'push_interval': qs[0]['detect_interval'],  # 推送间隔
             'ucode': qs[0]['ucode'],
             'version': qs[0]['version'],
+            'p2p_region':qs[0]['p2p_region']
         }
         # 查询云存储相关信息
         ubqs = UID_Bucket.objects.filter(uid=uid). \
@@ -698,3 +701,52 @@ def update_uid_set(request):
             return response.json(14)
     else:
         return response.json(tko.code)
+
+
+# 设备影子更新
+def update_device_shadow(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)
+    etk = request_dict.get('etk', None)
+    eto = ETkObject(etk)
+    uid = eto.uid
+    if uid:
+        ucode = request_dict.get('ucode', None)
+        version = request_dict.get('version', None)
+        p2p_region = request_dict.get('p2p_region', None)
+        us_qs = UidSetModel.objects.filter(uid=uid)
+        # 更新
+        nowTime = int(time.time())
+        if us_qs.exists():
+            update_dict = {'updTime':nowTime}
+            if p2p_region:
+                update_dict['p2p_region'] = p2p_region
+            if ucode:
+                update_dict['ucode'] = ucode
+            if version:
+                update_dict['version'] = version
+            us_qs.update(**update_dict)
+            return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
+        # 新增
+        else:
+            create_dict = {
+                'uid': uid,
+                'addTime': nowTime,
+                'updTime': nowTime,
+            }
+            if p2p_region:
+                create_dict['p2p_region'] = p2p_region
+            if ucode:
+                create_dict['ucode'] = ucode
+            if version:
+                create_dict['version'] = version
+            UidSetModel.objects.create(**create_dict)
+            return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
+    else:
+        return JsonResponse(status=200, data={'code': 403, 'msg': 'error etk'})

+ 19 - 2
Controller/FeedBack.py

@@ -96,7 +96,13 @@ class FeedBackView(View):
         res_1 = request_dict.get('res_1', None)
         res_2 = request_dict.get('res_2', None)
         res_3 = request_dict.get('res_3', None)
-        # res_list = []
+
+        app = request_dict.get('app', None)
+        phone_model = request_dict.get('phone_model', None)
+        os_version = request_dict.get('os_version', None)
+        uid = request_dict.get('uid', None)
+        product_type = request_dict.get('product_type', None)
+
         try:
             with transaction.atomic():
                 fb = FeedBackModel()
@@ -105,6 +111,16 @@ class FeedBackView(View):
                 fb.content = content
                 if type:
                     fb.type = type
+                if app:
+                    fb.app = app
+                if phone_model:
+                    fb.phone_model = phone_model
+                if os_version:
+                    fb.os_version = os_version
+                if uid:
+                    fb.uid = uid
+                if product_type:
+                    fb.product_type = product_type
                 fb.userID_id = userID
                 fb.save()
                 if res_1:
@@ -174,7 +190,8 @@ class FeedBackView(View):
                 if filter_data:
                     fb_qs = fb_qs.filter(**filter_data)
                 count = fb_qs.count()
-                fb_qs = fb_qs[(page - 1) * line:page * line].values('id', 'type', 'status', 'content', 'addTime',
+                fb_qs = fb_qs[(page - 1) * line:page * line].values('id', 'type', 'status', 'content', 'addTime', 'app',
+                                                                    'uid', 'os_version', 'phone_model', 'product_type',
                                                                     'updTime', 'userID__username')
                 sid_list = []
                 print(fb_qs)

+ 1 - 0
Controller/UserController.py

@@ -662,6 +662,7 @@ class v2authCodeView(TemplateView):
         aliSms = AliSmsObject()
         res = aliSms.send_code_sms(phone=phone, code=identifyingCode, sign_name='Ansjer',
                                    temp_msg='SMS_151600991')
+        print(res)
         if res["Code"] == "OK":
             if reds.set_data(key=phone + '_identifyingCode', val=identifyingCode, expire=60) is not True:
                 return response.json(10, '生成缓存系统错误')

+ 7 - 1
Model/models.py

@@ -364,13 +364,18 @@ class StatResModel(models.Model):
 class FeedBackModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     userID = models.ForeignKey(Device_User, null=True, blank=True, to_field='userID', on_delete=models.CASCADE)
-    type = models.SmallIntegerField(default=0, verbose_name='反馈类型') #【0:产品建议,1:功能异常,2:安全问题】
+    type = models.SmallIntegerField(default=0, verbose_name='反馈类型')  # 【0:产品建议,1:功能异常,2:安全问题】
     status = models.SmallIntegerField(default=0, verbose_name='状态:0未解决/解决')
     content = models.TextField(blank=True, null=True, verbose_name=u'反馈描述')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
     FS = models.ManyToManyField(to='StatResModel', blank=True, verbose_name=u'用户反馈关联资源',
                                 db_table='fb_res')
+    app = models.CharField(max_length=8, default='', verbose_name='类型')  # [ios,android]
+    phone_model = models.CharField(max_length=64, default='', verbose_name='手机型号')  # [小米,android]
+    os_version = models.CharField(max_length=16, default='', verbose_name='系统版本')
+    uid = models.CharField(max_length=20, default='', verbose_name='设备uid')
+    product_type = models.CharField(max_length=32, default='', verbose_name='设备uid')
 
     def __str__(self):
         return self.id
@@ -656,6 +661,7 @@ class UidSetModel(models.Model):
     # addTime 2019年 05月 27日 星期一 16:52:55 CST
     ucode = models.CharField(max_length=32, verbose_name='设备产品码', default='')
     version = models.CharField(max_length=32, verbose_name='设备版本', default='')
+    p2p_region = models.CharField(max_length=16, verbose_name='设备区域', default='ALL')  # ALL CN EU US
 
     class Meta:
         db_table = 'uid_set'

+ 39 - 0
Object/ETkObject.py

@@ -0,0 +1,39 @@
+#!/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/6/1 17:25
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: ETkObject.py
+@Contact: chanjunkai@163.com
+"""
+
+import base64
+import urllib.parse
+
+
+class ETkObject(object):
+    def __init__(self, etk):
+        self.uid = ''
+        self.parseUid(etk)
+
+    def parseUid(self, etk):
+        try:
+            c = base64.b64decode(etk)
+            c = c[2:-2]
+            c = urllib.parse.unquote(c.decode('utf-8'))
+            c = base64.b64decode(c)
+            uid = c.decode('utf-8')
+            if len(uid) == 20:
+                self.uid = uid
+        except Exception as e:
+            print(repr(e))
+
+
+
+eto = ETkObject('R19XRFZZVGpZMU5VUkRXVE5NVUZsWE1qRXhNVUU9ViY=')
+print(eto.uid)

+ 2 - 0
Object/ResponseObject.py

@@ -18,6 +18,7 @@ class ResponseObject(object):
             48: 'System object error!',
             89: 'Already send the code, please check it or get it again after 10m',
             90: 'please check code or get it again after 5m',
+            99: 'Mail doesn\'t exist!',
             100: 'Phone format error!',
             101: 'Phone already existed!',
             102: 'Phone doesn\'t exist!',
@@ -69,6 +70,7 @@ class ResponseObject(object):
             48: '系统对象错误',
             89: '已发验证码,请检测或10分钟后重新获取。',
             90: '请检测或5分钟后重新获取。',
+            99: '邮箱不存在!',
             100: '手机格式错误!',
             101: '手机已存在!',
             102: '手机不存在!',

+ 2 - 1
templates/hlsvod.html

@@ -10,7 +10,8 @@
 <!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@canary"></script> -->
 <video id="video"></video>
 <script>
-    var url = 'http://cloudvod1.oss-cn-shenzhen.aliyuncs.com/FTSLL8HM437Z38WU111A/vod4/2018121001/1543902118/1543902118.m3u8?Signature=7V5EbsWhhxVF4HVzw%2BIGEZo67fk%3D&OSSAccessKeyId=LTAIyMkGfEdogyL9&x-oss-process=hls%2Fsign&Expires=1544780759'
+    //var url = 'http://cloudvod1.oss-cn-shenzhen.aliyuncs.com/FTSLL8HM437Z38WU111A/vod4/2018121001/1543902118/1543902118.m3u8?Signature=7V5EbsWhhxVF4HVzw%2BIGEZo67fk%3D&OSSAccessKeyId=LTAIyMkGfEdogyL9&x-oss-process=hls%2Fsign&Expires=1544780759'
+    var url = 'https://apg.oss-cn-shenzhen.aliyuncs.com/testplay/1545101955.m3u8'
     var video = document.getElementById('video');
     if (Hls.isSupported()) {
         var hls = new Hls();