chenjunkai 6 жил өмнө
parent
commit
cf90a96abd

+ 1 - 0
Ansjer/test/coposs_sts.py

@@ -68,3 +68,4 @@ bucket = oss2.Bucket(auth, endpoint, bucket_name)
 # res = bucket.put_object('oss_media_hls.ts', b'hello world')
 res = bucket.put_object('object-name.txt', b'hello world')
 print(res)
+

+ 2 - 2
Controller/CloudVod.py

@@ -744,10 +744,10 @@ class CloudVodView(View):
             .values("time", "sec", "bucket__bucket", "bucket__endpoint", "bucket__region", "id")
         vod_play_list = []
         print(vodqs)
+        auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
         for vod in vodqs:
             bucket_name = vod["bucket__bucket"]
             endpoint = vod["bucket__endpoint"]
-            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
             bucket = oss2.Bucket(auth, endpoint, bucket_name)
             m3u8 = '{uid}/vod{channel}/{time}/{time}.m3u8'. \
                 format(uid=UID, channel=channel, time=vod['time'])
@@ -760,7 +760,7 @@ class CloudVodView(View):
             vod_play_url = '{url_start}?{url_end}'. \
                 format(url_start=url_start, url_end=url_end)
             thumb = bucket.sign_url('GET', ts, 3600,
-                                    params={'x-oss-process': 'video/snapshot,t_10000,m_fast,w_300'})
+                                    params={'x-oss-process': 'video/snapshot,t_1000,m_fast,w_300'})
             vod_play_list.append(
                 {'name': vod['time'], 'sign_url': vod_play_url, 'thumb': thumb, 'sec': vod['sec'], 'id': vod['id']})
         return response.json(0, vod_play_list)

+ 65 - 39
Controller/DetectController.py

@@ -31,7 +31,6 @@ from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.UidTokenObject import UidTokenObject
 from django.http import JsonResponse
-from Service.CommonService import CommonService
 
 
 # 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&app_type=1
@@ -81,7 +80,7 @@ class DetectControllerView(View):
             dvqs = Device_Info.objects.filter(UID=uid).values('Type')
             uid_type_dict = {uid: dvqs[0]['Type']}
         else:
-            dvqs = Device_Info.objects.filter(userID_id=userID).values('UID','Type')
+            dvqs = Device_Info.objects.filter(userID_id=userID).values('UID', 'Type')
             uid_type_dict = {}
             for dv in dvqs:
                 uid_type_dict[dv['UID']] = dv['Type']
@@ -100,7 +99,11 @@ class DetectControllerView(View):
                 p['img'] = bucket.sign_url('GET',
                                            '{uid}/{channel}/{time}.jpeg'.format(uid=p['devUid'], channel=p['Channel'],
                                                                                 time=p['eventTime']), 300)
-            p['uid_type'] = uid_type_dict[p['devUid']]
+            uid_type_s = ''
+            if p['devUid'] in uid_type_dict.keys():
+                uid_type_s = uid_type_dict[p['devUid']]
+            p['uid_type'] = uid_type_s
+
             res.append(p)
         return response.json(0, {'datas': res, 'count': count})
 
@@ -112,10 +115,11 @@ class DetectControllerView(View):
         push_type = request_dict.get('push_type', None)
         status = request_dict.get('status', None)
         m_code = request_dict.get('m_code', None)
-        print('status')
-        print(status)
+        interval = request_dict.get('interval', None)
+        print('status:' + status)
         if not status:
             return response.json(444, 'status')
+        # 关闭推送
         if status == '0':
             if not all([app_type, appBundleId, uid, m_code]):
                 return response.json(444, 'app_type,appBundleId,uid,m_code')
@@ -126,6 +130,7 @@ class DetectControllerView(View):
                 return response.json(0)
             else:
                 return response.json(173)
+        # 开启推
         elif status == '1':
             if not all([appBundleId, app_type, token_val, uid, m_code]):
                 return response.json(444, 'appBundleId,app_type,token_val,uid,m_code')
@@ -138,19 +143,25 @@ class DetectControllerView(View):
                                                         uid=uid, m_code=m_code)
                     print(uid_app_qs)
                     if uid_app_qs.exists():
