chenjunkai 6 anni fa
parent
commit
6bc7329227
6 ha cambiato i file con 142 aggiunte e 49 eliminazioni
  1. 1 0
      Ansjer/urls.py
  2. 57 47
      Controller/DetectController.py
  3. 53 0
      Controller/xls.py
  4. 1 1
      Model/models.py
  5. 1 1
      Object/TokenObject.py
  6. 29 0
      templates/testttt.py

+ 1 - 0
Ansjer/urls.py

@@ -109,6 +109,7 @@ urlpatterns = [
     url(r'^detect/add$', EquipmentInfo.AddDetectionView.as_view()),
     url(r'^detect/status$', EquipmentInfo.DetectStatusView.as_view()),
     url(r'^detect/(?P<operation>.*)$', DetectController.DetectControllerView.as_view()),
+    url(r'^notify/push$', DetectController.NotificationView.as_view()),
     url(r'^cloudVod/(?P<operation>.*)$', CloudVod.CloudVodView.as_view()),
     url(r'^meal/(?P<operation>.*)$', MealManage.MealView.as_view()),
     url(r'^order/(?P<operation>.*)$', OrderContrller.OrderView.as_view()),

+ 57 - 47
Controller/DetectController.py

@@ -29,6 +29,7 @@ import requests
 from Model.models import Equipment_Info
 
 
+# http://192.168.136.40:8077/detect/changeStatus?uid=JW3684H8BSHG9TTM111A&token_val=18071adc03536302f34&appBundleId=com.ansjer.zccloud_ab&push_type=2&token=local&status=1
 class DetectControllerView(View):
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
@@ -59,35 +60,42 @@ class DetectControllerView(View):
         else:
             return response.json(tko.code)
 
-    def do_change_status(self, userID, uid, request_dict, response):
+    def do_change_status(self, userID, request_dict, response):
         uid = request_dict.get('uid', None)
         token_val = request_dict.get('token_val', None)
         appBundleId = request_dict.get('appBundleId', None)
         push_type = request_dict.get('push_type', None)
-        dvqs = Device_Info.objects.filter(userID_id=userID, UID=uid)
-        aiqs = App_Info.objects.filter(appBundleId=appBundleId).values('app_type')
-        if dvqs.exists() and aiqs.exists():
-            now_time = int(time.time())
-            try:
-                UID_App.objects.create(
-                    uid=uid,
-                    userID_id=userID,
-                    appBundleId=appBundleId,
-                    app_type=aiqs[0]['app_type'],
-                    push_type=push_type,
-                    token_val=token_val,
-                    addTime=now_time,
-                    updTime=now_time)
-            except Exception as e:
-                print(repr(e))
+        status = request_dict.get('status', None)
+        if status == 0:
+            UID_App.objects.filter(appBundleId=appBundleId, userID_id=userID, token_val=token_val, uid=uid).delete()
+            return response.json(0)
+        elif status == 1:
+            dvqs = Device_Info.objects.filter(userID_id=userID, UID=uid)
+            aiqs = App_Info.objects.filter(appBundleId=appBundleId).values('app_type')
+            print(dvqs)
+            print(aiqs)
+            if dvqs.exists() and aiqs.exists():
+                now_time = int(time.time())
+                try:
+                    UID_App.objects.create(
+                        uid=uid,
+                        userID_id=userID,
+                        appBundleId=appBundleId,
+                        app_type=aiqs[0]['app_type'],
+                        push_type=push_type,
+                        token_val=token_val,
+                        addTime=now_time,
+                        updTime=now_time)
+                except Exception as e:
+                    print(repr(e))
+                else:
+                    utko = UidTokenObject()
+                    utko.generate(data={'uid': uid})
+                    detectUrl = "{SERVER_DOMAIN}notify/push?uidToken={uidToken}". \
+                        format(uidToken=utko.token, SERVER_DOMAIN=SERVER_DOMAIN)
+                    return response.json(0, {'detectUrl': detectUrl})
             else:
-                utko = UidTokenObject()
-                utko.generate(data={'uid': uid})
-                detectUrl = "{SERVER_DOMAIN}detect/push?uidToken={uidToken}". \
-                    format(uidToken=utko.token, SERVER_DOMAIN=SERVER_DOMAIN)
-                return response.json(0, {'detectUrl': detectUrl})
-        else:
-            return response.json(173)
+                return response.json(173)
 
 
 class NotificationView(View):
@@ -102,15 +110,13 @@ class NotificationView(View):
         # operation = kwargs.get('operation')
         return self.validation(request.POST)
 
-    def validation(self, request_dict, operation):
+    def validation(self, request_dict):
         response = ResponseObject()
-        if operation is None:
-            return response.json(444, 'error path')
         uidToken = request_dict.get('uidToken', None)
         utko = UidTokenObject(uidToken)
         uid = utko.UID
         uaqs = UID_App.objects.filter(uid=uid). \
-            values('token_val', 'app_type', 'appBundleId', 'push_type', 'uid', 'userID_id')
+            values('token_val', 'app_type', 'appBundleId', 'push_type', 'uid', 'userID_id', 'userID__NickName')
         if uaqs.exists():
             for ua in uaqs:
                 push_type = ua['push_type']
@@ -180,14 +186,23 @@ class NotificationView(View):
         _jpush.set_logging("DEBUG")
         # push.audience = jpush.all_
         push.audience = jpush.registration_id(token_val)
-        push_msg = json.dumps({'n_time': n_time, 'uid': uid})
+        push_data = {"alert": "Motion ", "event_time": n_time, "event_type": "51", "msg": "",
+                     "received_at": n_time, "sound": "sound.aif", "uid": uid}
+        push_msg = json.dumps(push_data)
         # push.notification = jpush.notification(alert="hello jpush api")
-        push.notification = jpush.notification(alert=push_msg)
+        # push.notification = jpush.notification(alert=push_msg)
+        # android = jpush.android(alert="Hello, Android msg",extras=push_data)
+
+        # push.notification = jpush.notification(alert="Hello, JPush!", android=android)
+        # push.notification = jpush.message(msg_content=push_data, extras=push_data)
+        push.message = jpush.message('Motion', extras=push_data, title='KPNS', content_type='text')
         push.platform = jpush.all_
         try:
             res = push.send()
+            print(res)
         except Exception as e:
             print("Exception")
+            print(repr(e))
             return response.json(10, repr(e))
         else:
             return response.json(0)
@@ -206,11 +221,11 @@ class NotificationView(View):
             'com.ansjer.customizeda_a': 'AAAAb9YP3rk:APA91bF0HzizVWDc6dKzobY9fsaKDK4veqkOZehDXshVXs8pEEvNWjR_YWbhP60wsRYCHCal8fWN5cECVOWNMMzDsfU88Ty2AUl8S5FtZsmeDTkoGntQOswBr8Ln7Fm_LAp1VqTf9CpM',
         }
         serverKey = gcm_config[appBundleId]
