chenjunkai 6 жил өмнө
parent
commit
5575c5ecfc

+ 66 - 29
Controller/DetectController.py

@@ -11,22 +11,26 @@
 @file: DetectController.py
 @Contact: chanjunkai@163.com
 """
+import json
+import os
+import time
+
+import apns2
+import jpush as jpush
+import oss2
+import requests
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
-import time
-import apns2
-from Object.ResponseObject import ResponseObject
-import os
+from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
 from Ansjer.config import BASE_DIR
-from Object.TokenObject import TokenObject
-import jpush as jpush
-from Model.models import Device_User, Device_Info, Equipment_Info, App_Info, UID_App
-from Object.UidTokenObject import UidTokenObject
 from Ansjer.config import SERVER_DOMAIN
-import json
-import requests
+from Model.models import Device_Info, App_Info, UID_App
 from Model.models import Equipment_Info
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Object.UidTokenObject import UidTokenObject
+from django.http import JsonResponse
 
 
 # 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
@@ -69,8 +73,13 @@ class DetectControllerView(View):
         print('status')
         print(status)
         if status == '0':
-            UID_App.objects.filter(appBundleId=appBundleId, userID_id=userID, token_val=token_val, uid=uid).delete()
-            return response.json(0)
+            uid_app_qs = UID_App.objects.filter(appBundleId=appBundleId, userID_id=userID, token_val=token_val,
+                                                uid=uid)
+            if uid_app_qs.exists():
+                uid_app_qs.update(status=0)
+                return response.json(0)
+            else:
+                return response.json(173)
         elif status == '1':
             # return response.json(10)
 
@@ -81,18 +90,25 @@ class DetectControllerView(View):
             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)
+                    uid_app_qs = UID_App.objects.filter(appBundleId=appBundleId, userID_id=userID, token_val=token_val,
+                                                        uid=uid)
+                    print(uid_app_qs)
+                    if uid_app_qs.exists():
+                        uid_app_qs.update(status=1)
+                    else:
+                        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,
+                            status=1,
+                            addTime=now_time,
+                            updTime=now_time)
                 except Exception as e:
                     print(repr(e))
-                    return response.json(10,repr(e))
+                    return response.json(10, repr(e))
                 else:
                     utko = UidTokenObject()
                     utko.generate(data={'uid': uid})
@@ -102,6 +118,8 @@ class DetectControllerView(View):
             else:
                 return response.json(173)
 
+
+# http://192.168.136.40:8077/notify/push?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJUTjdNUEUzMjExVUU3NkFQMTExQSJ9.k501567VdnhFpn_ygzGRDat3Kqlz5CsEA9jAC2dDk_g&obj=12341234&n_time=1234561234
 # 移动侦测接口
 class NotificationView(View):
 
@@ -118,6 +136,11 @@ class NotificationView(View):
     def validation(self, request_dict):
         response = ResponseObject()
         uidToken = request_dict.get('uidToken', None)
+        channel = request_dict.get('channel', None)
+        n_time = request_dict.get('n_time')
+        if not all([uidToken, channel, n_time]):
+            return JsonResponse(status=404)
+            # return response.json(444)
         utko = UidTokenObject(uidToken)
         uid = utko.UID
         uaqs = UID_App.objects.filter(uid=uid). \
@@ -134,11 +157,26 @@ class NotificationView(View):
                 # android jpush
                 elif push_type == 2:
                     self.do_jpush(request_dict, ua, response)
-                n_time = request_dict.get('n_time')
-                self.do_save_equipment_info(ua, n_time)
-            return response.json(0)
+                self.do_save_equipment_info(ua, n_time, channel)
+            #############
+            # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
+            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)
+            res_data = {
+                'code': 0,
+                'img_push': url,
+                'msg': 'success'
+            }
+            return JsonResponse(status=200, data=res_data)
+            ############
         else:
-            return response.json(173)
+            return JsonResponse(status=200, data={
+                'code': 173,
+                'msg': 'data is not exist'})
 
     def do_jpush(self, request_dict, uaql, response):
         jpush_config = {
@@ -266,20 +304,19 @@ class NotificationView(View):
             # assert res.status_code == 200, res.reason
             # assert res.apns_id 
             if res.status_code == 200:
-                # self.do_save_equipment_info(uaql, n_time)
                 return response.json(0)
             else:
                 return response.json(404, res.reason)
         except Exception as e:
             return response.json(10, repr(e))
 
-    def do_save_equipment_info(self, uaql, n_time):
+    def do_save_equipment_info(self, uaql, n_time, channel):
         Equipment_Info.objects.create(
             userID_id=uaql['userID_id'],
             eventTime=n_time,
             eventType=1,
             devUid=uaql['uid'],
             devNickName=uaql['userID__NickName'],
-            Channel='0',
+            Channel=channel,
             alarm='0',
             receiveTime=n_time)

+ 0 - 1
Controller/DeviceShare.py

@@ -56,7 +56,6 @@ class DeviceShareView(View):
                     return self.do_query_user(userID, request_dict, response)
                 elif operation == 'deleteUser':
                     return self.do_delete_user(userID, request_dict, response)
-
                 else:
                     return response.json(414)
             else:

+ 6 - 2
Model/models.py

@@ -443,10 +443,10 @@ class App_Info(models.Model):
     appName = models.CharField(blank=True, max_length=32, verbose_name=u'app名称')
     systemLanguage = models.CharField(blank=True, max_length=32, verbose_name=u'系统语言')
     newAppversion = models.CharField(blank=True, max_length=12, verbose_name=u'系统版本')
-    minAppversion = models.CharField(default='',blank=True, max_length=12, verbose_name=u'最小系统版本')
+    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类型') # ios 1,android 2
+    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='升级')
@@ -460,6 +460,7 @@ class App_Info(models.Model):
         verbose_name_plural = verbose_name
         ordering = ('id',)
 
+
 class App_Colophon(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     app_id = models.ForeignKey(App_Info, to_field='id', on_delete=models.CASCADE, verbose_name='appid编号')
@@ -477,6 +478,7 @@ class App_Colophon(models.Model):
         verbose_name_plural = verbose_name
         ordering = ('id',)
 
+
 class Order_Model(models.Model):
     orderID = models.CharField(blank=True, max_length=20, primary_key=True, verbose_name=u'订单id')
     # 订单关联用户
@@ -559,6 +561,7 @@ class UID_Bucket(models.Model):
         ordering = ('id',)
 
 
+# 推送uid绑定 app —— token_id
 class UID_App(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
@@ -567,6 +570,7 @@ class UID_App(models.Model):
     app_type = models.IntegerField(default=0, verbose_name=u'app类型')
     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:关闭]')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
 

+ 1 - 1
Object/TokenObject.py

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

+ 82 - 5
templates/testttt.py

@@ -11,12 +11,90 @@
 @file: testttt.py
 @Contact: chanjunkai@163.com
 """
-# -*- coding: utf-8 -*-
+# !/usr/bin/python3
+
+# !/usr/bin/python3
+#
+# import uuid
+#
+#
+#
+# udt = uuid.uuid1()
+# print(udt)
+# exit()
+
+
 import requests
-url = requests.put('http://cnvod1.oss-cn-shenzhen.aliyuncs.com/wupengyangceshi.png?OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1554277819&Signature=4Pum%2Bpl8h4yO4ZcAgCURQJ7FTfQ%3D',data='jla;dksfjlk;asdjfklasdjlkfjdsa;lkfjlka;sdf;lkdsaj')
-print(url.status_code)
+
+
+didir = 'D:/13.56.215.252/git/AnsjerFormal/templates/adf.jpg'
+url = 'http://apg.oss-cn-shenzhen.aliyuncs.com/TN7MPE3211UE76AP111A%2F9%2F1234561234.jpeg?OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1554798738&Signature=YDt9q5IEjor7sSzyYleQe9fRye4%3D'
+
+r = requests.put(url,data=open(didir,'rb'))
+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
 
@@ -26,10 +104,9 @@ auth = oss2.Auth('LTAIyMkGfEdogyL9', '71uIjpsqVOmF7DAITRyRuc259jHOjO')
 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)
-
-