-                        uid_app_qs.update(status=1)
+                        update_dict = {status: 1}
+                        if interval:
+                            update_dict['interval'] = int(interval)
+                        uid_app_qs.update(**update_dict)
                     else:
-                        UID_App.objects.create(
-                            uid=uid,
-                            userID_id=userID,
-                            appBundleId=appBundleId,
-                            app_type=app_type,
-                            push_type=push_type,
-                            token_val=token_val,
-                            status=1,
-                            m_code=m_code,
-                            addTime=now_time,
-                            updTime=now_time)
+                        create_dict = {
+                            'uid': uid,
+                            'userID_id': userID,
+                            'appBundleId': appBundleId,
+                            'app_type': app_type,
+                            'push_type': push_type,
+                            'token_val': token_val,
+                            'status': 1,
+                            'm_code': m_code,
+                            'addTime': now_time,
+                            'updTime': now_time}
+                        if interval:
+                            create_dict['interval'] = int(interval)
+                        UID_App.objects.create(**create_dict)
                 except Exception as e:
                     print(repr(e))
                     return response.json(10, repr(e))
@@ -187,13 +198,19 @@ class NotificationView(View):
         event_type = request_dict.get('event_type', None)
         is_st = request_dict.get('is_st', None)
         if not all([uidToken, channel, n_time]):
-            return JsonResponse(status=404, data={})
+            return JsonResponse(status=200, data={
+                'code': 444,
+                'msg': 'param is wrong'})
             # return response.json(444)
         utko = UidTokenObject(uidToken)
         uid = utko.UID
         uaqs = UID_App.objects.filter(uid=uid, status=1). \
-            values('token_val', 'app_type', 'appBundleId', 'push_type', 'uid', 'userID_id', 'userID__NickName')
+            values('token_val', 'app_type', 'appBundleId', 'push_type', 'uid', 'userID_id', 'userID__NickName',
+                   'interval')
         if uaqs.exists():
+
+            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+            bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
             for ua in uaqs:
                 push_type = ua['push_type']
                 # ios apns
@@ -204,20 +221,15 @@ class NotificationView(View):
                     self.do_gmc(request_dict, ua, response)
                 # android jpush
                 elif push_type == 2:
-                    print('===============')
-                    print(push_type)
-                    print('=============')
                     self.do_jpush(request_dict, ua, response)
-                self.do_save_equipment_info(ua, n_time, channel, event_type, is_st)
-            #############
-            # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
 
+                # self.do_save_equipment_info(ua, n_time, channel, event_type, is_st)
+            # 需求不一样,所以这么做的
+            self.do_bulk_create_info(uaqs, n_time, channel, event_type, is_st)
             if is_st == '0':
                 return JsonResponse(status=200, data={'code': 0, 'msg': 'success'})
             else:
-                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
                 # Endpoint以杭州为例,其它Region请按实际情况填写。
-                bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
                 obj = '{uid}/{channel}/{filename}.jpeg'.format(uid=uid, channel=channel, filename=n_time)
                 # 设置此签名URL在60秒内有效。
                 url = bucket.sign_url('PUT', obj, 7200)
@@ -226,7 +238,7 @@ class NotificationView(View):
             ############
         else:
             return JsonResponse(status=200, data={
-                'code': 173,
+                'code': 404,
                 'msg': 'data is not exist'})
 
     def do_jpush(self, request_dict, uaql, response):
@@ -274,10 +286,6 @@ class NotificationView(View):
         response = ResponseObject()
         app_key = jpush_config[appBundleId]['Key']
         master_secret = jpush_config[appBundleId]['Secret']
-        print('===============')
-        print(app_key)
-        print(master_secret)
-        print('=============')
         # 此处换成各自的app_key和master_secre
         _jpush = jpush.JPush(app_key, master_secret)
         push = _jpush.create_push()
@@ -287,13 +295,6 @@ class NotificationView(View):
         push.audience = jpush.registration_id(token_val)
         push_data = {"alert": "Motion ", "event_time": n_time, "event_type": event_type, "msg": "",
                      "received_at": n_time, "sound": "sound.aif", "uid": uid, "zpush": "1"}
-        push_msg = json.dumps(push_data)
-        # push.notification = jpush.notification(alert="hello jpush api")
-        # 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:
@@ -378,3 +379,28 @@ class NotificationView(View):
             alarm='0',
             is_st=int(is_st),
             receiveTime=n_time)
