Explorar o código

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

# Conflicts:
#	Controller/DeviceShare.py
pzb %!s(int64=6) %!d(string=hai) anos
pai
achega
93bde00de9

+ 2 - 0
Ansjer/urls.py

@@ -36,6 +36,8 @@ urlpatterns = [
     url(r'^equipment/findEquipmentInfo$', EquipmentManager.findEquipmentInfoInterface),
     # 新删除设备接口
     url(r'^equipment/delete', EquipmentManager.deleteInterface),
+    url(r'^equipment/add', EquipmentManager.addInterface),
+    url(r'^equipment/query', EquipmentManager.queryInterface),
 
     url(r'^OTA/uploads$', OTAEquipment.getUploadFiletoDirView.as_view()),
     url(r'^OTA/download$', OTAEquipment.downloadUpdataFileUrl),

+ 0 - 13
Controller/AliPayOrder.py

@@ -1,13 +0,0 @@
-#!/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/2/22 14:37
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: AliPayOrder.py
-@Contact: chanjunkai@163.com
-"""

+ 159 - 105
Controller/EquipmentManager.py

@@ -3,8 +3,6 @@ import time
 import traceback
 
 import simplejson as json
-from django.views.decorators.csrf import csrf_exempt
-
 from Model.models import Device_Info, UID_Bucket
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -13,7 +11,6 @@ from Service.ModelService import ModelService
 
 
 #     查询用户设备
-@csrf_exempt
 def queryUserEquipmentInterface(request):
     request.encoding = 'utf-8'
     response = ResponseObject()
@@ -53,7 +50,6 @@ def queryUserEquipmentInterface(request):
     return response.json(0, {'datas': res})
 
 
-@csrf_exempt
 def addNewUserEquipmentInterface(request):
     request.encoding = 'utf-8'
     response = ResponseObject()
@@ -120,57 +116,6 @@ def addNewUserEquipmentInterface(request):
         return response.json(0, sqlDict)
 
 
-@csrf_exempt
-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)
-    deviceContent = request_dict.get('content', None)
-    if not deviceContent:
-        return response.json(444, 'content')
-    tko = TokenObject(token)
-    response.lang = tko.lang
-    if tko.code != 0:
-        return response.json(tko.code)
-    userID = tko.userID
-    try:
-        deviceData = json.loads(deviceContent)
-        UID = deviceData.get('UID', None)
-        if not UID:
-            return response.json(444, 'content')
-        dValid = Device_Info.objects.filter(userID=userID, UID=UID)
-        if dValid:
-            return response.json(174)
-        else:
-            UID = deviceData.get('UID', '')
-            re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
-            if re_uid.match(UID):
-                is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
-                # 判断是否有已绑定用户
-                if not is_bind.exists():
-                    userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
-                                             **deviceData)
-                    userDevice.save()
-                else:
-                    return response.json()
-            else:
-                return response.json(444, 'UID')
-    except Exception as e:
-        errorInfo = traceback.format_exc()
-        print('添加设备错误: %s ' % errorInfo)
-        return response.json(178, repr(e))
-    else:
-        sqlDict = CommonService.qs_to_dict([userDevice])
-        return response.json(0, sqlDict)
-
-
-@csrf_exempt
 def delUserEquipmentInterface(request):
     '''
     删除用户设备
@@ -205,54 +150,6 @@ def delUserEquipmentInterface(request):
         return response.json(0)
 
 
-@csrf_exempt
-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)
-    if not id:
-        return response.json(444, 'id')
-    tko = TokenObject(token)
-    response.lang = tko.lang
-    if tko.code != 0:
-        return response.json(tko.code)
-    userID = tko.userID
-    # 主用户删除设备全部删除
-    if not userID:
-        return response.json(309)
-    try:
-        dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
-        uid = dv_qs[0].UID
-        if dv_qs[0].isShare:
-            dv_qs.delete()
-        else:
-            # 主用户删除设备
-            dv_qs.delete()
-            # 分享获得用户假删除
-            ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True)
-            if ud_dv_qs.exists():
-                ud_dv_qs.update(isExist=0)
-    except Exception as e:
-        errorInfo = traceback.format_exc()
-        print('删除数据库记录错误: %s' % errorInfo)
-        return response.json(176, repr(e))
-    else:
-        return response.json(0)
-
-
-@csrf_exempt
 def modifyUserEquipmentInterface(request):
     '''
     修改用户设备
@@ -291,7 +188,6 @@ def modifyUserEquipmentInterface(request):
         return response.json(0, res)
 
 
-@csrf_exempt
 def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
     request.encoding = 'utf-8'
     response = ResponseObject()
@@ -328,7 +224,6 @@ def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
         return response.json(0, res)
 
 
-@csrf_exempt
 def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
     request.encoding = 'utf-8'
     response = ResponseObject()
@@ -383,3 +278,162 @@ def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
                     send_dict["datas"][k]['fields']['primaryusername'] = primary
         send_dict['count'] = count
         return response.json(0, send_dict)
+
+
+# 添加设备字段
+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', None)
+    Type = request_dict.get('Type', None)
+    ChannelIndex = request_dict.get('ChannelIndex', None)
+    if all([UID, NickName, View_Account, View_Password, 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_exist = Device_Info.objects.filter(UID=UID, userID_id=userID)
+                if is_exist:
+                    return response.json(174)
+                else:
+                    # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
+                    # # 判断是否有已绑定用户
+                    # 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()
+                    except Exception as e:
+                        return response.json(10, repr(e))
+                    else:
+                        dvqs = Device_Info.objects.filter(id=pk).values('id', 'userID', 'NickName', 'UID',
+                                                                        'View_Account',
+                                                                        'View_Password', 'ChannelIndex', 'Type',
+                                                                        'isShare',
+                                                                        'primaryUserID', 'primaryMaster',
+                                                                        'data_joined', 'version',
+                                                                        'isVod', 'isExist')
+                        dvql = CommonService.qs_to_list(dvqs)
+                        ubqs = UID_Bucket.objects.filter(uid=UID). \
+                            values('bucket__content', 'status', 'channel', 'endTime', 'uid')
+                        res = dvql[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 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)
+    if not id:
+        return response.json(444, 'id')
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code != 0:
+        return response.json(tko.code)
+    userID = tko.userID
+    # 主用户删除设备全部删除
+    if not userID:
+        return response.json(309)
+    try:
+        dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
+        uid = dv_qs[0].UID
+        if dv_qs[0].isShare:
+            dv_qs.delete()
+        else:
+            # 主用户删除设备
+            dv_qs.delete()
+            # 分享获得用户假删除
+            ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True)
+            if ud_dv_qs.exists():
+                ud_dv_qs.update(isExist=0)
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('删除数据库记录错误: %s' % errorInfo)
+        return response.json(176, repr(e))
+    else:
+        return response.json(0)
+
+
+# 新查询设备字段
+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)
+    page = int(page)
+    line = int(line)
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code == 0:
+        userID = tko.userID
+        dvqs = Device_Info.objects.filter(userID_id=userID)
+        if NickName:
+            dvqs.filter(NickName__icontains=NickName)
+        count = dvqs.count()
+        dvql = dvqs[(page - 1) * line:page * line].values('id', 'userID', 'NickName', 'UID', 'View_Account',
+                                                          'View_Password', 'ChannelIndex', 'Type', 'isShare',
+                                                          'primaryUserID', 'primaryMaster', 'data_joined', 'version',
+                                                          'isVod', 'isExist')
+        dvls = CommonService.qs_to_list(dvql)
+        uid_list = []
+        for dvl in dvls:
+            if dvl['isShare'] is False:
+                uid_list.append(dvl['UID'])
+        ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
+            values('bucket__content', 'status', 'channel', 'endTime', 'uid')
+        nowTime = int(time.time())
+        data = []
+        for p in dvls:
+            p['vod'] = []
+            for dm in ubqs:
+                if p['UID'] == dm['uid']:
+                    if dm['endTime'] > nowTime:
+                        p['vod'].append(dm)
+            data.append(p)
+        return response.json(0, {'data': data, 'count': count})
+    else:
+        return response.json(tko.code)

+ 3 - 4
Controller/OrderContrller.py

@@ -80,7 +80,7 @@ class OrderView(View):
         count = omqs.count()
         order_ql = omqs[(page - 1) * line:page * line].values("orderID", "UID", "channel", "desc", "price", "currency",
                                                               "addTime",
-                                                              "updTime", "endTime", "paypal", "rank__day","payType",
+                                                              "updTime", "endTime", "paypal", "rank__day", "payType",
                                                               "rank__price", "status",
                                                               "rank__content", "rank__title", "rank__currency",
                                                               "rank_id")
@@ -135,9 +135,8 @@ class OrderView(View):
                 return response.json(0, [])
             count = omqs.count()
             order_ql = omqs[(page - 1) * line:page * line].values("orderID", "UID", "channel", "desc", "price",
-                                                                  "currency",
-                                                                  "addTime",
-                                                                  "updTime", "endTime", "paypal","payType",
+                                                                  "currency", "addTime", "updTime", "endTime", "paypal",
+                                                                  "payType",
                                                                   "rank__day",
                                                                   "rank__price", "status",
                                                                   "rank__content", "rank__title", "rank__currency",

+ 9 - 9
Model/models.py

@@ -206,18 +206,18 @@ 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)
     NickName = models.CharField(blank=True, max_length=32, verbose_name=u'设备名称')
-    UID = models.CharField(blank=True, max_length=32, verbose_name=u'设备UID')
-    SID = models.CharField(blank=True, max_length=32, verbose_name=u'服务器ID')
-    View_Account = models.CharField(blank=True, max_length=32, verbose_name=u'设备用户名称')
-    View_Password = models.CharField(blank=True, max_length=32, verbose_name=u'设备密码')
+    UID = models.CharField(blank=True, max_length=32, verbose_name=u'设备UID',default='')
+    SID = models.CharField(blank=True, max_length=32, verbose_name=u'服务器ID',default='')
+    View_Account = models.CharField(blank=True, max_length=32, verbose_name=u'设备用户名称',default='')
+    View_Password = models.CharField(blank=True, max_length=32, verbose_name=u'设备密码',default='')
     AudioFormat = models.IntegerField(blank=True, default=1, verbose_name=u'初始化影像')
-    EventNotification = models.IntegerField(blank=True, verbose_name=u'报警类型')
-    ChannelIndex = models.IntegerField(blank=True, verbose_name=u'通道号')
+    EventNotification = models.IntegerField(blank=True, verbose_name=u'报警类型',default=0)
+    ChannelIndex = models.IntegerField(blank=True, verbose_name=u'通道号',default=0)
     Online = models.BooleanField(blank=True, default=False, verbose_name=u'设备是否在线')
     mMonitorIndex = models.IntegerField(blank=True, default=-1)
-    Type = models.IntegerField(blank=True)
-    DebugMode = models.IntegerField(blank=True, verbose_name=u'调试模式')
-    NotificationMode = models.IntegerField(blank=True, verbose_name=u'是否报警')
+    Type = models.IntegerField(blank=True,verbose_name='设备类型')
+    DebugMode = models.IntegerField(blank=True, verbose_name=u'调试模式',default=0)
+    NotificationMode = models.IntegerField(blank=True, verbose_name=u'是否报警',default=0)
     qvgaLevel = models.BooleanField(blank=True, verbose_name=u'SD与HD画面', default=0,
                                     help_text=u'0代表:SD、1代表:HD')
     isShare = models.BooleanField(blank=True, verbose_name=u'共享设备',

+ 2 - 1
Object/AWS/SesClassObject.py

@@ -61,7 +61,8 @@ class SesClassObject:
            # python 2.7以上版本,若需要使用SSL,可以这样创建client
            # client = smtplib.SMTP_SSL()
            # SMTP普通端口为25或80
-           client.connect('smtpdm.aliyun.com', 25)
+           client.connect('smtpdm.aliyun.com', 80)
+           # client.connect('smtpdm-ap-southeast-2.aliyun.com', 80)
            # 开启DEBUG模式
            client.set_debuglevel(0)
            client.login(username, password)

+ 1 - 13
Service/CommonService.py

@@ -15,18 +15,6 @@ from Ansjer.config import BASE_DIR
 # 复用性且公用较高封装代码在这
 class CommonService:
 
-    # 返回数据格式化
-    @staticmethod
-    def response_formal(data={'code': '', 'reason': '', 'result': {}}):
-        resJSON = json.dumps(
-            {
-                "result_code": data['code'],
-                "reason": data['reason'],
-                "result": data['result'],
-                "error_code": data['code'],
-            }, ensure_ascii=False)
-        return resJSON
-
     # 添加模糊搜索
     @staticmethod
     def get_kwargs(data={}):
@@ -173,7 +161,7 @@ class CommonService:
     @staticmethod
     def qs_to_list(qs):
         res = []
-        print(qs)
+        # print(qs)
         for ps in qs:
             if 'add_time' in ps:
                 ps['add_time'] = ps['add_time'].strftime("%Y-%m-%d %H:%M:%S")

+ 2 - 0
Service/TemplateService.py

@@ -53,6 +53,8 @@ class TemplateService:
             'cloudVod/filterVod',
             'cloudVod/findVod',
             'cloudVod/aliPayCreateOrder',
+
+            'equipment/add',
         ]
         return apiList
 

+ 1 - 0
templates/success.html

@@ -21,4 +21,5 @@
         window.webkit.messageHandlers.jsCallOC.postMessage({"status": 1});
     }
 </script>
+
 </html>