-
-        msg = {'n_time': n_time, 'uid': uid}
+        push_data = {"alert": "Motion ", "event_time": n_time, "event_type": "51", "msg": "",
+                     "received_at": n_time, "sound": "sound.aif", "uid": uid}
         json_data = {
             "collapse_key": "WhatYouWant",
-            "data": msg,
+            "data": push_data,
             "delay_while_idle": False,
             "time_to_live": 3600,
             "registration_ids": [token_val]
@@ -254,17 +269,12 @@ class NotificationView(View):
             return response.json(10, repr(e))
 
     def do_save_equipment_info(self, uaql, n_time):
-        try:
-            Equipment_Info.objects.create(
-                userID_id=uaql['userID_id'],
-                eventTime=n_time,
-                eventType=1,
-                devUid=uaql['uid'],
-                devNickName=uaql['devNickName'],
-                Channel='0',
-                alarm='0',
-                receiveTime=n_time)
-        except Exception as e:
-            return False
-        else:
-            return True
+        Equipment_Info.objects.create(
+            userID_id=uaql['userID_id'],
+            eventTime=n_time,
+            eventType=1,
+            devUid=uaql['uid'],
+            devNickName=uaql['userID__NickName'],
+            Channel='0',
+            alarm='0',
+            receiveTime=n_time)

+ 53 - 0
Controller/xls.py

@@ -0,0 +1,53 @@
+#!/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/4/1 9:41
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: xls.py
+@Contact: chanjunkai@163.com
+"""
+import torch
+from torch.autograd import Variable
+import torch.nn as nn
+import torch.nn.functional as F
+
+
+class Net(nn.Module):
+    def __init__(self):
+        super(Net, self).__init__()
+        # 1 input image channel, 6 output channels, 5*5 square convolution
+        # kernel
+
+        self.conv1 = nn.Conv2d(1, 6, 5)
+        self.conv2 = nn.Conv2d(6, 16, 5)
+        # an affine operation: y = Wx + b
+        self.fc1 = nn.Linear(16 * 5 * 5, 120)
+        self.fc2 = nn.Linear(120, 84)
+        self.fc3 = nn.Linear(84, 10)
+
+    def forward(self, x):
+        # max pooling over a (2, 2) window
+        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
+        # If size is a square you can only specify a single number
+        x = F.max_pool2d(F.relu(self.conv2(x)), 2)
+        x = x.view(-1, self.num_flat_features(x))
+        x = F.relu(self.fc1(x))
+        x = F.relu(self.fc2(x))
+        x = self.fc3(x)
+        return x
+
+    def num_flat_features(self, x):
+        size = x.size()[1:]  # all dimensions except the batch dimension
+        num_features = 1
+        for s in size:
+            num_features *= s
+        return num_features
+
+
+net = Net()
+print(net)

+ 1 - 1
Model/models.py

@@ -446,7 +446,7 @@ class App_Info(models.Model):
     minAppversion = models.CharField(default='',blank=True, max_length=12, verbose_name=u'最小系统版本')
     bundleVersion = models.CharField(blank=True, max_length=12, verbose_name=u'项目版本')
     content = models.TextField(blank=True, default='', verbose_name=u'更新内容')
-    app_type = models.IntegerField(default=0, blank=True, verbose_name=u'app类型')
+    app_type = models.IntegerField(default=0, blank=True, verbose_name=u'app类型') # ios 1,android 2
     add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
     downloadLink = models.TextField(blank=True, default='', verbose_name='升级')

+ 1 - 1
Object/TokenObject.py

@@ -21,7 +21,7 @@ class TokenObject:
 
     def __init__(self, token=None):
         if token == 'local':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1NTM0ODQ2MDB9.aKqXfbF7Ate-i5H1-k36fI7Xf_ulIodnloA0p2CapdQ'
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1NTQ3MTQ2OTJ9.jMVRK8GtkZsTfypykBKOHL7Kyxf3BCs0_FQpmK6fAis'
         if token == 'test':
             token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJ1c2VySUQiOiIxNTE1NjQyNjIzMzc5Mzk1MTM4MDAxMzgwMDEiLCJsYW5nIjoiZW4iLCJleHAiOjE1NTI2MTIxOTF9.sO8BtSclN6B-qwqNmYWbICatHYEtyMdoqzZ0hcOSsmg'
         self.token = token

+ 29 - 0
templates/testttt.py

@@ -0,0 +1,29 @@
+#!/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/4/2 15:17
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: testttt.py
+@Contact: chanjunkai@163.com
+"""
+# -*- coding: utf-8 -*-
+import oss2
+
+# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
+auth = oss2.Auth('LTAIyMkGfEdogyL9', '71uIjpsqVOmF7DAITRyRuc259jHOjO')
+# Endpoint以杭州为例,其它Region请按实际情况填写。
+bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'cnvod1')
+
+# 设置此签名URL在60秒内有效。
+url = bucket.sign_url('PUT', 'aa.txt', 60)
+print(url)
+import requests
+r = requests.put(url,data='xadf')
+print(r.content)
+
+