+
+    def do_bulk_create_info(self, uaqs, n_time, channel, event_type, is_st):
+        #
+        qs_list = []
+        for dv in uaqs:
+            add_data = {
+                'userID_id': dv["userID_id"],
+                'eventTime': n_time,
+                'eventType': event_type,
+                'devUid': dv['uid'],
+                'devNickName': dv['userID__NickName'],
+                'Channel': channel,
+                'alarm': 'Motion \tChannel:{channel}'.format(channel=channel),
+                'is_st': int(is_st),
+                'receiveTime': n_time
+            }
+            qs_list.append(Equipment_Info(**add_data))
+            if qs_list:
+                print(1)
+                Equipment_Info.objects.bulk_create(qs_list)
+                return True
+            else:
+                return False
+        else:
+            return False

+ 7 - 4
Controller/EquipmentInfo.py

@@ -348,10 +348,13 @@ class DetectStatusView(View):
 # 按季度删除访问日志
 def deleteExpireEquipmentInfo(request):
     response = ResponseObject()
+    i = int(request.GET.get('i',10))
+
     import time
     nowTime = int(time.time())
-    ei = Equipment_Info.objects.filter(eventTime__lte=str(nowTime - 3600 * 24 * 90))[0:1000]
-    id_list = ei.values_list("id",flat=True)
-    print(id_list)
-    Equipment_Info.objects.filter(id__in=list(id_list)).delete()
+    for i in range(i):
+        ei = Equipment_Info.objects.filter(eventTime__lte=str(nowTime - 3600 * 24 * 90))[0:3000]
+        id_list = ei.values_list("id", flat=True)
+        print(id_list)
+        Equipment_Info.objects.filter(id__in=list(id_list)).delete()
     return response.json(0)

+ 3 - 2
Controller/EquipmentManager.py

@@ -616,11 +616,12 @@ def uid_status(request):
     response.lang = tko.lang
     if tko.code != 0:
         return response.json(tko.code)
-    qs = UID_App.objects.filter(uid=uid, userID_id=tko.userID).values('uid', 'status')
+    qs = UID_App.objects.filter(uid=uid, userID_id=tko.userID).values('uid', 'status','interval')
     print(qs)
     if qs.exists():
         data = {
-            'push_status': qs[0]['status']
+            'push_status': qs[0]['status'],
+            'interval':qs[0]['interval']# 推送间隔
         }
         ubqs = UID_Bucket.objects.filter(uid=uid). \
             values('bucket__content', 'status', 'channel', 'endTime', 'uid')

+ 4 - 1
Controller/Test.py

@@ -31,7 +31,10 @@ class Test(View):
         request_dict = request.GET
         # return self.do_apns(request_dict)
         # return self.do_get_putOss_url(request.GET)
-
+        # from django.http import JsonResponse
+        # return JsonResponse(status=200,data={
+        #         'code': 173,
+        #         'msg': 'data is not exist'})
         return self.do_gcm_push(request)
         return self.do_alipay_query_status()
 

+ 0 - 53
Controller/xls.py

@@ -1,53 +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/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)

+ 3 - 2
Model/models.py

@@ -492,7 +492,7 @@ class Order_Model(models.Model):
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
     endTime = models.IntegerField(verbose_name='结束时间', default=0)
-    status = models.SmallIntegerField(default=0, verbose_name='付款状态') # 0:否,1:成功
+    status = models.SmallIntegerField(default=0, verbose_name='付款状态')  # 0:否,1:成功
     # 订单关联套餐
     rank = models.ForeignKey(Store_Meal, to_field='id', default='', on_delete=models.CASCADE, verbose_name='套餐类型')
     paypal = models.CharField(max_length=150, default='', verbose_name='paypal付款url')
@@ -572,7 +572,8 @@ class UID_App(models.Model):
     push_type = models.IntegerField(default=0, verbose_name=u'推送类型')  # 0,apns 1,安卓gcm 2,极光
     token_val = models.CharField(default='', max_length=160, verbose_name=u'设备验证令牌')
     status = models.SmallIntegerField(default=0, verbose_name='状态[0:关闭,1:开启,2:用户解绑]')
