Browse Source

处理异常提交

pzb 6 years ago
parent
commit
f7e1dfc248

+ 5 - 2
Ansjer/local_settings.py

@@ -57,7 +57,7 @@ TEMPLATES = [
     {
     {
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
         # 'DIRS': [BASE_DIR + '/static/templates', ],
         # 'DIRS': [BASE_DIR + '/static/templates', ],
-        'DIRS': [BASE_DIR + '/templates', ],
+        'DIRS': [BASE_DIR + '/templates'],
         'APP_DIRS': True,
         'APP_DIRS': True,
         'OPTIONS': {
         'OPTIONS': {
             'context_processors': [
             'context_processors': [
@@ -77,7 +77,10 @@ DATABASE_DATA = 'AnsjerLocal'
 SERVER_HOST = '192.168.136.45'
 SERVER_HOST = '192.168.136.45'
 DATABASES_USER = 'ansjer'
 DATABASES_USER = 'ansjer'
 DATABASES_PASS = '1234'
 DATABASES_PASS = '1234'
-
+# DATABASE_DATA = 'AnsjerLocal'
+# SERVER_HOST = 'localhost'
+# DATABASES_USER = 'root'
+# DATABASES_PASS = '123456'
 DATABASES = {'default': {
 DATABASES = {'default': {
     'ENGINE': 'django.db.backends.mysql',
     'ENGINE': 'django.db.backends.mysql',
     'NAME': DATABASE_DATA,
     'NAME': DATABASE_DATA,

+ 12 - 7
Ansjer/test/osssigput.py

@@ -26,7 +26,7 @@ http://test.dvema.com/cloudVod/getSts?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1N
 '''
 '''
 
 
 # tokenss ={"arn": "acs:ram::1901342792446414:role/stsoss/P2WNGJRD2EHA5EU9111A", "expire": "3600", "Expiration": "2019-02-25T07:03:40Z", "endpoint": "oss-cn-shenzhen.aliyuncs.com", "ip": "120.237.157.181", "storage": "P2WNGJRD2EHA5EU9111A/vod1/", "AccessKeySecret": "ErbGnFyPWPcfNBPRkcpZBJNBVpsX73q2u5vgJYownBQd", "SecurityToken": "CAIS9AJ1q6Ft5B2yfSjIr4vWBsLMjLBI0q2haFD/pTUgb8RvqL3pqDz2IHFIf3NhAe0bv/kzm2lX7/YYlr1LEaBjam7+QZFdzr0K3D7wOtOYkpRIRwn3ctj3d1KIAjvXgeV+CoeQFaELE5XAQlTAkTAJkNmeXD6+XlujHISUgJp8FLo+VRW5ajw0TbUzIRB5+vcHKVzbN/umLnyShXHLXmZlvgdghER166m03re4iHzkgUb91/UeqqnoP5GgdLMMBppkVMqv1+EELsiH2SVLuR9R7/U03u4W8jHZud3ERGEL3DOpEdD4qPBPBVJUW/ljQvdt6+b7maQ/+JaX9eXW0z9BMftYSD+lIImr25n/H/6zPdsYbcSCWROUiIjJbMKq9Vp5PjRCZFpoA4NwciYrVUZzG2uGdvH7oQzwD139G/Tf4sYfyoFoyljkx92OKmWUTq+RuSRiYc5gNBl5b0NLjDG9LfZZKlwWaT18G62SVp5jypvDLGYoZWYagAGOO+MMAjzgPaDMySC/exBy3d1Lp0iCGLeY6HYgMhel1YjuC2+vaPxvIaTgp4n9+QmQi+i1wtRhCVk8bwY0YCgNO5nZds4E0J5g7xTfnMfm30FaRs5s3rJohwEwp4cnsxgqsDGwwvqpOAefRd/hscpw3frgyPEVG6b6XRY4na+xpA==", "AccessKeyId": "STS.NHcMxxaoieoJjvNA5ucKCGxBJ", "bucket_name": "cnvod1", "code": 0}
 # tokenss ={"arn": "acs:ram::1901342792446414:role/stsoss/P2WNGJRD2EHA5EU9111A", "expire": "3600", "Expiration": "2019-02-25T07:03:40Z", "endpoint": "oss-cn-shenzhen.aliyuncs.com", "ip": "120.237.157.181", "storage": "P2WNGJRD2EHA5EU9111A/vod1/", "AccessKeySecret": "ErbGnFyPWPcfNBPRkcpZBJNBVpsX73q2u5vgJYownBQd", "SecurityToken": "CAIS9AJ1q6Ft5B2yfSjIr4vWBsLMjLBI0q2haFD/pTUgb8RvqL3pqDz2IHFIf3NhAe0bv/kzm2lX7/YYlr1LEaBjam7+QZFdzr0K3D7wOtOYkpRIRwn3ctj3d1KIAjvXgeV+CoeQFaELE5XAQlTAkTAJkNmeXD6+XlujHISUgJp8FLo+VRW5ajw0TbUzIRB5+vcHKVzbN/umLnyShXHLXmZlvgdghER166m03re4iHzkgUb91/UeqqnoP5GgdLMMBppkVMqv1+EELsiH2SVLuR9R7/U03u4W8jHZud3ERGEL3DOpEdD4qPBPBVJUW/ljQvdt6+b7maQ/+JaX9eXW0z9BMftYSD+lIImr25n/H/6zPdsYbcSCWROUiIjJbMKq9Vp5PjRCZFpoA4NwciYrVUZzG2uGdvH7oQzwD139G/Tf4sYfyoFoyljkx92OKmWUTq+RuSRiYc5gNBl5b0NLjDG9LfZZKlwWaT18G62SVp5jypvDLGYoZWYagAGOO+MMAjzgPaDMySC/exBy3d1Lp0iCGLeY6HYgMhel1YjuC2+vaPxvIaTgp4n9+QmQi+i1wtRhCVk8bwY0YCgNO5nZds4E0J5g7xTfnMfm30FaRs5s3rJohwEwp4cnsxgqsDGwwvqpOAefRd/hscpw3frgyPEVG6b6XRY4na+xpA==", "AccessKeyId": "STS.NHcMxxaoieoJjvNA5ucKCGxBJ", "bucket_name": "cnvod1", "code": 0}
-tokenss = {"arn": "acs:ram::1901342792446414:role/stsoss/P2WNGJRD2EHA5EU9111A", "expire": "3600", "endpoint": "oss-cn-shenzhen.aliyuncs.com", "AccessKeySecret": "ErbGnFyPWPcfNBPRkcpZBJNBVpsX73q2u5vgJYownBQd", "ip": "120.237.157.181", "storage": "P2WNGJRD2EHA5EU9111A/vod1/", "Expiration": "2019-02-25T07:03:40Z", "SecurityToken": "CAIS9AJ1q6Ft5B2yfSjIr4vWBsLMjLBI0q2haFD/pTUgb8RvqL3pqDz2IHFIf3NhAe0bv/kzm2lX7/YYlr1LEaBjam7+QZFdzr0K3D7wOtOYkpRIRwn3ctj3d1KIAjvXgeV+CoeQFaELE5XAQlTAkTAJkNmeXD6+XlujHISUgJp8FLo+VRW5ajw0TbUzIRB5+vcHKVzbN/umLnyShXHLXmZlvgdghER166m03re4iHzkgUb91/UeqqnoP5GgdLMMBppkVMqv1+EELsiH2SVLuR9R7/U03u4W8jHZud3ERGEL3DOpEdD4qPBPBVJUW/ljQvdt6+b7maQ/+JaX9eXW0z9BMftYSD+lIImr25n/H/6zPdsYbcSCWROUiIjJbMKq9Vp5PjRCZFpoA4NwciYrVUZzG2uGdvH7oQzwD139G/Tf4sYfyoFoyljkx92OKmWUTq+RuSRiYc5gNBl5b0NLjDG9LfZZKlwWaT18G62SVp5jypvDLGYoZWYagAGOO+MMAjzgPaDMySC/exBy3d1Lp0iCGLeY6HYgMhel1YjuC2+vaPxvIaTgp4n9+QmQi+i1wtRhCVk8bwY0YCgNO5nZds4E0J5g7xTfnMfm30FaRs5s3rJohwEwp4cnsxgqsDGwwvqpOAefRd/hscpw3frgyPEVG6b6XRY4na+xpA==", "AccessKeyId": "STS.NHcMxxaoieoJjvNA5ucKCGxBJ", "bucket_name": "cnvod1", "code": 0}
+tokenss ={"AccessKeyId": "STS.NKKRWdsfkMyHA9rz9SN6s26sA", "endpoint": "oss-cn-shenzhen.aliyuncs.com", "AccessKeySecret": "G7CRveV6XpcBnVkRd9qVxM8c6TkEzA4N3wdNmxTzHyQQ", "arn": "acs:ram::1901342792446414:role/stsoss/151564262337939513800138001", "bucket_name": "apg", "storage": "151564262337939513800138001/uid_preview/", "SecurityToken": "CAISrwN1q6Ft5B2yfSjIr4j+Ge3QnrlK+rujQx/DnjkGQrlf3fPYozz2IHFIf3NhAe0bv/kzm2lX7/YYlrIqFsYYGxCeM5ErtcsGqlL8OtGR45Tstuxc0MT90Z0w592+jqHoeOzcYI736p7PAgm2Y0YRrJL+cTK9JXzHVbSClZ9gaPkOQwC8dkAoLdxKJwxk2pd4UHzKLqSVLwLNiGjdB1YKwg1nkjFT5KCy3sC74BjTh0GYr+gOvNbeL4SDZcthN4sFcbXT5uFtcbfb2yN98gVD8LwM7JZJ4jDapNqQcR8zpxyNKLjT6cY9bl07NKEiFOkd8aGhy6Ei5LaIzNumkEcQZLoFC3yGH9D4mJKGatjLW/89cbHkQTWvtvmEKpjytS49fHsfL3kkUtE9K3h2e2VOLTbBMf2D+UvWRQ2hRqOZy9tBs/xPwk7v4MCBKnWWXrydylx4AJInaF4yPBNktg6IMI1+Kl0UKgg7XenEF9kvMkwH9ZmF51OCCndSqVhMpOD7av/svaQSVJ7yRJou0/BGNcgd6TpyEgmmFu7x0xhNJDZ/L61Ky672Io8ZYyIABSVLChqAAUU8EA+LN1EXtGazb+yfWncE/l3wUXsW0qT7EU+m2YXBKt+yzl8Ls9xicDj1NMIyy1KrtHXOM8iHTGiNC0U1Ulnwl6yprCW2snc7q2CiaAjzTIRkPjgGd+gA6hO2neSifA0bfhkhitLb8HEq+g32zpCYcdeMigawRWBrNdoCsGqu", "code": 0, "expire": 3600, "Expiration": "2019-05-13T09:42:52Z"}
 # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
 # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
 
 
 # 使用临时token中的认证信息初始化StsAuth实例。
 # 使用临时token中的认证信息初始化StsAuth实例。
@@ -56,11 +56,16 @@ bucket = oss2.Bucket(auth, tokenss['endpoint'], tokenss['bucket_name'])
 # # 上传一个字符串。
 # # 上传一个字符串。
 # bucket.delete_object('a-3.txt')
 # bucket.delete_object('a-3.txt')
 # exit()
 # exit()
-patht = tokenss['storage'] + 'asfsdafsdafdsa'
-print(patht)
-print(endpoint)
-print(bucket.put_object(patht, b'ddd'))
-# bucket.put_object('FTSLL8HM437Z38WU111A/vod4/1234.txt', b'12345646',headers)
+print(tokenss['storage'])
+res = bucket.list_objects(prefix=tokenss['storage'])
+print(res)
 exit()
 exit()
-res = bucket.get_object('ddd.txt')
+
+# patht = tokenss['storage'] + 'asfsdafsdafdsa'
+# print(patht)
+# print(endpoint)
+# print(bucket.put_object(patht, b'ddd'))
+# # bucket.put_object('FTSLL8HM437Z38WU111A/vod4/1234.txt', b'12345646',headers)
+# exit()
+res = bucket.get_object('151564262337939513800138001/uid_preview/asfsdafsdafdsa')
 print(res.read())
 print(res.read())

+ 7 - 22
Ansjer/test/test.py

@@ -1,24 +1,9 @@
-#!/usr/bin/env python3.3
-from pyawk import PyAwk, p
-class LTSVParser(PyAwk):
-    def begin(self):
-        self.FS = '\t'
-        self.count = 0
+import requests
 
 
-    def action(self, S):
-        if not p(S[0], r'status:200'):
-            self.count += 1
-            self.print('----------')
-            d = {}
-            for elem in S[1:]:
-                key, value = elem.split(':', 1)
-                d[key] = value
-            self.print(d)
+put_url = 'http://apg.oss-cn-shenzhen.aliyuncs.com/uid_preview%2FOOBDSU9547NTRSMF111A%2F3.jpeg?OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1557976946&Signature=s8HfXr8aFWCjFrRmt3RIShdKKfo%3D'
+ddd = open('D:/048.jpg', 'rb')
+print(ddd)
+# exit()
 
 
-    def end(self):
-        self.print('----------')
-        self.print('Total:{}'.format(self.NR))
-        self.print('Matched:{}'.format(self.count))
-
-if __name__ == '__main__':
-    LTSVParser().run()
+res = requests.put(put_url, data=open('D:/048.jpg', 'rb'), headers={})
+print(res)

+ 10 - 3
Ansjer/urls.py

@@ -5,7 +5,7 @@ from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSenso
     AccessLog, Test, MealManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, AppColophon,\
     AccessLog, Test, MealManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, AppColophon,\
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, UidappController, shareUserPermission, \
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, UidappController, shareUserPermission, \
     UserManger, CheckUserData, \
     UserManger, CheckUserData, \
-    UserController, CloudVod, OrderContrller, VodBucket, DetectController,DeviceShare,UserBrandController
+    UserController, CloudVod, OrderContrller, VodBucket, DetectController,DeviceShare,UserBrandController,StsOssController,UIDPreview
 
 
 urlpatterns = [
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
@@ -71,8 +71,8 @@ urlpatterns = [
     url(r'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view()),  # 设备推送信息
     url(r'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view()),  # 设备推送信息
     url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view()),
     url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view()),
     url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),  # 管理员专属view
     url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),  # 管理员专属view
-    url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),  # OTA重构类
-    url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view()),  # 用户反馈信息
+    url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),  # OTA重构类 
+    # url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view()),  # 用户反馈信息 
     url(r'^userbrandinfo/(?P<operation>.*)$',UserBrandController.UserBrandInfo.as_view()), # 用户登录的手机端品牌记录统计信息表
     url(r'^userbrandinfo/(?P<operation>.*)$',UserBrandController.UserBrandInfo.as_view()), # 用户登录的手机端品牌记录统计信息表
 
 
     url(r'^appInfo', AppInfo.AppInfo.as_view()),  # app版本信息
     url(r'^appInfo', AppInfo.AppInfo.as_view()),  # app版本信息
@@ -129,6 +129,13 @@ urlpatterns = [
     url(r'^user/init$', UserController.InitInfoView.as_view()),
     url(r'^user/init$', UserController.InitInfoView.as_view()),
     url(r'^getTZ$', EquipmentStatus.getTZ),
     url(r'^getTZ$', EquipmentStatus.getTZ),
 
 
+    # oss授权
+    url(r'^stsOss/(?P<operation>.*)$',StsOssController.StsOssView.as_view()),
+
+    # 用户反馈信息
+    url(r'^feedback/(?P<operation>.*)$', FeedBackInfo.FeedBackInfoView.as_view()),
+    url(r'^uidpreview/(?P<operation>.*)$', UIDPreview.UIDPreview.as_view()),
+
     # 新的设备接口
     # 新的设备接口
     path('Test', Test.Test.as_view()),
     path('Test', Test.Test.as_view()),
     # 路由加参数参考
     # 路由加参数参考

+ 13 - 2
Controller/EquipmentManager.py

@@ -4,12 +4,14 @@ import traceback
 
 
 import simplejson as json
 import simplejson as json
 from django.utils import timezone
 from django.utils import timezone
-from Model.models import Device_User, Device_Info, UID_Bucket, UID_App
+from Model.models import Device_User, Device_Info, UID_Bucket, UID_App, UID_Preview
 from django.db.models import Q
 from django.db.models import Q
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
+import oss2
 
 
 
 
 #     查询用户设备
 #     查询用户设备
@@ -587,6 +589,9 @@ def queryInterface(request):
                 uid_list.append(dvl['UID'])
                 uid_list.append(dvl['UID'])
         ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
         ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
             values('bucket__content', 'status', 'channel', 'endTime', 'uid')
             values('bucket__content', 'status', 'channel', 'endTime', 'uid')
+        upqs = UID_Preview.objects.filter(uid__in=uid_list).values('id', 'uid', 'channel')
+        auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+        uidPreview_bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
         nowTime = int(time.time())
         nowTime = int(time.time())
         data = []
         data = []
         for p in dvls:
         for p in dvls:
@@ -595,8 +600,14 @@ def queryInterface(request):
                 if p['UID'] == dm['uid']:
                 if p['UID'] == dm['uid']:
                     if dm['endTime'] > nowTime:
                     if dm['endTime'] > nowTime:
                         p['vod'].append(dm)
                         p['vod'].append(dm)
+            p['preview'] = []
+            for up in upqs:
+                if p['UID'] == up['uid']:
+                    obj = 'uid_preview/{uid}/{channel}.png'.format(uid=up['uid'], channel=up['channel'])
+                    img_sign = uidPreview_bucket.sign_url('GET', obj, 300)
+                    p['preview'].append(img_sign)
             data.append(p)
             data.append(p)
-        return response.json(0, {'data': data, 'count': count})
+        return response.json(0, data)
     else:
     else:
         return response.json(tko.code)
         return response.json(tko.code)
 
 

+ 19 - 10
Controller/EquipmentStatus.py

@@ -11,12 +11,12 @@
 @file: EquipmentStat.py
 @file: EquipmentStat.py
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
+from var_dump import var_dump
 import base64
 import base64
 import urllib.parse
 import urllib.parse
-from Ansjer.config import BASE_DIR
+
 from django.http import JsonResponse
 from django.http import JsonResponse
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
-import ipdb
 
 
 from Model.models import Device_Info
 from Model.models import Device_Info
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
@@ -94,9 +94,10 @@ def getTZ(request):
     else:
     else:
         return JsonResponse(status=200, data={'code': 403, 'msg': '接口请求方法错误'})
         return JsonResponse(status=200, data={'code': 403, 'msg': '接口请求方法错误'})
     c = request_dict.get('etk', None)
     c = request_dict.get('etk', None)
-    # ip = request_dict.get('ip', None)
+    ip = request_dict.get('ip', None)
     lang = request_dict.get('lang', None)
     lang = request_dict.get('lang', None)
-    ip = CommonService.get_ip_address(request)
+    if not ip:
+        ip = CommonService.get_ip_address(request)
     if c:
     if c:
         c = base64.b64decode(c)
         c = base64.b64decode(c)
         c = c[2:-2]
         c = c[2:-2]
@@ -105,12 +106,20 @@ def getTZ(request):
         uid = c.decode('utf-8')
         uid = c.decode('utf-8')
         if len(uid) == 20:
         if len(uid) == 20:
             print(uid)
             print(uid)
-            db = ipdb.City(BASE_DIR + "/DB/mydata4vipday2.ipdb")
-            info = db.find_map(ip, lang)
-            # tz = info.timezone
-            # of = info.utc_offset
-            # from var_dump import var_dump
-            # var_dump(info)
+            info = CommonService.getIpIpInfo(ip=ip, lang=lang)
+            try:
+                tz = info['utc_offset']
+                # 增加GMT,且补:00
+                if len(tz) == 5:
+                    gmtz = tz.replace('UTC-', 'GMT-0').replace('UTC+', 'GMT+0')
+                    if ':' not in gmtz:
+                        gmtz = gmtz + ':00'
+                    info['gmt_offset'] = gmtz
+                elif len(tz) == 8:
+                    gmtz = tz.replace('UTC-', 'GMT-0').replace('UTC+', 'GMT+0')
+                    info['gmt_offset'] = gmtz
+            except Exception as e:
+                pass
             return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': info})
             return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': info})
         else:
         else:
             return JsonResponse(status=200, data={'code': 404, 'msg': '令牌错误'})
             return JsonResponse(status=200, data={'code': 404, 'msg': '令牌错误'})

+ 37 - 64
Controller/FeedBackInfo.py

@@ -2,72 +2,45 @@ from django.views.generic.base import View
 from django.utils.decorators import method_decorator
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
-from Model.models import Feedback_Info
+# from Model.models import Feedback_Info
 from django.utils import timezone
 from django.utils import timezone
 import traceback
 import traceback
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-'''
-http://192.168.136.45:8077/feedbackInfo?operation=add&token=test&content=12341234
-http://192.168.136.45:8077/feedbackInfo?operation=query&token=test&page=1&line=10
-http://192.168.136.45:8077/feedbackInfo?operation=update&token=test&id=1&content=gggggggggggggggg
-http://192.168.136.45:8077/feedbackInfo?operation=delete&token=test&id=11&id=13&id=14
 
 
-http://192.168.136.40:8077/feedbackInfo?operation=queryAll&token=test&page=1&line=5
-http://192.168.136.45:8077/feedbackInfo?operation=deleteByAdmin&token=test&id=11&id=13&id=14
-http://192.168.136.45:8077/feedbackInfo?operation=deleteByAdmin&token=test&id=11&id=13&id=14
-http://192.168.136.45:8077/feedbackInfo?operation=updateByAdmin&token=test&id=1&status=1
-'''
-
-
-class FeedBackInfo(View):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(FeedBackInfo, self).dispatch(*args, **kwargs)
 
 
+class FeedBackInfoView(View):
     def get(self, request, *args, **kwargs):
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        return self.validation(request_dict=request.GET)
+        operation = kwargs.get('operation', None)
+        return self.validation(request.GET, operation)
 
 
     def post(self, request, *args, **kwargs):
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        return self.validation(request_dict=request.POST)
+        operation = kwargs.get('operation', None)
+        return self.validation(request.POST, operation)
 
 
-    def validation(self, request_dict, *args, **kwargs):
+    def validation(self, request_dict, operation):
         response = ResponseObject()
         response = ResponseObject()
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
-        if token is not None:
-            tko = TokenObject(token)
-            response.lang = tko.lang
+        tko = TokenObject(token)
+
+        if operation == 'add':
             if tko.code == 0:
             if tko.code == 0:
                 userID = tko.userID
                 userID = tko.userID
-                operation = request_dict.get('operation', None)
-                if userID is not None:
-                    if operation == 'query':
-                        return self.query_info(request_dict, userID,response)
-                    elif operation == 'add':
-                        return self.add_info(request_dict, userID,response)
-                    elif operation == 'update':
-                        return self.update_info(request_dict, userID,response)
-                    elif operation == 'delete':
-                        return self.delete_info(request_dict, userID,response)
-                    elif operation == 'queryAll':
-                        return self.query_all_info(request_dict, userID,response)
-                    elif operation == 'deleteByAdmin':
-                        return self.delete_by_admin(request_dict, userID,response)
-                    elif operation == 'updateByAdmin':
-                        return self.update_by_admin(request_dict, userID,response)
-                    else:
-                        return response.json(444,'444')
-                else:
-                    return response.json(309)
+                return self.do_add(userID, request_dict, response)
             else:
             else:
                 return response.json(tko.code)
                 return response.json(tko.code)
         else:
         else:
-            return response.json(309)
+            return response.json(0, 414)
+
+    def do_add(self, userID, request_dict, response):
+        content = request_dict.get('content',None)
+        # urls =
+        return
 
 
-    def add_info(self, request_dict, userID,response):
+    def add_info(self, request_dict, userID, response):
         content = request_dict.get('content', None)
         content = request_dict.get('content', None)
         param_flag = CommonService.get_param_flag(data=[content])
         param_flag = CommonService.get_param_flag(data=[content])
         if param_flag is True:
         if param_flag is True:
@@ -83,10 +56,10 @@ class FeedBackInfo(View):
                 return response.json(424, {'details': errorInfo})
                 return response.json(424, {'details': errorInfo})
             else:
             else:
                 print(type(feedback_info.add_time))
                 print(type(feedback_info.add_time))
-                return response.json(0,{'id':feedback_info.id})
+                return response.json(0, {'id': feedback_info.id})
         return response.json(444)
         return response.json(444)
 
 
-    def query_info(self, request_dict, userID,response):
+    def query_info(self, request_dict, userID, response):
         page = int(request_dict.get('page', None))
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
         line = int(request_dict.get('line', None))
         param_flag = CommonService.get_param_flag(data=[page, line])
         param_flag = CommonService.get_param_flag(data=[page, line])
@@ -102,9 +75,9 @@ class FeedBackInfo(View):
         else:
         else:
             return response.json(444)
             return response.json(444)
 
 
-    def update_info(self, request_dict, userID,response):
+    def update_info(self, request_dict, userID, response):
         content = request_dict.get('content', None)
         content = request_dict.get('content', None)
-        id = request_dict.get('id',None)
+        id = request_dict.get('id', None)
 
 
         param_flag = CommonService.get_param_flag(data=[id, content])
         param_flag = CommonService.get_param_flag(data=[id, content])
         if param_flag is True:
         if param_flag is True:
@@ -117,29 +90,29 @@ class FeedBackInfo(View):
             else:
             else:
                 now_time = timezone.localtime(timezone.now())
                 now_time = timezone.localtime(timezone.now())
                 return response.json(0, {'update_success': 1,
                 return response.json(0, {'update_success': 1,
-                                                                                   'update_time': str(now_time)})
+                                         'update_time': str(now_time)})
         else:
         else:
             return response.json(444)
             return response.json(444)
 
 
-    def delete_info(self, request_dict, userID,response):
-        id_list = request_dict.getlist('id',None)
+    def delete_info(self, request_dict, userID, response):
+        id_list = request_dict.getlist('id', None)
         param_flag = CommonService.get_param_flag(data=[id_list])
         param_flag = CommonService.get_param_flag(data=[id_list])
         if param_flag is True:
         if param_flag is True:
             is_delete = Feedback_Info.objects.filter(id__in=id_list, userID=userID).delete()
             is_delete = Feedback_Info.objects.filter(id__in=id_list, userID=userID).delete()
-            return response.json(0,{'delete_count':is_delete[0]})
+            return response.json(0, {'delete_count': is_delete[0]})
         else:
         else:
             return response.json(444)
             return response.json(444)
 
 
-    def query_all_info(self, request_dict, userID,response):
+    def query_all_info(self, request_dict, userID, response):
         page = int(request_dict.get('page', None))
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
         line = int(request_dict.get('line', None))
-        order = request_dict.get('order','-id')
-        status = request_dict.get('status',None)
+        order = request_dict.get('order', '-id')
+        status = request_dict.get('status', None)
         if order == '':
         if order == '':
-            order ='-id'
+            order = '-id'
         param_flag = CommonService.get_param_flag(data=[page, line])
         param_flag = CommonService.get_param_flag(data=[page, line])
         if param_flag is True:
         if param_flag is True:
-            check_perm = ModelService.check_perm(userID=userID,permID=30)
+            check_perm = ModelService.check_perm(userID=userID, permID=30)
             if check_perm is True:
             if check_perm is True:
                 if status is not None:
                 if status is not None:
                     feedback_info_queryset = Feedback_Info.objects.filter(status=status).order_by(order)
                     feedback_info_queryset = Feedback_Info.objects.filter(status=status).order_by(order)
@@ -151,7 +124,7 @@ class FeedBackInfo(View):
                     send_json = CommonService.qs_to_dict(res)
                     send_json = CommonService.qs_to_dict(res)
                     for k, v in enumerate(send_json["datas"]):
                     for k, v in enumerate(send_json["datas"]):
                         username = ModelService.get_user_name(userID=send_json["datas"][k]['fields']['userID'])
                         username = ModelService.get_user_name(userID=send_json["datas"][k]['fields']['userID'])
-                        send_json["datas"][k]['fields']['username']=username
+                        send_json["datas"][k]['fields']['username'] = username
                     send_json['count'] = count
                     send_json['count'] = count
                     return response.json(0, send_json)
                     return response.json(0, send_json)
                 return response.json(0, {'datas': [], 'count': 0})
                 return response.json(0, {'datas': [], 'count': 0})
@@ -160,7 +133,7 @@ class FeedBackInfo(View):
         else:
         else:
             return response.json(444)
             return response.json(444)
 
 
-    def delete_by_admin(self, request_dict, userID,response):
+    def delete_by_admin(self, request_dict, userID, response):
         id_list = request_dict.getlist('id', None)
         id_list = request_dict.getlist('id', None)
         param_flag = CommonService.get_param_flag(data=[id_list])
         param_flag = CommonService.get_param_flag(data=[id_list])
         if param_flag is True:
         if param_flag is True:
@@ -173,9 +146,9 @@ class FeedBackInfo(View):
         else:
         else:
             return response.json(444)
             return response.json(444)
 
 
-    def update_by_admin(self, request_dict, userID,response):
-        id = request_dict.get('id',None)
-        status = request_dict.get('status',None)
+    def update_by_admin(self, request_dict, userID, response):
+        id = request_dict.get('id', None)
+        status = request_dict.get('status', None)
         param_flag = CommonService.get_param_flag(data=[id, status])
         param_flag = CommonService.get_param_flag(data=[id, status])
         if param_flag is True:
         if param_flag is True:
             check_perm = ModelService.check_perm(userID=userID, permID=50)
             check_perm = ModelService.check_perm(userID=userID, permID=50)
@@ -188,7 +161,7 @@ class FeedBackInfo(View):
                     return response.json(302, {'details': repr(e)})
                     return response.json(302, {'details': repr(e)})
                 else:
                 else:
                     now_time = timezone.localtime(timezone.now())
                     now_time = timezone.localtime(timezone.now())
-                    return response.json(0, {'update_id': feedback_info.id,'update_time':str(now_time)})
+                    return response.json(0, {'update_id': feedback_info.id, 'update_time': str(now_time)})
             else:
             else:
                 return response.json(404)
                 return response.json(404)
         else:
         else:

+ 83 - 18
Controller/StsOssController.py

@@ -12,37 +12,102 @@
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
 
 
-from django.views.generic.base import View
-from django.utils.decorators import method_decorator
-from django.views.decorators.csrf import csrf_exempt
-from Service.ModelService import ModelService
-from Model.models import User_Brand, Device_User
-from django.utils import timezone
-import traceback, time
+from django.views.generic import View
+
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
-from Service.CommonService import CommonService
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, OSS_ROLE_ARN
+from aliyunsdkcore import client
+from aliyunsdksts.request.v20150401 import AssumeRoleRequest
+import json
+from var_dump import var_dump
 
 
 
 
 class StsOssView(View):
 class StsOssView(View):
 
 
     def get(self, request, *args, **kwargs):
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        return self.validation(request_dict=request.GET)
+        operation = kwargs.get('operation')
+
+        return self.validation(request.GET, operation)
 
 
     def post(self, request, *args, **kwargs):
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        return self.validation(request_dict=request.POST)
+        operation = kwargs.get('operation')
 
 
-    def validation(self, request_dict, *args, **kwargs):
+        return self.validation(request.POST, operation)
+
+    def validation(self, request_dict, operation):
         response = ResponseObject()
         response = ResponseObject()
+        from var_dump import var_dump
+        # var_dump(request_dict)
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
-        tko = TokenObject(token)
-        if tko.code == 0:
-            return self.uid_preview()
+        if operation == 'uidPreview':
+            tko = TokenObject(token)
+            if tko.code == 0:
+                userID = tko.userID
+                return self.uid_preview(userID, response)
+            else:
+                return response.json(tko.code)
         else:
         else:
-            return response.json(tko.code)
-
-    def uid_preview(self):
+            return response.json(444)
 
 
-        return
+    def uid_preview(self, userID, response):
+        storage = '{userID}/uid_preview/'.format(userID=userID)
+        bucket_name = 'apg'
+        endpoint = 'oss-cn-shenzhen.aliyuncs.com'
+        region_id = 'cn-shenzhen'
+        clt = client.AcsClient(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, region_id)
+        req = AssumeRoleRequest.AssumeRoleRequest()
+        req.set_accept_format('json')
+        req.set_RoleArn(OSS_ROLE_ARN)
+        req.set_RoleSessionName(userID)
+        req.set_DurationSeconds(3600)
+        Resource_access = "acs:oss:*:*:{bucket_name}/{userID}*".format(bucket_name=bucket_name,
+                                                                       userID=userID)
+        policys = {
+            "Version": "1",
+            "Statement": [
+                {
+                    "Action": ["oss:PutObject", "oss:DeleteObject", "oss:GetObject",],
+                    # "Action": ["*"],
+                    # "Action": ["*"],
+                    "Resource": [Resource_access],
+                    # "Resource": ["*"],
+                    "Effect": "Allow",
+                    "Condition": {
+                        # "IpAddress": {"acs:SourceIp": ip}
+                        # "IpAddress": {"acs:SourceIp": "120.237.157.184"}
+                        # "IpAddress": {"acs:SourceIp": "*"}
+                    }
+                },
+                #######
+                {
+                    "Effect": "Allow",
+                    "Action": [
+                        "oss:ListObjects"
+                    ],
+                    "Resource": [
+                        "*"
+                    ]
+                }
+            ]
+        }
+        req.set_Policy(Policy=json.dumps(policys))
+        body = clt.do_action(req)
+        # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
+        token = json.loads(body.decode('utf-8'))
+        print(token)
+        res = {
+            'AccessKeyId': token['Credentials']['AccessKeyId'],
+            'AccessKeySecret': token['Credentials']['AccessKeySecret'],
+            'SecurityToken': token['Credentials']['SecurityToken'],
+            'Expiration': token['Credentials']['Expiration'],
+            'expire': 3600,
+            'endpoint': endpoint,
+            'bucket_name': bucket_name,
+            'arn': token['AssumedRoleUser']['Arn'],
+            'code': 0,
+            'storage': storage,
+        }
+        return response.json(0, res)

+ 119 - 0
Controller/UIDPreview.py

@@ -0,0 +1,119 @@
+#!/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/5/13 17:35
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: UIDPreview.py
+@Contact: chanjunkai@163.com
+"""
+# !/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: 2018/12/6 10:53
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: OrderContrller.py
+@Contact: chanjunkai@163.com
+"""
+import time
+
+import oss2
+from django.views.generic.base import View
+
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
+from Model.models import UID_Preview, Device_Info
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+
+'''
+# 获取所有设备下单信息
+http://192.168.136.40:8077/order/querylist?token=local&page=1&line=10
+'''
+
+
+# 设备信息添加
+class UIDPreview(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, request, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, request, operation)
+
+    def validation(self, request_dict, request, operation):
+        response = ResponseObject()
+        token = request_dict.get('token', None)
+        # 设备主键uid
+        tko = TokenObject(token)
+        if tko.code == 0:
+            response.lang = tko.lang
+            userID = tko.userID
+            if operation == 'add':
+                return self.do_add(userID, request_dict, response)
+            # if operation == 'query':
+            #     return self.do_query(userID, request_dict, response)
+            else:
+                return response.json(414)
+        else:
+            return response.json(tko.code)
+
+    def do_add(self, userID, request_dict, response):
+        nowTime = int(time.time())
+        uid = request_dict.get('uid', None)
+        channel = request_dict.get('channel', None)
+        if all([uid, channel]):
+            dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID)
+            upqs = UID_Preview.objects.filter(uid=uid, channel=channel)
+            if dvqs.exists():
+                if upqs.exists():
+                    try:
+                        is_update = upqs.update(updTime=nowTime)
+                    except Exception as e:
+                        print(repr(e))
+                        return response.json(177)
+                    else:
+                        if is_update:
+                            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                            bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
+                            obj = 'uid_preview/{uid}/{channel}.png'.format(uid=uid, channel=channel)
+                            # 设置此签名URL在60秒内有效。
+                            url = bucket.sign_url('PUT', obj, 7200)
+                            return response.json(0, url)
+                        else:
+                            return response.json(177)
+                else:
+                    create_data = {
+                        'addTime': nowTime,
+                        'updTime': nowTime,
+                        'uid': uid,
+                        'channel': channel
+                    }
+                    try:
+                        UID_Preview.objects.create(**create_data)
+                    except Exception as e:
+                        print(repr(e))
+                        return response.json(178)
+                    else:
+                        auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                        bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
+                        obj = 'uid_preview/{uid}/{channel}.png'.format(uid=uid, channel=channel)
+                        # 设置此签名URL在60秒内有效。
+                        url = bucket.sign_url('PUT', obj, 7200)
+                        return response.json(0, url)
+            else:
+                return response.json(14)
+        else:
+            return response.json(444, 'uid,channel')

+ 12 - 23
Controller/UserBrandController.py

@@ -108,29 +108,18 @@ class UserBrandInfo(View):
             latitude = latitude
             latitude = latitude
         else:
         else:
             status = 0
             status = 0
-            try:
-                print ('http://test.dvema.com/getTZ?etk=ODhVRlpMVjBZNU5VdEhVMVl6UVRsSE9URXhNVUUlM0Q4OA==&ip='+self.clientIP+'&lang=EN')
-                resp=urllib.request.urlopen('http://test.dvema.com/getTZ?etk=ODhVRlpMVjBZNU5VdEhVMVl6UVRsSE9URXhNVUUlM0Q4OA==&ip='+self.clientIP+'&lang=EN')
-                html=resp.read()
-                html.decode('utf-8')
-                jsonData = json.loads(html)
-                print(jsonData['data']['city_name'])
-                country = jsonData['data']['country_name']
-                province = jsonData[ 'data']['region_name']
-                city = jsonData['data']['city_name']
-                area = ''
-                street = ''
-                longitude = jsonData['data']['longitude']
-                latitude = jsonData['data']['latitude']
-            except Exception:
-                print ('失败')
-                country = ''
-                province =''
-                city = ''
-                area = ''
-                street = ''
-                longitude = ''
-                latitude = ''
+            resp=urllib.request.urlopen('http://test.dvema.com/getTZ?etk=ODhVRlpMVjBZNU5VdEhVMVl6UVRsSE9URXhNVUUlM0Q4OA==&ip='+self.clientIP+'&lang=EN')
+            html=resp.read()
+            html.decode('utf-8')
+            jsonData = json.loads(html)
+            print(jsonData['data']['city_name'])
+            country = jsonData['data']['country_name']
+            province = jsonData[ 'data']['region_name']
+            city = jsonData['data']['city_name']
+            area = ''
+            street = ''
+            longitude = jsonData['data']['longitude']
+            latitude = jsonData['data']['latitude']
         param_flag = CommonService.get_param_flag(data=[deviceSupplier, deviceModel,osType,osVersion])
         param_flag = CommonService.get_param_flag(data=[deviceSupplier, deviceModel,osType,osVersion])
         if param_flag is True:
         if param_flag is True:
             try:
             try:

+ 56 - 40
Model/models.py

@@ -344,51 +344,53 @@ class Equipment_Info(models.Model):
         verbose_name_plural = verbose_name
         verbose_name_plural = verbose_name
         ordering = ('-id',)
         ordering = ('-id',)
 
 
-
-class Feedback_Info(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    userID = models.CharField(blank=True, max_length=32, verbose_name=u'用户ID')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'状态:0未解决/解决')
-    content = models.TextField(blank=True, null=True, verbose_name=u'反馈描述')
-    add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间/反馈时间', auto_now_add=True)
-    update_time = models.DateTimeField(blank=True, null=True, verbose_name=u'更新时间', auto_now=True)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'feedback_info'
-        verbose_name = u'用户反馈信息表----暂时不用'
-        verbose_name_plural = verbose_name
-        ordering = ('id',)
-
-class User_Feedback(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    # 反馈关联用户
-    userID = models.ForeignKey( Device_User,to_field='userID',on_delete=models.CASCADE)
-    smallInt = models.IntegerField(blank=True, default=0, verbose_name=u'状态:   0未读  1已读')
-    content = models.TextField(blank=True, null=True, default='', verbose_name=u'反馈的内容描述')
-    urls = models.TextField( blank=True, max_length=300, default='', verbose_name=u'存储多张图片的路径')
-    addTime = models.IntegerField( verbose_name='添加时间', default=0)
-    updTime =  models.IntegerField(verbose_name='更新时间', default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'user_feedback'
-        verbose_name = u'用户反馈信息表'
-        verbose_name_plural = verbose_name
-        ordering = ('id',)
-
+#
+# class Feedback_Info(models.Model):
+#     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+#     userID = models.CharField(blank=True, max_length=32, verbose_name=u'用户ID')
+#     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')
+#
+#     # files = models.CharField(blank=True, max_length=300, default='', verbose_name=u'存储多张图片的路径')
+#     # resm = models.ManyToOneRel()
+#
+#     def __str__(self):
+#         return self.id
+#
+#     class Meta:
+#         db_table = 'feedback_info'
+#         verbose_name = u'用户反馈信息表'
+#         verbose_name_plural = verbose_name
+#         ordering = ('id',)
+#
+#
+# class StatResModel(models.Model):
+#     id = models.AutoField(primary_key=True, verbose_name='自动ID')
+#     name = models.CharField(default='', max_length=120, verbose_name='图片路径地址')
+#     addTime = models.IntegerField(verbose_name='添加时间', default=0)
+#
+#     def __str__(self):
+#         return self.id
+#
+#     class Meta:
+#         db_table = 'statres'
+#         verbose_name = '静态资源表'
+#         verbose_name_plural = verbose_name
+#         ordering = ('id',)
+
+ 
 class User_Brand(models.Model):
 class User_Brand(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    # 关联用户
-    userID = models.ForeignKey( Device_User,to_field='userID',on_delete=models.CASCADE)
+    # 关联用户 
+    userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
     deviceSupplier = models.CharField(max_length=32, default='', verbose_name='(必填)设备供应商 string  (例:华为、小米...)')
     deviceSupplier = models.CharField(max_length=32, default='', verbose_name='(必填)设备供应商 string  (例:华为、小米...)')
     deviceModel = models.CharField(max_length=32, default='', verbose_name='(必填)设备型号 string @mock=HM NOTE 1TD')
     deviceModel = models.CharField(max_length=32, default='', verbose_name='(必填)设备型号 string @mock=HM NOTE 1TD')
     osType = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统名称 string @mock=Android')
     osType = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统名称 string @mock=Android')
-    osVersion = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统版本号 string @mock=4.0')
+    osVersion = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统版本号 string @mock=4.0') 
 
 
     country =  models.CharField(max_length=200, default='', verbose_name='国家')
     country =  models.CharField(max_length=200, default='', verbose_name='国家')
     province =  models.CharField(max_length=150, default='', verbose_name='省')
     province =  models.CharField(max_length=150, default='', verbose_name='省')
@@ -632,3 +634,17 @@ class UID_App(models.Model):
         verbose_name = u'设备关联APP表'
         verbose_name = u'设备关联APP表'
         verbose_name_plural = verbose_name
         verbose_name_plural = verbose_name
         ordering = ('id',)
         ordering = ('id',)
+
+
+class UID_Preview(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    uid = models.CharField(default='', max_length=20, verbose_name='设备UID')
+    channel = models.SmallIntegerField(verbose_name=u'通道号', default=0)
+    addTime = models.IntegerField(verbose_name='添加时间', default=0)
+    updTime = models.IntegerField(verbose_name='更新时间', default=0)
+
+    class Meta:
+        db_table = 'uid_preview'
+        verbose_name = '设备预览图'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)

+ 1 - 1
Object/TokenObject.py

@@ -21,7 +21,7 @@ class TokenObject:
 
 
     def __init__(self, token=None):
     def __init__(self, token=None):
         if token == 'local':
         if token == 'local':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NTg3NzU5MDcsInVzZXIiOiIxMzgwMDEzODAwMSIsInVzZXJJRCI6IjE1MTU2NDI2MjMzNzkzOTUxMzgwMDEzODAwMSIsImxhbmciOiJlbiIsIm1fY29kZSI6IjEyMzQxMzI0MzIxNCJ9.6OZMsGUpzhtRZSIpONaZaueqss787RBLC6w_Toe-3RI'
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NjAzMjQ5MDJ9.aVvJaXQwNX3AM_q-x2rsghEc118FIj38TT275fU5MSM'
         if token == 'test':
         if token == 'test':
             token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJ1c2VySUQiOiIxNTE1NjQyNjIzMzc5Mzk1MTM4MDAxMzgwMDEiLCJsYW5nIjoiZW4iLCJleHAiOjE1NTI2MTIxOTF9.sO8BtSclN6B-qwqNmYWbICatHYEtyMdoqzZ0hcOSsmg'
             token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJ1c2VySUQiOiIxNTE1NjQyNjIzMzc5Mzk1MTM4MDAxMzgwMDEiLCJsYW5nIjoiZW4iLCJleHAiOjE1NTI2MTIxOTF9.sO8BtSclN6B-qwqNmYWbICatHYEtyMdoqzZ0hcOSsmg'
         self.token = token
         self.token = token

+ 8 - 1
Service/CommonService.py

@@ -3,7 +3,7 @@ import datetime
 import time
 import time
 from pathlib import Path
 from pathlib import Path
 from random import Random
 from random import Random
-
+import ipdb
 import simplejson as json
 import simplejson as json
 from django.core import serializers
 from django.core import serializers
 from django.utils import timezone
 from django.utils import timezone
@@ -96,6 +96,13 @@ class CommonService:
         ts = addr.split('\t')[0]
         ts = addr.split('\t')[0]
         return ts
         return ts
 
 
+    # 通过ip检索ipip指定信息 lang为CN或EN
+    @staticmethod
+    def getIpIpInfo(ip,lang):
+        db = ipdb.City(BASE_DIR + "/DB/mydata4vipday2.ipdb")
+        info = db.find_map(ip, lang)
+        return info
+
     @staticmethod
     @staticmethod
     def getUserID(userPhone='13800138000', getUser=True, setOTAID=False, μs=True):
     def getUserID(userPhone='13800138000', getUser=True, setOTAID=False, μs=True):
         if μs == True:
         if μs == True:

+ 8 - 0
local_manage.py

@@ -3,6 +3,14 @@ import os
 import sys
 import sys
 
 
 if __name__ == "__main__":
 if __name__ == "__main__":
+    import socket
+
+    addrs = socket.getaddrinfo(socket.gethostname(), None)
+    for index, item in enumerate(addrs):
+        if index == 5:
+            ip = item[4][0]
+
+            print('当前局域网ip地址为:' + ip)
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Ansjer.local_settings")
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Ansjer.local_settings")
     try:
     try:
         from django.core.management import execute_from_command_line
         from django.core.management import execute_from_command_line