-    m_code = models.CharField(default='',max_length=64,verbose_name='手机唯一标识')
+    m_code = models.CharField(default='', max_length=64, verbose_name='手机唯一标识')
+    interval = models.IntegerField(verbose_name='推送间隔', default=0)  # 秒
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
 

+ 0 - 124
templates/testttt.py

@@ -1,124 +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/4/2 15:17
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: testttt.py
-@Contact: chanjunkai@163.com
-"""
-# !/usr/bin/python3
-
-# !/usr/bin/python3
-#
-# import uuid
-#
-#
-#
-# udt = uuid.uuid1()
-# print(udt)
-# exit()
-# 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', 'apg')
-#
-# # 设置此签名URL在60秒内有效。
-# # url = bucket.sign_url('PUT', 'wupengyangceshi.png', 60)
-# url = bucket.sign_url('GET', 'ADD2JGTZG22XBL2S111A/9/1546545891.jpeg', 60)
-# print(url)
-#
-# exit()
-#
-import requests
-
-
-# didir = 'D:/13.56.215.252/git/AnsjerFormal/templates/adf.jpg'
-url = 'http://apg.oss-cn-shenzhen.aliyuncs.com/ADD2JGTZG22XBL2S111A%2F9%2F1546545891.jpeg?Signature=mLm0%2BrKpgRW5KGBmmmuLnCg4nPQ%3D&Expires=1555322681&OSSAccessKeyId=LTAIyMkGfEdogyL9'
-
-r = requests.put(url,data='aadsf;llllllllllllllllllllllllllllllllllllllllllllljk')
-print(r.status_code)
-exit()
-import smtplib
-from email.mime.text import MIMEText
-from email.utils import formataddr
-
-# my_sender = '1758730877@qq.com'  # 发件人邮箱账号
-# my_pass = 'jeridalqsufbdbdc'  # 发件人邮箱密码
-my_sender = 'sara@zositech.com'  # 发件人邮箱账号
-my_pass = 'FMEfRvfUDWNAj145'  # 发件人邮箱密码
-my_user = '1758730877@qq.com'  # 收件人邮箱账号,我这边发送给自己
-
-ret = True
-try:
-    msg = MIMEText('填写邮件内容', 'plain', 'utf-8')
-    msg['From'] = formataddr(["FromRunoob", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
-    msg['To'] = formataddr(["FK", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
-    msg['Subject'] = "菜鸟教程发送邮件测试"  # 邮件的主题,也可以说是标题
-
-    server = smtplib.SMTP_SSL("hwsmtp.qiye.163.com", 994)  # 发件人邮箱中的SMTP服务器,端口是25
-    # server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
-    server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
-    server.sendmail(my_sender, [my_user, ], msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
-    server.quit()  # 关闭连接
-except Exception as e:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
-    print(repr(e))
-    ret = False
-else:
-    print('success')
-
-exit()
-
-import smtplib
-from email.mime.text import MIMEText
-from email.utils import formataddr
-
-my_sender = 'zositech@gmail.com'  # 发件人邮箱账号
-my_pass = 'ZHzxb0805'  # 发件人邮箱密码
-my_user = 'chanjunkai@163.com'  # 收件人邮箱账号,我这边发送给自己
-
-ret = True
-try:
-    msg = MIMEText('填写邮件内容', 'plain', 'utf-8')
-    msg['From'] = formataddr(["FromRunoob", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
-    msg['To'] = formataddr(["FK", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
-    msg['Subject'] = "菜鸟教程发送邮件测试"  # 邮件的主题,也可以说是标题
-
-    server = smtplib.SMTP_SSL("smtp.gmail.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
-    server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
-    server.sendmail(my_sender, [my_user, ], msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
-    server.quit()  # 关闭连接
-except Exception as e:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
-    print(repr(e))
-    ret = False
-else:
-    print('success')
-
-exit()
-# -*- coding: utf-8 -*-
-# import requests
-# url = requests.put('http://apg.oss-cn-shenzhen.aliyuncs.com/xaa?Signature=9nVkM5bE6%2B601E8kVPTlt%2B7zg%2FI%3D&OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1554278510',data='asf')
-# print(url.status_code)
-# exit()
-
-
-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', 'wupengyangceshi.png', 60)
-url = bucket.sign_url('PUT', 'wupengyangceshi.png', 60)
-print(url)
-# import requests
-# r = requests.put(url,data='xadf')
-# print(r.content)