Selaa lähdekoodia

Merge branch 'master' of http://192.168.136.45:3000/chanjunkai/Ansjer

# Conflicts:
#	Ansjer/config.py
#	Ansjer/settings.py
#	Ansjer/test/util/encryDownLoad.py
#	Ansjer/urls.py
#	Controller/AccessLog.py
#	Controller/AdminManage.py
#	Controller/AppInfo.py
#	Controller/CheckUserData.py
#	Controller/DeviceLog.py
#	Controller/DeviceManage.py
#	Controller/DeviceMeal.py
#	Controller/EquipmentInfo.py
#	Controller/EquipmentManager.py
#	Controller/EquipmentOTA.py
#	Controller/EquipmentSensor.py
#	Controller/EquipmentStatus.py
#	Controller/FeedBackInfo.py
#	Controller/HlsManage.py
#	Controller/LogAccess.py
#	Controller/LogManager.py
#	Controller/MealManage.py
#	Controller/OTAEquipment.py
#	Controller/OauthManage.py
#	Controller/PermissionManager.py
#	Controller/StreamMedia.py
#	Controller/SysManage.py
#	Controller/Test.py
#	Controller/UserManger.py
#	Controller/shareUserPermission.py
#	DB/data.json
#	Model/models.py
#	Object/AWS/SesClassObject.py
#	Service/CommonService.py
#	Service/MiscellService.py
#	Service/ModelService.py
#	Service/TemplateService.py
#	Service/middleware.py
chenjunkai 7 vuotta sitten
vanhempi
commit
a8060d38c8
49 muutettua tiedostoa jossa 4664 lisäystä ja 2391 poistoa
  1. 9 0
      .gitignore
  2. 14 43
      Ansjer/config.py
  3. 27 0
      Ansjer/file/pk-APKAINI6BNPKV54NHH7Q.pem
  4. 18 12
      Ansjer/settings.py
  5. 10 0
      Ansjer/test/666.py
  6. 151 0
      Ansjer/test/SyncdbTools.sh
  7. 33 0
      Ansjer/test/cloudfront_sign_url.py
  8. 71 0
      Ansjer/test/encryDownLoad.py
  9. 24 0
      Ansjer/test/m3u8_generate.py
  10. 113 0
      Ansjer/test/signCookie.py
  11. 140 0
      Ansjer/test/testa.py
  12. 4 9
      Ansjer/test/util/encryDownLoad.py
  13. 94 78
      Ansjer/urls.py
  14. 111 72
      Controller/AccessLog.py
  15. 75 78
      Controller/AdminManage.py
  16. 54 50
      Controller/AppInfo.py
  17. 85 40
      Controller/CheckUserData.py
  18. 23 23
      Controller/DeviceLog.py
  19. 43 44
      Controller/DeviceManage.py
  20. 67 66
      Controller/DeviceMeal.py
  21. 69 71
      Controller/EquipmentInfo.py
  22. 211 170
      Controller/EquipmentManager.py
  23. 50 55
      Controller/EquipmentOTA.py
  24. 50 55
      Controller/EquipmentSensor.py
  25. 11 14
      Controller/EquipmentStatus.py
  26. 49 54
      Controller/FeedBackInfo.py
  27. 91 94
      Controller/HlsManage.py
  28. 26 30
      Controller/LogAccess.py
  29. 83 39
      Controller/LogManager.py
  30. 65 65
      Controller/MealManage.py
  31. 349 247
      Controller/OTAEquipment.py
  32. 106 255
      Controller/OauthManage.py
  33. 474 182
      Controller/PermissionManager.py
  34. 145 149
      Controller/StreamMedia.py
  35. 12 15
      Controller/SysManage.py
  36. 10 18
      Controller/Test.py
  37. 747 145
      Controller/UserManger.py
  38. 121 114
      Controller/shareUserPermission.py
  39. 15 3
      DB/data.json
  40. 70 18
      Model/models.py
  41. 1 1
      Object/AWS/SesClassObject.py
  42. 45 0
      README.md
  43. 2 31
      Service/CommonService.py
  44. 32 27
      Service/MiscellService.py
  45. 4 13
      Service/ModelService.py
  46. 338 0
      Service/ResponseService.py
  47. 40 4
      Service/TemplateService.py
  48. 270 0
      Service/TokenManager.py
  49. 12 7
      Service/middleware.py

+ 9 - 0
.gitignore

@@ -0,0 +1,9 @@
+/.idea
+/static
+/Model/migrations
+/Ansjer/__pycache__
+/Controller/__pycache__
+/Model/__pycache__
+/Object/__pycache__
+/Service/__pycache__
+/Object/AWS/__pycache__

+ 14 - 43
Ansjer/config.py

@@ -12,55 +12,26 @@
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
 #主要静态变量配置文件
 #主要静态变量配置文件
+import os
 import datetime
 import datetime
-from Ansjer.settings import SERVER_TYPE
-
+from var_dump import var_dump
 
 
+# 根目录
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 # 发送邮件邮箱
 # 发送邮件邮箱
 COMPANY_EMAIL = 'user_server@nsst.com'
 COMPANY_EMAIL = 'user_server@nsst.com'
+# token加密令牌,过期时间,刷新过期时间
+SECRET_KEY = 'c7ki2_gkg4#sjfm-u1%$s#&n#szf01f*v69rwv2qsf#-zmm@tl'
+EXPIRATION_DELTA = datetime.timedelta(days=7)
+REFRESH_EXPIRATION_DELTA = datetime.timedelta(days=7)
+STATIC_URL = '/static/'
+
+
+
+
 AWS_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
 AWS_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
 AWS_ACCESS_SECRET = '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'
 AWS_ACCESS_SECRET = 'oYJsF4h95ITWf3bxpPf5uUTvULPrq8DhRaQQzTjf'
 AWS_ACCESS_REGION = 'us-east-1'
 AWS_ACCESS_REGION = 'us-east-1'
 AWS_BUCKET = 'ansjertest'
 AWS_BUCKET = 'ansjertest'
 # 设定离线时间为5分钟
 # 设定离线时间为5分钟
-OFF_LINE_TIME_DELTA = 5
-
-# token的secret
-OAUTH_ACCESS_TOKEN_SECRET = 'a+jbgnw%@1%zy^=@dn62%'
-OAUTH_REFRESH_TOKEN_SECRET = 'r+jbgnw%@1%zy^=@dn62%'
-# access_token超时
-# OAUTH_ACCESS_TOKEN_TIME = datetime.timedelta(hours=1)
-OAUTH_ACCESS_TOKEN_TIME = datetime.timedelta(days=3)
-# refresh_token超时
-OAUTH_REFRESH_TOKEN_TIME = datetime.timedelta(days=3)
-# 腾讯验证,短信发送
-TX_PHONE_APP_ID = '1400052907'
-TX_PHONE_APP_KEY= '7705976ca6e85fe7b86d6bc2d11f7783'
-
-#验证码超时时间
-AuthCode_Expire = 600
-
-if SERVER_TYPE == 'local':
-    NGINX_RTMP_STAT = 'http://192.168.136.45:8077/stat'
-    SERVER_DOMAIN = 'http://192.168.136.45:8077'
-    DATABASE_DATA = 'Ansjer'
-    SERVER_HOST = '192.168.136.45'
-    RTMP_PUSH_URL = 'rtmp://192.168.136.45:1935/hls'
-    DOMAIN_OAUTH_URI = 'http://192.168.136.45:7088/'
-    DOMAIN_RESOURCE_URI = 'http://192.168.136.45:8077/'
-elif SERVER_TYPE == 'test':
-    NGINX_RTMP_STAT = 'http://13.56.215.252:82/stat'
-    SERVER_DOMAIN = 'https://www.dvema.com:8222'
-    DATABASE_DATA = 'AnsjerTest'
-    SERVER_HOST = 'localhost'
-    RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'
-    DOMAIN_OAUTH_URI = 'https://www.dvema.com:8022/'
-    DOMAIN_RESOURCE_URI = 'https://www.dvema.com:8222/'
-elif SERVER_TYPE == 'formal':
-    NGINX_RTMP_STAT = 'http://13.56.215.252:81/stat'
-    SERVER_DOMAIN = 'https://www.dvema.com:8111'
-    DATABASE_DATA = 'Ansjer81'
-    SERVER_HOST = 'localhost'
-    RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'
-    DOMAIN_OAUTH_URI = 'https://www.dvema.com:8011/'
-    DOMAIN_RESOURCE_URI = 'https://www.dvema.com:8111/'
+OFF_LINE_TIME_DELTA = 5

+ 27 - 0
Ansjer/file/pk-APKAINI6BNPKV54NHH7Q.pem

@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEAjBX7IqEVIj14KE0RFVvtfq5yWzmT5myzqMwPUPk6NRKbDQ8z
+pkP8fhPYheMK3VPNlgPX2aBT98ovlc6qzZfZKhk5oNThgGr5Op7UlCRvwqucvXY5
+ekUaEG2QDMHcgEMdS8e+ymkntj+DfTN3Um175CTahrs3jI+zHWdebEl2rf9l6Qv+
+0hx/fawdEc1ZLryEHYE/WyJYDGzyDlpoW7evSNqHEZCLmCvYxCvwhAEtWEohSL2R
+Mrei6wyU6PT5hMp6gM+k8PLdnExMRsWENh7+MR+aXyiMJrGl26js/HId7RpwIBVN
+j1lofCufC/nqGCo0UcQthgmJXBY8iUcKTQCdnQIDAQABAoIBAEKfvaX1mHiFZZ09
+Me/HncdPLkImuymu7y9LhclMDxvosmdeoIDl+rL3u1XJ6oPi9Hbxcvok32qM9V65
+QNCw9G6qOpc8R9dsiQYRPicKwUCDn/MXxDRbow7HHOiEVtuFj+xXnmzj4Cg0QtQL
+4ycHvRF/WZMUfVHTkitc2zKDKfeMOQjw86bvyA9TksC1MUtHt9uvVr5OVpLSpvn3
+0se949ULAnmDSRg6HrH7QNOLsLJgxSYwc0FJHad7/zYHa/2qx20zeB1zaVKwmsYq
+I5TuwuU0fKf6JY3DogozJHoUuXxEUZZvInour51WDkhT4t//URORze3XYLXPDshf
+WmphPp0CgYEAvcm8kY/Yx8hehEktMLsJ1DZh/lhr+82j73AgPj93mZETwq0o1fWR
+g4ctZXo6cs021pE6JxKohs6sx7e6VbfqAp0r9BEG83j2rE2ZcZF9kZ6x5bb9dJv+
+qnbMtiF/eZ1WAYUFy8DrQYyrUeeIYbsV0hBP22aiJSJjRcXpUcWX1XcCgYEAvPVE
+PER6gixREgSKwRFA39teBDGxEmxCpHjmQnVG4Xcp7h6ggfP0J3TgwU4XFeQSGtVt
+7uMSgrbrF9vtybZM5j49tk3o2lfRZ0/OgDt/ZdqSKEvT8+vm4iXQQiWOQR6pYwsd
+46YPhS7P2aTZQbKJjdHk7dl7S8XcWqIZ5bATeosCgYBDkSLVH8UpuygLKJIyGySw
+rHvOtWQcTWXjxKN2Bdpqjb/fOw6ivb6EeQesbQuJ+41ebm2po3bkJ4hTwhFQmx1w
+uMwBJF65J4OKbEYIrKdrxHfJNJCfhznvLkRLQznC7kTEXbtmgtQ+jfogOrHPOW/X
+TX9guPVZCxkUqhUay6H2mQKBgGy4gkZa8FItxYekbWGg1771rSakoMmE2ONhXLso
+V1wrAEkt/hRHlVeOfDM9BzNlQrWFz/b/WAs1zBaySCMjbSOc9E0MjsnydV4IITzO
+/wJPvIDLAGz8cp/0OduVWEBHsBZ4sv3k8lEjGhyUKR0P6O1cs2fXFoYGlj7fvh7W
+LJ75AoGAcmdaaOaX3pehxW02ItIJ2CN6ZxJTmIt4v2dfYoBM7tKIM0lO9ruVf4A/
+1UxWeGmEgDjJ0ugwt0SkonedOrAcicqhkKoRb2BJyZu/kZX1jHMNbNJRdtx1gLYF
+BE2Lzx02XIqWjWHEfoMzV6rWYBIezAaagb8BwwYD+nPzrmbl2GM=
+-----END RSA PRIVATE KEY-----

+ 18 - 12
Ansjer/settings.py

@@ -1,12 +1,9 @@
-import os
+from Ansjer.config import *
 
 
-# SERVER_TYPE = 'local'
-SERVER_TYPE = 'test'
+SERVER_TYPE = 'local'
+#SERVER_TYPE = 'test'
 # SERVER_TYPE = 'formal'
 # SERVER_TYPE = 'formal'
-# 根目录
 
 
-SECRET_KEY = 'c7ki2_gkg4#sjfm-u1%$s#&n#szf01f*v69rwv2qsf#-zmm@tl'
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 DEBUG = True
 DEBUG = True
 # DEBUG = False
 # DEBUG = False
 ALLOWED_HOSTS = ['*']
 ALLOWED_HOSTS = ['*']
@@ -20,6 +17,8 @@ INSTALLED_APPS = [
     'django.contrib.staticfiles',
     'django.contrib.staticfiles',
     'corsheaders',
     'corsheaders',
     'imagekit',
     'imagekit',
+    # 'guardian',
+    'django_global_request',
     'Model',
     'Model',
 ]
 ]
 
 
@@ -29,7 +28,7 @@ MIDDLEWARE = [
     'django.middleware.security.SecurityMiddleware',
     'django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.middleware.common.CommonMiddleware',
-    # 'django.middleware.csrf.CsrfViewMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
     'corsheaders.middleware.CorsPostCsrfMiddleware',
     'corsheaders.middleware.CorsPostCsrfMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
@@ -45,9 +44,6 @@ AUTHENTICATION_BACKENDS = (
 
 
 ADDR_URL = []
 ADDR_URL = []
 ANONYMOUS_USER_ID = -1  # 支持匿名用户
 ANONYMOUS_USER_ID = -1  # 支持匿名用户
-
-STATIC_URL = '/static/'
-
 # 上传路径根目录
 # 上传路径根目录
 MEDIA_ROOT = os.path.join(BASE_DIR, 'static/Upgrate')
 MEDIA_ROOT = os.path.join(BASE_DIR, 'static/Upgrate')
 # 在浏览器上访问该上传文件的url的前缀
 # 在浏览器上访问该上传文件的url的前缀
@@ -56,7 +52,9 @@ ROOT_URLCONF = 'Ansjer.urls'
 LOGIN_URL = '/account/login'
 LOGIN_URL = '/account/login'
 AUTH_USER_MODEL = 'Model.Device_User'  # 自定义Model
 AUTH_USER_MODEL = 'Model.Device_User'  # 自定义Model
 APPEND_SLASH = False
 APPEND_SLASH = False
-
+# 腾讯验证
+SDK_AppID = '1400052907'
+App_Key = '7705976ca6e85fe7b86d6bc2d11f7783'
 TEMPLATES = [
 TEMPLATES = [
     {
     {
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
@@ -75,17 +73,25 @@ TEMPLATES = [
 
 
 WSGI_APPLICATION = 'Ansjer.wsgi.application'
 WSGI_APPLICATION = 'Ansjer.wsgi.application'
 
 
-# 服务器类型
 if SERVER_TYPE == 'local':
 if SERVER_TYPE == 'local':
+    NGINX_RTMP_STAT = 'http://192.168.136.45:8077/stat'
+    SERVER_DOMAIN = 'http://192.168.136.45:8077'
     DATABASE_DATA = 'Ansjer'
     DATABASE_DATA = 'Ansjer'
     SERVER_HOST = '192.168.136.45'
     SERVER_HOST = '192.168.136.45'
+    RTMP_PUSH_URL = 'rtmp://192.168.136.45:1935/hls'
+
 elif SERVER_TYPE == 'test':
 elif SERVER_TYPE == 'test':
     NGINX_RTMP_STAT = 'http://13.56.215.252:82/stat'
     NGINX_RTMP_STAT = 'http://13.56.215.252:82/stat'
+    SERVER_DOMAIN = 'http://13.56.215.252:82'
     DATABASE_DATA = 'AnsjerTest'
     DATABASE_DATA = 'AnsjerTest'
     SERVER_HOST = 'localhost'
     SERVER_HOST = 'localhost'
+    RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'
 elif SERVER_TYPE == 'formal':
 elif SERVER_TYPE == 'formal':
+    NGINX_RTMP_STAT = 'http://13.56.215.252:81/stat'
+    SERVER_DOMAIN = 'http://13.56.215.252:81'
     DATABASE_DATA = 'Ansjer81'
     DATABASE_DATA = 'Ansjer81'
     SERVER_HOST = 'localhost'
     SERVER_HOST = 'localhost'
+    RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'
 
 
 DATABASES = {'default': {
 DATABASES = {'default': {
     'ENGINE': 'django.db.backends.mysql',
     'ENGINE': 'django.db.backends.mysql',

+ 10 - 0
Ansjer/test/666.py

@@ -0,0 +1,10 @@
+from Crypto.PublicKey import RSA
+code = 'noonekowns'
+key = RSA.generate(2048)
+encrypted_key =key.exportKey(passphrase=code, pkcs=8,protection="scryptAndAES128-CBC")
+
+print(encrypted_key)
+exit()
+
+with open('/path_to_public_key/my_rsa_public.pem', 'wb') as f:
+    f.write(key.publickey().exportKey())

+ 151 - 0
Ansjer/test/SyncdbTools.sh

@@ -0,0 +1,151 @@
+#!/bin/bash
+### BEGIN INIT INFO
+# Provides:          Liuzhiting
+# Required-Start:    $local_fs $remote_fs $network $syslog
+# Required-Stop:     $local_fs $remote_fs $network $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: starts the mysql migrate
+# Description:       A database migration script for a back-end server system.
+### END INIT INFO
+
+function mysqlDump(){
+        echo 你输入的文件名称是:$3.txt
+	echo $1 $2 $3 $4 $3.txt $(date +%Y%m%d)
+	filePath="/mnt/sql/$(date +%Y%m%d)/"
+	if [ ! -x "$filePath" ];then
+		mkdir -p "$filePath"
+	fi
+
+        if [ "$2" == "all" ];then
+                echo 你选择的是全部备份,正在备份迁移请等待...
+		mysqldump -u root -pliuzhiting $1 > $filePath$3.txt
+		
+		filesize=$(stat -c "%s" $filePath$3.txt)
+		
+		if [ $filesize -gt 0 ];then
+			fullPath=$filePath$3.txt
+			echo "$fullPath $filesize 1024" | awk '{printf("备份文件全路径是:%s,文件大小:%0.5fkb\n", $1, $2/$3)}'
+			echo 备份迁移完成...
+			return 0
+		else
+			echo 未知原因,无法备份迁移...
+			return -1
+		fi
+
+
+        elif [ "$2" == "table" ];then
+                echo 你选择的备份的表格是:$4
+		mysqldump -u root -pliuzhiting $1 $4 > $filePath$3.txt
+		
+		filesize=$(stat -c "%s" $filePath$3.txt)
+		
+		if [ $filesize -gt 0 ];then
+			# echo 备份文件全路径:$filePath$3.txt,文件大小:$[$filesize/1024]kb
+			fullPath=$filePath$3.txt
+			echo "$filesize 1024 $fullPath" | awk '{printf("备份文件全路径是:%s,文件大小:%0.5fkb\n", $3, $1/$2)}'
+			echo 备份迁移完成...
+			return 0
+		else
+			echo 未知原因,无法备份迁移...
+			return -1
+		fi
+
+	else
+		echo $2
+                echo $3
+        fi
+
+        return -1
+}
+
+function manageDumpData () {
+	echo $1 $2 $3 $4
+	filePath="/mnt/sql/$(date +%Y%m%d)/"
+	if [ ! -x "$filePath" ];then
+		echo 正在创建$filePath文件夹
+		mkdir -p "$filePath"
+		echo 创建完成...
+	fi
+
+	echo $filePath$3.json
+
+	if [ ! -x "$1" ];then
+		echo 项目文件路径不存在,"$1"...
+		return -1
+	fi
+
+	cd "$1"
+	if [ "$2" == "all" ];then
+		echo 你选择的是备份项目数据库全部表格
+		if [ ! -f "$1manage.py" ];then
+			echo 项目路径下不存在"$1manage.py"
+			return -1
+		fi
+
+		python3 manage.py dumpdata > $filePath$3.json
+		
+		filesize=$(stat -c "%s" $filePath$3.json)
+
+		if [ $filesize -gt 0 ];then
+			fullPath=$filePath$3.json
+			echo "$fullPath $filesize 1024" | awk '{printf("备份文件全路径是:%1,文件大小:%0.5fkb\n", $1, $2/$3}'
+			echo 备份迁移完成...
+			return 0
+		else
+			echo 未知原因,无法备份迁移...
+			return -1
+		fi
+
+	elif [ "$2" == "app" ];then
+		echo 你选择备份Appname名称是:$4
+		python3 manage.py dumpdata $4 > $filePath$3.json
+		
+		filesize=$(stat -c "%s" $filePath$3.json)
+
+		if [ $filePath -gt 0 ];then
+			fullPath=$filePath$3.json
+			echo "$fullPath $filesize 1024" | awk '{printf("备份文件全路径是:%1,文件大小:%0.5fkb\n", $1, $2/$3}'
+			echo 备份迁移完成...
+			return 0
+		else
+			echo 未知原因,无法备份迁移...
+			return -1
+		fi
+	else
+		echo "YYYYY"
+
+		return 0
+	fi
+
+	return -1	
+
+}
+
+
+read -t 30 -p "请输入迁移方式(mysql自带方式[dump]或者Python方式[migrate],如果你选择的是mysql方式请再输入要备份的数据库名称[请按空格隔开,30秒完成输入]):" migrate dbname
+echo "$migrate" $dbname
+if [ ! $migrate ];then
+	migrate="dump"
+	dbname='Ansjer'
+fi
+
+if [ "$migrate" == "dump" ];then
+    echo 你选择的是MySQL备份方式,并且你要备份的数据库是:$dbname
+    read -t 30 -p "请先输入文件名称,然后选择备份所有数据[all] 或者备份其中一个表格[table],如果选择的备份其中一个表格请再输入表格名称[每个输入用表格隔开]" filename database tablename
+    echo ddde, $database $filename $tablename
+    filename=${filename:-dump} #当变量a为null或为空字符串时则var=b var=${a:-b}
+    database=${database:-all}
+    mysqlDump $dbname $database $filename $tablename
+    echo $?
+elif [ "$migrate" == "migrate" ];then
+    echo 你选择的是Python方式备份迁移数据库...
+    projPath="/mnt/Sharing/Ansjer/"
+    read -t 30 -p "(请先输入要备份的文件名称,然后是选择要备份appname或者备份全部,如果全部清输入[all],或者输入[app]再输入appnname):" filename database appname
+    filename=${filename:-dump}
+    database=${database:-all}
+    manageDumpData $projPath $database $filename $appname
+    echo $?
+else
+    echo ay
+fi

+ 33 - 0
Ansjer/test/cloudfront_sign_url.py

@@ -0,0 +1,33 @@
+import datetime
+
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives import hashes
+from cryptography.hazmat.primitives import serialization
+from cryptography.hazmat.primitives.asymmetric import padding
+from botocore.signers import CloudFrontSigner
+
+
+def rsa_signer(message):
+    with open('D:/project_svn/Ansjer/test/pk-APKAINI6BNPKV54NHH7Q.pem', 'rb') as key_file:
+        private_key = serialization.load_pem_private_key(
+            key_file.read(),
+            password=None,
+            backend=default_backend()
+        )
+    signer = private_key.signer(padding.PKCS1v15(), hashes.SHA1())
+    signer.update(message)
+    return signer.finalize()
+
+
+key_id = 'APKAINI6BNPKV54NHH7Q'
+url = 'http://d3om3d8c0l14oc.cloudfront.net/L59KVYDAEPHR1T6M111A_0/*'
+
+expire_date = datetime.datetime(2018, 9, 30)
+print(expire_date)
+cloudfront_signer = CloudFrontSigner(key_id, rsa_signer)
+
+# Create a signed url that will be valid until the specfic expiry date
+# provided using a canned policy.
+signed_url = cloudfront_signer.generate_presigned_url(
+    url, date_less_than=expire_date)
+print(signed_url)

+ 71 - 0
Ansjer/test/encryDownLoad.py

@@ -0,0 +1,71 @@
+# coding=utf-8
+# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +
+#        ┏┓   ┏┓+ +
+#    ┏┛┻━━━┛┻┓ + +
+#    ┃       ┃  
+#    ┃   ━   ┃ ++ + + +
+#    ████━████ ┃+
+#    ┃       ┃ +
+#    ┃   ┻   ┃
+#    ┃       ┃ + +
+#    ┗━┓   ┏━┛
+#      ┃   ┃           
+#      ┃   ┃ + + + +
+#      ┃   ┃    Codes are far away from bugs with the animal protecting   
+#      ┃   ┃ +     神兽保佑,代码无bug  
+#      ┃   ┃
+#      ┃   ┃  +         
+#      ┃    ┗━━━┓ + +
+#      ┃        ┣┓
+#      ┃        ┏┛
+#      ┗┓┓┏━┳┓┏┛ + + + +
+#       ┃┫┫ ┃┫┫
+#       ┗┻┛ ┗┻┛+ + + +
+# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +"""
+"""
+"""
+import base64
+import hashlib
+import time
+
+def md5(text, isBackByte=False):
+    """md5加密函数"""
+    md5 = hashlib.md5()
+    if isinstance(text, bytes):
+        md5.update(text)
+    else:
+        md5.update(text.encode('utf-8'))
+
+    if isBackByte:
+        # 返回二进制的加密结果
+        return md5.digest()
+
+        # 返回十六进制的机密结果
+    return md5.hexdigest()
+
+
+def base64_encode(text, isBytes=False):
+    """进行base64编码处理"""
+    if isBytes:
+        return base64.b64encode(text)
+    return base64.b64encode(bytes(text, encoding="utf-8"))
+
+
+def get_timestamp10():
+    """获取当前时间长度为10位长度的时间戳"""
+    return int(time.time())
+
+
+secret = 'ansjer';  # 密钥--对应#st的哈希格式为 secret+url+e,e为时间戳单位s,url为请求地址  secure_link_md5 xiaozhong.com$uri$arg_e;
+# path = '/hls/5553.mp4/index.m3u8'  # 下载文件
+# path = '/L59KVYDAEPHR1T6M111A_0/555666.mp4'  # 下载文件
+path = '/5553.mp4'  # 下载文件
+# path = '/444.mp4'  # 下载文件
+# 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期
+expire = get_timestamp10() + 3600;
+res = md5(str(secret) + str(path) + str(expire), True)
+md5 = str(base64_encode(res, True))
+md5 = md5.replace('b\'', '').replace('\'', '').replace('+', '-').replace('/', '_').replace('=', '')
+
+# print('生成代相关认证签名的地址:','http://52.8.197.107/444.mp4.m3u8?' + 'st=' + str(md5) + '&e=' + str(expire))
+print('io:','http://52.8.197.107/5553.mp4.m3u8?' + 'st=' + str(md5) + '&e=' + str(expire))

+ 24 - 0
Ansjer/test/m3u8_generate.py

@@ -0,0 +1,24 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: Ansjer
+@software: PyCharm
+@DATE: 2018/5/28 16:15
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: m3u8_generate.py
+@Contact: chanjunkai@163.com
+"""
+from m3u8_generator import PlaylistGenerator
+#pip install m3u8-generator
+playlist_entries = [
+    {
+        'name': "http://d3596w5a6euckc.cloudfront.net/vod/2N1K3LE78TYJ38CE111A_99/1234.ts?Expires=1538265600&Signature=czbcIzioBcb3K7F8v5QvKNRJ9af9022O3e9ils4bTsA2O4LSR6UxF1uLCvykHsVrdLZiYt3f5dW1Njb2qWJu1nB6N9lPUIfJTNEuD9Z3SyxEboM0Cvb34MWpFe94vdWIIas1x0bdwTGWb-yX34XJgxSMhkO9ZA5Avzvl3OALoWcoIdyvniXA5x9bgcmFu5aXXN1Fy1u4lPYQgDUGHOc-hiyZP7yY2btl0dViEjEX76n9eS067nAwAGM4zV0Ga4surZ99tyfOIsjLjRieNOzMMfYLnMXxndFRXgYUF~uVIsxOfJ5Q4QkJBakfx2Vxv4y5ZfX09ajtkGu0qfybWPs0xA__&Key-Pair-Id=APKAINI6BNPKV54NHH7Q",
+        'duration': '2',
+    }
+]
+
+playlist = PlaylistGenerator(playlist_entries).generate()
+print(playlist)

+ 113 - 0
Ansjer/test/signCookie.py

@@ -0,0 +1,113 @@
+from boto.cloudfront.distribution import Distribution
+from cryptography.hazmat.primitives.asymmetric import padding
+from cryptography.hazmat.primitives import serialization
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives import hashes
+import base64
+import datetime
+from var_dump import var_dump
+import time
+
+
+class BetterThanBoto(Distribution):
+
+    def sign_rsa(self, message):
+        private_key = serialization.load_pem_private_key(self.keyfile, password=None,
+                                                         backend=default_backend())
+        signer = private_key.signer(padding.PKCS1v15(), hashes.SHA1())
+        message = message.encode('utf-8')
+        signer.update(message)
+        return signer.finalize()
+
+    def _sign_string(self, message, private_key_file=None, private_key_string=None):
+        if private_key_file:
+            self.keyfile = open(private_key_file, 'rb').read()
+        elif private_key_string:
+            self.keyfile = private_key_string.encode('utf-8')
+        return self.sign_rsa(message)
+
+    @staticmethod
+    def _url_base64_encode(msg):
+        """
+        Base64 encodes a string using the URL-safe characters specified by
+        Amazon.
+        """
+        msg_base64 = base64.b64encode(msg).decode('utf-8')
+        msg_base64 = msg_base64.replace('+', '-')
+        msg_base64 = msg_base64.replace('=', '_')
+        msg_base64 = msg_base64.replace('/', '~')
+        return msg_base64
+
+    def generate_signature(self, policy, private_key_file=None):
+        """
+        :param policy: no-whitespace json str (NOT encoded yet)
+        :param private_key_file: your .pem file with which to sign the policy
+        :return: encoded signature for use in cookie
+        """
+        # Distribution._create_signing_params()
+        signature = self._sign_string(policy, private_key_file)
+
+        # now base64 encode the signature & make URL safe
+        encoded_signature = self._url_base64_encode(signature)
+
+        return encoded_signature
+
+    def create_signed_cookies(self, url, private_key_file=None, keypair_id=None,
+                              expires_at=20, secure=True):
+        policy = self._custom_policy(
+            url,
+            expires_at
+        )
+
+        encoded_policy = self._url_base64_encode(policy.encode('utf-8'))
+        signature = self.generate_signature(
+            policy, private_key_file=private_key_file
+        )
+        cookies = {
+            "CloudFront-Policy": encoded_policy,
+            "CloudFront-Signature": signature,
+            "CloudFront-Key-Pair-Id": keypair_id
+        }
+        return cookies
+
+
+def sign_to_cloudfront(object_url, expires_at):
+    """ Sign URL to distribute file"""
+    cf = BetterThanBoto()
+    url = cf.create_signed_url(url=object_url,
+                               keypair_id="APKAINI6BNPKV54NHH7Q",
+                               expire_time=expires_at,
+                               private_key_file="D:/project_svn/Ansjer/test/pk-APKAINI6BNPKV54NHH7Q.pem")
+
+    return url
+
+
+def create_signed_cookies(object_url, expires_at):
+    """
+    Create a signed cookie
+    """
+    cf = BetterThanBoto()
+
+    cookies = cf.create_signed_cookies(url=object_url, keypair_id="APKAINI6BNPKV54NHH7Q", expires_at=expires_at,
+                                       private_key_file="D:/project_svn/Ansjer/test/pk-APKAINI6BNPKV54NHH7Q.pem")
+    return cookies
+
+
+expire_date = int(time.time()) + 7200
+
+object_url = 'http://d3596w5a6euckc.cloudfront.net/vod/2N1K3LE78TYJ38CE111A_99/1527152855.m3u8'
+# object_url = 'http://d3596w5a6euckc.cloudfront.net/vod/2N1K3LE78TYJ38CE111A_99/*'
+# cookie_data = create_signed_cookies(object_url, expire_date)
+# print(cookie_data)
+# exit()
+cookie_data = {'CloudFront-Policy': 'eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QzNTk2dzVhNmV1Y2tjLmNsb3VkZnJvbnQubmV0L3ZvZC8yTjFLM0xFNzhUWUozOENFMTExQV85OS8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNTI3NTA1MDA1fX19XX0_', 'CloudFront-Signature': 'IQYo7PdwXLRyEywSon6HBvuaEOLqTGH6qWAx1Fk3HrSK6N325f0oXcvpZ1eSVUv353YUrd6bKPDE9tLEOPuIitILNQt5tP593C5OIX4jc15RpUpTuEQdlVlO7~SfnxtHXIqukD20GXWIfCagneNj1~F2OD5Tn8ER2stJY1IK~v12VPXAA-cWqoKc6WyVZfzJs0SkJIfQDeDtSOkKD0fP8TOBM2i4XQzbcl9NviNrueG-bZwrCondlw6K5g4TOVS41QQplEIOwb1AzxBb8QvDXxaQ-Kcmy5ME-vpfdBqdHrgreAGZIliZyLWA3qIJ71w67YIzsnCvCMytULDE7w-d4Q__', 'CloudFront-Key-Pair-Id': 'APKAINI6BNPKV54NHH7Q'}
+
+print(cookie_data)
+import requests
+
+cookies = cookie_data
+headers = {}
+# exit()
+s = requests.Session()
+res = s.get(object_url, headers=headers, cookies=cookies)
+print(res.text)

+ 140 - 0
Ansjer/test/testa.py

@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+# -*- coding: utf-8 -*-
+import struct
+import boto3
+from boto3.session import Session
+from datetime import datetime
+import time
+from requests_aws4auth import AWS4Auth
+import requests
+import chunk
+from botocore.client import Config
+print(datetime(2015, 1, 1))
+print(time.time())
+# exit()
+aws_key = 'AKIAJYSIOA24FQANOFTA'
+aws_secret = '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'
+# aws_key = 'AKIAIK7LP7TRWPFTRWVA'
+# aws_secret = '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'
+session = Session(
+    aws_access_key_id=aws_key,
+    aws_secret_access_key=aws_secret,
+    region_name='us-east-1',
+)
+
+'''
+s3
+'''
+s3_con = boto3.client(
+    's3', aws_access_key_id=aws_key, aws_secret_access_key=aws_secret,
+    config=Config(signature_version='s3v4'), region_name='us-east-1'
+)
+url = s3_con.generate_presigned_post(
+    Key='img.jpg',
+    ExpiresIn=7200,
+    Bucket='ansjertest'
+)
+print(url)
+exit()
+url = s3_con.generate_presigned_url(
+    'put_object',
+    Params={
+        'Bucket': 'ansjertest',
+        'Key': 'img.jpg',
+        # 'ContentType': 'image/jpg'
+    },
+    ExpiresIn=3600,
+    HttpMethod='PUT'
+)
+print(url)
+exit()
+S3_client = session.client('s3')
+response = S3_client.generate_presigned_url(
+    'put_object',
+    Params={
+        'Bucket': 'ansjertest',
+        'Key': 'img.jpg',
+        # 'ContentType': 'image/jpg'
+    },
+    ExpiresIn=3600,
+    # HttpMethod='PUT'
+)
+print(response)
+
+exit()
+S3_client = session.client('s3')
+response = S3_client.generate_presigned_url(
+    'get_object',
+    Params={
+        'Bucket': 'ansjertest',
+        'Key': '2N1K3LE78TYJ38CE111A_3/2N1K3LE78TYJ38CE111A_3-1524557834.mp4'
+    },
+    ExpiresIn=3600
+)
+print(response)
+exit()
+
+kinesis_client = session.client('kinesisvideo')
+
+response = kinesis_client.get_data_endpoint(
+    StreamName='demo-stream',
+    APIName='GET_MEDIA_FOR_FRAGMENT_LIST'
+)
+endpoint = response['DataEndpoint'] + '/getMediaForFragmentList'
+print(endpoint)
+data = {
+    "Fragments": ["91343852333181432407537343081996969589651220552"],
+    "StreamName": "demo-stream"
+}
+
+auth = AWS4Auth(aws_key, aws_secret, 'us-east-1', 'kinesisvideo')
+headers = {'Content-type': 'application/json'}
+response = requests.post(endpoint, json=data, auth=auth, headers=headers)
+# test=chunk.Chunk(response.text.encode('utf8'))
+print(response.headers)
+exit()
+
+stream_bytes = response.text.encode('utf8')
+print(response.text.encode('utf8'))
+print('3333')
+exit()
+# url = "网络zip的地址"
+# path = "你本地的地址"
+#
+# req = urllib2.urlopen(url)
+# data = req.read()
+# with open(path, "wb") as zip:
+#     zip.write(data)
+# req.close()
+# ##-----------------------------------------------------------------------------------------
+
+
+exit()
+response_describe_stream = kinesis_client.describe_stream(
+    StreamName='demo-stream',
+)
+print(response_describe_stream)
+# exit()
+response = kinesis_client.get_data_endpoint(
+    StreamName='demo-stream',
+    APIName='GET_MEDIA'
+)
+print(response)
+
+# exit()
+print('-----------')
+print(response['DataEndpoint'])
+
+kinesis_video_media_client = session.client('kinesis-video-media')
+response_media = kinesis_video_media_client.get_media(
+    StreamName='demo-stream',
+    StartSelector={
+        'StartSelectorType': 'EARLIEST ',
+    }
+)

+ 4 - 9
Ansjer/test/util/encryDownLoad.py

@@ -55,17 +55,12 @@ def get_timestamp10():
     """获取当前时间长度为10位长度的时间戳"""
     """获取当前时间长度为10位长度的时间戳"""
     return int(time.time())
     return int(time.time())
 
 
-
-secret = 'ansjer';  # 密钥--对应#st的哈希格式为 secret+url+e,e为时间戳单位s,url为请求地址  secure_link_md5 xiaozhong.com$uri$arg_e;
-# path = '/hls/5553.mp4/index.m3u8'  # 下载文件
-# path = '/L59KVYDAEPHR1T6M111A_0/555666.mp4'  # 下载文件
-path = '/5553.mp4'  # 下载文件
-# path = '/444.mp4'  # 下载文件
+url = 'http://192.168.136.45:8077'
+secret = 'ansjer';  # 密钥--对应#st的哈希格式为 secret+url+e,e为时间戳单位s,url为请求地址
+path = '/OTA/downloads/IPC/18E2012008A/4.1.5/V4.1.5.18E2012008A.img'  # 下载文件
 # 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期
 # 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期
 expire = get_timestamp10() + 3600;
 expire = get_timestamp10() + 3600;
 res = md5(str(secret) + str(path) + str(expire), True)
 res = md5(str(secret) + str(path) + str(expire), True)
 md5 = str(base64_encode(res, True))
 md5 = str(base64_encode(res, True))
 md5 = md5.replace('b\'', '').replace('\'', '').replace('+', '-').replace('/', '_').replace('=', '')
 md5 = md5.replace('b\'', '').replace('\'', '').replace('+', '-').replace('/', '_').replace('=', '')
-
-# print('生成代相关认证签名的地址:','http://52.8.197.107/444.mp4.m3u8?' + 'st=' + str(md5) + '&e=' + str(expire))
-print('io:','http://52.8.197.107/5553.mp4.m3u8?' + 'st=' + str(md5) + '&e=' + str(expire))
+print(url+path+'?' + 'st=' + str(md5) + '&e=' + str(expire))

+ 94 - 78
Ansjer/urls.py

@@ -1,124 +1,140 @@
 from django.contrib import admin
 from django.contrib import admin
 from django.conf.urls import url
 from django.conf.urls import url
-from django.urls import path,re_path
+from django.urls import path
+# from django.views.generic.base import RedirectView
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
-    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,shareUserPermission,UserManger, CheckUserData, OauthManage,UserController
+    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,BatchProcessingDatabase,shareUserPermission,UserManger, CheckUserData
 
 
 urlpatterns = [
 urlpatterns = [
-    url(r'^account/authcode$', UserController.authCodeView.as_view()),
-    url(r'^account/register$', UserController.registerView.as_view()),
-    url(r'^account/login$', UserController.LoginView.as_view()),
-    url(r'^account/logout$', UserController.LogoutView.as_view(), name='logout_user'),
-    url(r'^account/changePwd$', UserController.ChangePwdView.as_view(), name='change_password'),
-    url(r'^account/forget$', UserController.ForgetPwdView.as_view(), name='forget_password'),
-    url(r'^accounts/email-re-pwd/$', UserController.EmailResetPwdView.as_view()),
-
-    ###
     url(r'^admin/', admin.site.urls),
     url(r'^admin/', admin.site.urls),
+    # url(r'^favicon.ico$', RedirectView.as_view(url=r'favicon.ico', permanent=True)),
     url(r'^favicon.ico$', UserManger.success, name=u'favicon.ico'),
     url(r'^favicon.ico$', UserManger.success, name=u'favicon.ico'),
-    url(r'^account/showUserMore$', UserManger.showUserMoreView.as_view()),
-    url(r'^account/perfectUserInfo$', UserManger.perfectUserInfoView.as_view()),
-    url(r'^account/getAvatar/(?P<filePath>.*)$', UserManger.getAvatarView.as_view()),
-    url(r'^account/delUser$', UserManger.delUserInterface),
-    url(r'^account/setUserValid$', UserManger.setUserValidView.as_view()),
-    url(r'^account/showAllUser$', UserManger.showAllUserInterface),
-    url(r'^account/help$', LogManager.HelpView.as_view()),
-    url(r'^account/searchUser$', shareUserPermission.searchUserView.as_view()),
-    url(r'^account/shareUserEquipment$', shareUserPermission.shareUserEquipmentView.as_view()),
-    url(r'^account/unsharedUserEquipment$', shareUserPermission.unsharedUserEquipmentView.as_view()),
+    url(r'^$', UserManger.LoginView.as_view(), name='login'),
+    url(r'^account/login$', UserManger.LoginView.as_view(), name='login_user'),
+    url(r'^account/logout$', UserManger.LogoutView.as_view(), name='logout_user'),
+    url(r'^account/authcode$', UserManger.getAuthCodeView.as_view(), name='auth_code'),
+    url(r'^account/register$', UserManger.registerView.as_view(), name='register_user'),
+    url(r'^account/changePwd$', UserManger.ChangePwdView.as_view(), name='change_password'),
+    url(r'^account/active/(?P<active_code>.*)$', CheckUserData.ActiveUserView.as_view(), name='user_active'),
+    # 配置激活账户链接
+    url(r'^account/forget$', UserManger.ForgetPwdView.as_view(), name='forget_password'),
+    url(r'^account/activate/(?P<token>\w+.[-_\w]*\w+.[-_\w]*\w+)$', CheckUserData.Active_User, name='active_user'),
+    url(r'^account/password/edit$', UserManger.ResetPwdView.as_view(), name='reset_password'),
+    url(r'^account/password/mobiletoResetPwd$', CheckUserData.MobiletoResetPwdView.as_view(),
+        name='Mobile_Reset_Password'),
+    url(r'^account/modifyPwd$', CheckUserData.ModifyPwdView.as_view(), name="modify_password"),
+    url(r'^account/showUserMore$', UserManger.showUserMoreView.as_view(), name='show_User_More'),
+    url(r'^account/perfectUserInfo$', UserManger.perfectUserInfoView.as_view(), name=u'Perfect_User_Info'),
+    url(r'^account/getAvatar/(?P<filePath>.*)$', UserManger.getAvatarView.as_view(), name=u'get_Avatar'),
+    url(r'^account/delUser$', UserManger.delUserInterface, name=u'del_User'),
+    url(r'^account/setUserValid$', UserManger.setUserValidView.as_view(), name=u'set_User_Valid'),
+    url(r'^account/showAllUser$', UserManger.showAllUserInterface, name=u'show_All_User'),
+    url(r'^account/help$', LogManager.HelpView.as_view(), name=u'help_info'),
+    url(r'^account/searchUser$', shareUserPermission.searchUserView.as_view(), name=u'search_User'),
+    url(r'^account/shareUserEquipment$', shareUserPermission.shareUserEquipmentView.as_view(),
+        name=u'share_User_Equipment'),
+    url(r'^account/unsharedUserEquipment$', shareUserPermission.unsharedUserEquipmentView.as_view(),
+        name=u'unshared_User_Equipment'),
 
 
-    url(r'^response/success$', UserManger.success),
+    url(r'^response/success$', UserManger.success, name=u'success_info'),
     # http://13.56.215.252:82/equipment/queryUserEquipment?token=test
     # http://13.56.215.252:82/equipment/queryUserEquipment?token=test
-    url(r'^equipment/queryUserEquipment$', EquipmentManager.queryUserEquipmentInterface),
+    url(r'^equipment/queryUserEquipment$', EquipmentManager.queryUserEquipmentInterface, name='query_User_Equipment'),
     url(r'^equipment/addNewUserEquipment$', EquipmentManager.addNewUserEquipmentInterface,
     url(r'^equipment/addNewUserEquipment$', EquipmentManager.addNewUserEquipmentInterface,
         name='add_New_User_Equipment'),
         name='add_New_User_Equipment'),
-    url(r'^equipment/delUserEquipment$', EquipmentManager.delUserEquipmentInterface),
+    url(r'^equipment/delUserEquipment$', EquipmentManager.delUserEquipmentInterface, name='del_User_Equipment'),
     url(r'^equipment/modifyUserEquipment$', EquipmentManager.modifyUserEquipmentInterface,
     url(r'^equipment/modifyUserEquipment$', EquipmentManager.modifyUserEquipmentInterface,
         name='modify_User_Equipment'),
         name='modify_User_Equipment'),
     url(r'^equipment/showAllUserEquipment$', EquipmentManager.showAllUserEquipmentInterface,
     url(r'^equipment/showAllUserEquipment$', EquipmentManager.showAllUserEquipmentInterface,
         name='show_All_User_Equipment'),
         name='show_All_User_Equipment'),
-    url(r'^equipment/findEquipmentInfo$', EquipmentManager.findEquipmentInfoInterface),
+    url(r'^equipment/findEquipmentInfo$', EquipmentManager.findEquipmentInfoInterface, name='find_User_Equipment'),
+
+    url(r'^OTA/uploads$', OTAEquipment.getUploadFiletoDirView.as_view(), name=u'uploads_updata_file'),
+    url(r'^OTA/download$', OTAEquipment.downloadUpdataFileUrl, name='downloads_updata_file_backup'),
+    url(r'^OTA/downloads/(\w+)/(\w+[\w+]*.+[^_w]*.\w+)$', OTAEquipment.downloadUpdataFileUrlInterface,
+        name='downloads_updata_file'),
+    url(r'^OTA/getEquipmentVersion$', OTAEquipment.getEquipmentVersionInterface, name=u'get_equipment_version$'),
+    url(r'^OTA/getUpdataFileUrl$', OTAEquipment.getUpdataFileUrlInterface, name=u'get_updata_file_Url'),
+    url(r'^OTA/addNewEquipmentVersion$', OTAEquipment.addNewEquipmentVersionInterface, name=u'add_New_EquipmentVersion'),
+    url(r'^OTA/showAllEquipmentVersion$', OTAEquipment.showAllEquipmentVersionInterface, name=u'show_All_Equipment_Version'),
 
 
-    url(r'^OTA/uploads$', OTAEquipment.getUploadFiletoDirView.as_view()),
-    url(r'^OTA/download$', OTAEquipment.downloadUpdataFileUrl),
-    url(r'^OTA/downloads/(\w+)/(\w+[\w+]*.+[^_w]*.\w+)$', OTAEquipment.downloadUpdataFileUrlInterface),
-    url(r'^OTA/getEquipmentVersion$', OTAEquipment.getEquipmentVersionInterface),
-    url(r'^OTA/getUpdataFileUrl$', OTAEquipment.getUpdataFileUrlInterface),
-    url(r'^OTA/addNewEquipmentVersion$', OTAEquipment.addNewEquipmentVersionInterface),
-    url(r'^OTA/showAllEquipmentVersion$', OTAEquipment.showAllEquipmentVersionInterface),
+    url(r'^toekn/refreshToken$', UserManger.refreshTokenView.as_view(), name=u'refresh_token'),
 
 
-    url(r'^roles/addNewRole$', PermissionManager.addNewRoleView.as_view()),
-    url(r'^roles/queryRole$', PermissionManager.queryRoleView.as_view()),
-    url(r'^roles/delRole$', PermissionManager.delRoleView.as_view()),
-    url(r'^roles/modifyRole$', PermissionManager.modifyRoleView.as_view()),
-    url(r'^perms/addNewPerms$', PermissionManager.addNewPermsView.as_view()),
-    url(r'^perms/delPerms$', PermissionManager.delPermsView.as_view()),
-    url(r'^perms/queryPerms$', PermissionManager.queryPermsView.as_view()),
-    url(r'^perms/modifyPerms$', PermissionManager.modifyPermsView.as_view()),
-    url(r'^permsManager/queryRolePerms$', PermissionManager.queryRolePermsView.as_view()),
+    url(r'^import/batchAddEquipment$', BatchProcessingDatabase.batchAddEquipmentView.as_view(),
+        name=u'batch_Add_Equipment'),
 
 
-    url(r'^uploads/upgrade$', OTAEquipment.getUploadFiletoDirView.as_view()),
-    url(r'^upgrade/download/(\w+.[^_w]*\w+.\w+)$', CheckUserData.download_file),
-    url(r'^downloads/upgrade/(\w+)/(\w+.[^_w]*\w+.\w+)$', OTAEquipment.downloadUpdataFileUrlInterface),
-    url(r'^getOTAurl/getUpdataFileUrl$', OTAEquipment.getUpdataFileUrlInterface),
+    url(r'^roles/addNewRole$', PermissionManager.addNewRoleView.as_view(), name=u'Add_New_Role'),
+    url(r'^roles/queryRole$', PermissionManager.queryRoleView.as_view(), name=u'Query_Role'),
+    url(r'^roles/delRole$', PermissionManager.delRoleView.as_view(), name=u'del_Role'),
+    url(r'^roles/modifyRole$', PermissionManager.modifyRoleView.as_view(), name=u'modify_Role'),
+    url(r'^perms/addNewPerms$', PermissionManager.addNewPermsView.as_view(), name=u'add_New_Perms'),
+    url(r'^perms/delPerms$', PermissionManager.delPermsView.as_view(), name=u'del_Perms'),
+    url(r'^perms/queryPerms$', PermissionManager.queryPermsView.as_view(), name=u'query_Perms'),
+    url(r'^perms/modifyPerms$', PermissionManager.modifyPermsView.as_view(), name=u'modify_Perms'),
+    url(r'^permsManager/queryRolePerms$', PermissionManager.queryRolePermsView.as_view(), name=u'query_Role_Perms'),
+
+    url(r'^uploads/upgrade$', OTAEquipment.getUploadFiletoDirView.as_view(), name=u'upload_upgrade'),
+    url(r'^upgrade/download/(\w+.[^_w]*\w+.\w+)$', CheckUserData.download_file, name='download_upgrade'),
+    url(r'^downloads/upgrade/(\w+)/(\w+.[^_w]*\w+.\w+)$', OTAEquipment.downloadUpdataFileUrlInterface,
+        name='downloads_upgrade'),
+    url(r'^getOTAurl/getUpdataFileUrl$', OTAEquipment.getUpdataFileUrlInterface, name=u'get_updata_file_Url'),
 
 
     #  流处理
     #  流处理
-    url(r'^media/stream', StreamMedia.StreamMedia.as_view()),
-    url(r'^media/auth_stream', StreamMedia.Auth_Stream),
-    url(r'^media/send_video_s3', StreamMedia.send_video_s3),
-    url(r'^media/auth_live', StreamMedia.Auth_Live),
+    url(r'^media/stream', StreamMedia.StreamMedia.as_view(), name=u'media_stream'),
+    url(r'^media/auth_stream', StreamMedia.Auth_Stream, name=u'auth_stream'),
+    url(r'^media/send_video_s3', StreamMedia.send_video_s3, name=u'auth_stream'),
+    url(r'^media/auth_live', StreamMedia.Auth_Live, name=u'auth_live'),
+    # url(r'^media/push_flv_s3', StreamMedia.push_flv_s3, name=u'push_flv_s3'),
     # 传感器
     # 传感器
-    url(r'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view()),
+    url(r'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view(), name=u'equiment_sensor'),
     # 设备推送信息
     # 设备推送信息
-    url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view()),
+    url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view(), name=u'equiment_info'),
     # 管理员专属view
     # 管理员专属view
-    url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),
+    url(r'^adminManage/manage', AdminManage.AdminManage.as_view(), name=u'adminManage'),
     # OTA重构类
     # OTA重构类
-    url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),
+    url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view(), name=u'equipmentOTA'),
     # 用户反馈信息
     # 用户反馈信息
-    url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view()),
+    url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view(), name=u'feedbackInfoView'),
     # app版本信息
     # app版本信息
-    url(r'^appInfo', AppInfo.AppInfo.as_view()),
+    url(r'^appInfo', AppInfo.AppInfo.as_view(), name=u'AppInfo'),
     # 访问日志new
     # 访问日志new
-    url(r'^accesslog', AccessLog.AccessLog.as_view()),
+    url(r'^accesslog', AccessLog.AccessLog.as_view(), name=u'AccessLog'),
+
     # 套餐信息管理
     # 套餐信息管理
-    url(r'^meal/manage', MealManage.MealManage.as_view()),
+    url(r'^meal/manage', MealManage.MealManage.as_view(), name=u'MealManage'),
     # 设备套餐绑定
     # 设备套餐绑定
-    url(r'^device/meal$', DeviceMeal.DeviceMeal.as_view()),
+    url(r'^device/meal$', DeviceMeal.DeviceMeal.as_view(), name=u'DeviceMeal'),
     # hls put_object签名url
     # hls put_object签名url
-    url(r'^HlsManage$', HlsManage.HlsManage.as_view()),
+    url(r'^HlsManage$', HlsManage.HlsManage.as_view(), name=u'get_sign_put_object'),
     # 设备管理
     # 设备管理
-    url(r'^device/manage$', DeviceManage.DeviceManage.as_view()),
+    url(r'^device/manage$', DeviceManage.DeviceManage.as_view(), name=u'device_manage'),
     # 设备在线
     # 设备在线
-    url(r'^device/online$', EquipmentStatus.EquipmentOnline),
+    url(r'^device/online$', EquipmentStatus.EquipmentOnline, name=u'device_online'),
     # 设备离线
     # 设备离线
-    url(r'^device/offline$', EquipmentStatus.EquipmentOffline),
+    url(r'^device/offline$', EquipmentStatus.EquipmentOffline, name=u'device_offline'),
     # 设备离线
     # 设备离线
-    url(r'^device/updateIP$', EquipmentStatus.updateIP),
+    url(r'^device/updateIP$', EquipmentStatus.updateIP, name=u'device_updateIP'),
     # 系统ctr
     # 系统ctr
-    url(r'^sys/updateLog', SysManage.updateLog),
+    url(r'^sys/updateLog', SysManage.updateLog, name=u'sys_update_log'),
     # 设备日志
     # 设备日志
-    url(r'^devices/(\w+)/logs$', DeviceLog.DeviceLog),
-    url(r'^devices/(\w+)$', DeviceManage.Devices),
+    url(r'^devices/(\w+)/logs$', DeviceLog.DeviceLog, name=u'device_log'),
+    url(r'^devices/(\w+)$', DeviceManage.Devices, name=u'device_log'),
     # 访问日志 mongodb版
     # 访问日志 mongodb版
-    url(r'^LogAccess$', LogAccess.LogAccess),
+    url(r'^LogAccess$', LogAccess.LogAccess, name=u'device_log'),
     # 上传操作文档
     # 上传操作文档
-    url(r'^HelpCHM/upload$', LogManager.upload_help_chm),
-    url(r'^admin/userIDs$', AdminManage.getUserIds),
+    url(r'^HelpCHM/upload$', LogManager.upload_help_chm, name=u'upload_help'),
+    url(r'^admin/userIDs$', AdminManage.getUserIds, name=u'getUserIds'),
+
+
+
+
     # 统计访问日志路径
     # 统计访问日志路径
     path('access/staticPath/', AccessLog.statisticsPath),
     path('access/staticPath/', AccessLog.statisticsPath),
     # 多条件搜索用户信息admin
     # 多条件搜索用户信息admin
     path('accounts', AdminManage.search_user_by_content),
     path('accounts', AdminManage.search_user_by_content),
     # 测试专用api
     # 测试专用api
-    path('Test', Test.Test.as_view()),
+    path('Test', Test.Test.as_view(), name=u'Test'),
     # 路由加参数参考
     # 路由加参数参考
     # url(r'^(?P<path>.*)/(?P<UID>.*)/lls$', Test.Test.as_view(), name=u'gg'),
     # url(r'^(?P<path>.*)/(?P<UID>.*)/lls$', Test.Test.as_view(), name=u'gg'),
-    # 认证服务器登陆成功,访问一次关联,并获取用户信息
-    path('oauth/relate/',OauthManage.OauthRelateView.as_view()),
-    # 认证服务去
-    path('resource/auth/',OauthManage.OauthResUserView.as_view()),
-    path('resource/forgetauth/',OauthManage.OauthForgetView.as_view()),
-    # 认证服务修改密码关联旧数据
-    path('account/setPwd/', OauthManage.ModifyRSPwdView.as_view()),
-    re_path('(?P<path>.*)', LogManager.errorPath),
+    # path('oauth/login',OauthManage.OauthManage.as_view()),
+    url(r'^(?P<path>.*)', LogManager.errorPath, name=u'error_path'),
 ]
 ]

+ 111 - 72
Controller/AccessLog.py

@@ -1,24 +1,23 @@
-import datetime
-import simplejson as json
-
+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 django.views.generic.base import View
-from ratelimit.decorators import ratelimit
-
-from Model.models import Access_Log
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-from Service.CommonService import CommonService
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.TemplateService import TemplateService
 from Service.TemplateService import TemplateService
+from Model.models import Access_Log
+import datetime
+from Service.ResponseService import *
+from django.core import serializers
 
 
+import chardet
 '''
 '''
 http://192.168.136.40:8077/accesslog?operation=queryByAdmin&token=test&page=1&line=5&order=-id
 http://192.168.136.40:8077/accesslog?operation=queryByAdmin&token=test&page=1&line=5&order=-id
 http://192.168.136.40:8077/accesslog?operation=truncateByAdmin&token=test
 http://192.168.136.40:8077/accesslog?operation=truncateByAdmin&token=test
 http://192.168.136.40:8077/accesslog?operation=searchByAdmin&token=test&page=1&line=10&content={"status":20}&order=-id
 http://192.168.136.40:8077/accesslog?operation=searchByAdmin&token=test&page=1&line=10&content={"status":20}&order=-id
-
-http://192.168.136.40:8077/accesslog/staticPath/?token=stest
+http://127.0.0.1:8000/accesslog?operation=loginUserNum&token=stest
+http://127.0.0.1:8000/accesslog/loginUserNum?token=stest
+http://127.0.0.1:8000/accesslog?operation=AllLoginArea&token=stest
+http://192.168.136.40:8077/access/staticPath?token=stest
 '''
 '''
 
 
 
 
@@ -27,39 +26,42 @@ class AccessLog(View):
     def dispatch(self, *args, **kwargs):
     def dispatch(self, *args, **kwargs):
         return super(AccessLog, self).dispatch(*args, **kwargs)
         return super(AccessLog, self).dispatch(*args, **kwargs)
 
 
-    def get(self, request):
-        response = ResponseObject()
+    def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        return self.validation(request.GET, response)
+        return self.validation(request_dict=request.GET)
 
 
-    def post(self, request):
-        response = ResponseObject()
+    def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        return self.validation(request.POST, response)
+        return self.validation(request_dict=request.POST)
 
 
-    def validation(self, request_dict, response):
+    def validation(self, request_dict, *args, **kwargs):
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 operation = request_dict.get('operation', None)
                 operation = request_dict.get('operation', None)
-                if userID is not None and operation is not None:
+                param_flag = CommonService.get_param_flag(data=[userID, operation])
+                if param_flag is True:
                     if operation == 'queryByAdmin':
                     if operation == 'queryByAdmin':
-                        return self.query_by_admin(request_dict, userID, response)
+                        return self.query_by_admin(request_dict=request_dict, userID=userID)
                     elif operation == 'searchByAdmin':
                     elif operation == 'searchByAdmin':
-                        return self.search_by_admin(request_dict, userID, response)
+                        return self.search_by_admin(request_dict=request_dict, userID=userID)
                     elif operation == 'truncateByAdmin':
                     elif operation == 'truncateByAdmin':
-                        return self.truncate_by_admin(userID, response)
-                return response.json(444, 'token,operation')
+                        return self.truncate_by_admin(userID=userID)
+                    elif operation == 'loginUserNum':
+                        return self.login_user_num(userID=userID)
+                    elif operation == 'AllLoginArea':
+                        return self.getAllLoginArea(userID=userID)
+
+                return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
-    def query_by_admin(self, request_dict, userID, response):
+    def query_by_admin(self, request_dict, userID):
         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')
         order = request_dict.get('order', '-id')
@@ -73,33 +75,32 @@ class AccessLog(View):
                 if access_log_queryset.exists():
                 if access_log_queryset.exists():
                     count = access_log_queryset.count()
                     count = access_log_queryset.count()
                     res = access_log_queryset[(page - 1) * line:page * line]
                     res = access_log_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
+                    send_json = CommonService.query_set_to_dict(res)
                     send_json['count'] = count
                     send_json['count'] = count
-                    return response.json(0, send_json)
-                return response.json(0, {'datas': [], 'count': 0})
+                    return ResponseJSON(0,send_json)
+                return ResponseJSON(0, {'datas': [], 'count': 0})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    # 清空日志表
-    def truncate_by_admin(self, userID, response, ):
+    def truncate_by_admin(self, userID):
         check_perm = ModelService.check_permission(userID=userID, permID=10)
         check_perm = ModelService.check_permission(userID=userID, permID=10)
         if check_perm is True:
         if check_perm is True:
             from django.db import connection
             from django.db import connection
             cursor = connection.cursor()
             cursor = connection.cursor()
             cursor.execute("TRUNCATE TABLE `access_log`")
             cursor.execute("TRUNCATE TABLE `access_log`")
-        return response.json(0)
+        return ResponseJSON(0)
 
 
-    # 搜索日志(多条件)
-    def search_by_admin(self, request_dict, userID, response):
+    def search_by_admin(self, request_dict, userID):
         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')
         order = request_dict.get('order', '-id')
         content = request_dict.get('content', None)
         content = request_dict.get('content', None)
         starttime = request_dict.get('starttime', None)
         starttime = request_dict.get('starttime', None)
         endtime = request_dict.get('endtime', None)
         endtime = request_dict.get('endtime', None)
-        if page is not None and line is not None:
+        param_flag = CommonService.get_param_flag(data=[page, line])
+        if param_flag is True:
             check_perm = ModelService.check_permission(userID=userID, permID=20)
             check_perm = ModelService.check_permission(userID=userID, permID=20)
             if check_perm is True:
             if check_perm is True:
                 try:
                 try:
@@ -107,12 +108,13 @@ class AccessLog(View):
                     search_kwargs = CommonService.get_kwargs(data=content)
                     search_kwargs = CommonService.get_kwargs(data=content)
                     queryset = Access_Log.objects.filter(**search_kwargs).order_by(order)
                     queryset = Access_Log.objects.filter(**search_kwargs).order_by(order)
                 except Exception as e:
                 except Exception as e:
-                    return response.json(444)
+                    return ResponseJSON(444)
                 if starttime is not None and starttime != '' and endtime is not None and endtime != '':
                 if starttime is not None and starttime != '' and endtime is not None and endtime != '':
                     startt = datetime.datetime.fromtimestamp(int(starttime))
                     startt = datetime.datetime.fromtimestamp(int(starttime))
                     starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
                     starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
                     endt = datetime.datetime.fromtimestamp(int(endtime))
                     endt = datetime.datetime.fromtimestamp(int(endtime))
                     endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
                     endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                    # var_dump(starttime,endtime)
                     queryset = queryset.filter(time__range=(starttime, endtime))
                     queryset = queryset.filter(time__range=(starttime, endtime))
                 elif starttime is not None and starttime != '':
                 elif starttime is not None and starttime != '':
                     startt = datetime.datetime.fromtimestamp(int(starttime))
                     startt = datetime.datetime.fromtimestamp(int(starttime))
@@ -125,17 +127,62 @@ class AccessLog(View):
                 if queryset.exists():
                 if queryset.exists():
                     count = queryset.count()
                     count = queryset.count()
                     res = queryset[(page - 1) * line:page * line]
                     res = queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
+                    send_json = CommonService.query_set_to_dict(res)
                     send_json['count'] = count
                     send_json['count'] = count
-                    return response.json(0, send_json)
-                return response.json(0, {'datas': [], 'count': 0})
+                    return ResponseJSON(0,send_json)
+                return ResponseJSON(0,{'datas': [], 'count': 0})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444, 'page,line')
+            return ResponseJSON(444)
+    # 获取登录用户的ip的登录情况的接口
+    def login_user_num(self,  userID):
+            check_perm = ModelService.check_permission(userID=userID, permID=20)
+            if check_perm is True:
+                user_list = Access_Log.objects.values("user","ip").distinct().filter(url__contains='account/login').order_by('time')
+                return ResponseJSON(10,list(user_list[0]))
+                # print("是否QuerySet")
+                # print(type(user_list).__name__=='QuerySet')
+                user_list= list(user_list)
+                newuser_list="["
+                count=0
+                for q in user_list:
+                    # print(type(q))
+                    # 获取ip地址中文名称
+                    ip_addrname=CommonService.getAddr(q['ip'])
+                    # print(ip_addrname)
+                    # 拼凑为字符串类型
+                    ip_addrname='{"ip_addrname":"'+ip_addrname+'"}'
+                    # 把字符串转为字典json
+                    ip_addrname=json.loads(ip_addrname)
+                    # 字典类型合并
+                    ip_addrnameall=dict(q, **ip_addrname)
+                    # print(ip_addrnameall)
+                    str_dict = json.dumps(ip_addrnameall)
+                    newuser_list=newuser_list+str_dict+","
+                    count+=1
+                newuser_list= newuser_list[:-1]+"]"
+                # 把字符串转为字典json
+                newuser_list = json.loads(newuser_list)
+                # print(newuser_list)
+                return ResponseJSON(0,{'datas':list(newuser_list), 'count': count})
+            else:
+                return ResponseJSON(404)
 
 
+ # 获取所有用户登录的地区
+    def getAllLoginArea(self, userID):
+        own_permission = ModelService.check_permission(userID=userID, permID=30)
+        if own_permission is True:
+            users = Access_Log.objects.filter(operation='account/login').distinct().values_list('user', flat=True)
+            ip_dict = {}
+            for user in users:
+                qs = Access_Log.objects.values_list('ip', flat=True).filter(operation='account/login',user=user).order_by('time')
+                ip_dict[user] = qs[0]
+            return ResponseJSON(0,ip_dict)
+        else:
+            return ResponseJSON(404)
 
 
-@ratelimit(key='ip', rate='3/m')
+@csrf_exempt
 def statisticsPath(request):
 def statisticsPath(request):
     request.encoding = 'utf-8'
     request.encoding = 'utf-8'
     if request.method == 'GET':
     if request.method == 'GET':
@@ -143,28 +190,20 @@ def statisticsPath(request):
     if request.method == 'POST':
     if request.method == 'POST':
         request_dict = request.POST
         request_dict = request.POST
     token = request_dict.get('token', None)
     token = request_dict.get('token', None)
-    response = ResponseObject()
-    was_limited = getattr(request, 'limited', False)
-    # 限制同一个ip该接口一分钟不能访问超过两次
-    if was_limited is True:
-        return response.json(5)
     if token is not None:
     if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
-            own_perm = ModelService.check_permission(userID, 10)
-            if own_perm is True:
-                paths = TemplateService.log_api()
-                datas = {}
-                for path in paths:
-                    count = Access_Log.objects.filter(operation=path).count()
-                    datas[path] = count
-                return response.json(0, {'datas': datas})
-            else:
-                return response.json(404)
+        tokenManager = JSONTokenManager()
+        error_code = tokenManager.verify_AToken(token)
+        if error_code == 0:
+            userID = tokenManager.accessDict.get('userID', None)
+            own_perm = ModelService.check_permission(userID,10)
+            paths = TemplateService.log_api()
+            datas = {}
+            for path in paths:
+                count = Access_Log.objects.filter(operation=path).count()
+                datas[path] = count
+            return ResponseJSON(0, {'datas': datas})
         else:
         else:
-            return response.json(tko.code)
+            return HttpResponse(tokenManager.errorCodeInfo(error_code))
     else:
     else:
-        return response.json(444, 'token')
+        return ResponseJSON(311)
+

+ 75 - 78
Controller/AdminManage.py

@@ -3,21 +3,19 @@ from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
 from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from django.utils.decorators import method_decorator
 from django.contrib.auth.hashers import make_password  # 对密码加密模块
 from django.contrib.auth.hashers import make_password  # 对密码加密模块
+from Service.TokenManager import JSONTokenManager
 from Model.models import Device_Info,Role
 from Model.models import Device_Info,Role
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from django.utils import timezone
 from django.utils import timezone
-from Model.models import Access_Log,Device_User
+import datetime
+from Model.models import Access_Log
+from Service.ResponseService import *
 from django.views.decorators.http import require_http_methods
 from django.views.decorators.http import require_http_methods
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-from Ansjer.config import OFF_LINE_TIME_DELTA
-import datetime,simplejson as json
-from Service.CommonService import CommonService
+from Ansjer.config import *
 '''
 '''
-http://192.168.136.40:8077/adminManage/manage?operation=getAllDeviceArea&token=debug
-http://192.168.136.40:8077/adminManage/manage?operation=getAllUserName&token=debug
-http://192.168.136.40:8077/adminManage/manage?operation=getAllUID&token=debug
-
+http://13.56.215.252:8222/adminManage/manage?operation=getAllDeviceArea&token=test
+http://13.56.215.252:8222/adminManage/manage?operation=getAllUserName&token=test
+http://13.56.215.252:8222/adminManage/manage?operation=getAllUID&token=test
 http://127.0.0.1:8000/adminManage/manage?operation=getAllOnLine&token=stest
 http://127.0.0.1:8000/adminManage/manage?operation=getAllOnLine&token=stest
 http://127.0.0.1:8000/adminManage/manage?operation=getOnLine&token=stest
 http://127.0.0.1:8000/adminManage/manage?operation=getOnLine&token=stest
 '''
 '''
@@ -37,70 +35,71 @@ class AdminManage(TemplateView):
         return self.validation(request_dict=request.POST)
         return self.validation(request_dict=request.POST)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
+
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 operation = request_dict.get('operation', None)
                 operation = request_dict.get('operation', None)
-                if userID is not None and operation is not None:
+                param_flag = CommonService.get_param_flag(data=[userID, operation])
+                if param_flag is True:
                     if operation == 'resetUserPwd':
                     if operation == 'resetUserPwd':
                         return self.resetUserPwd(request_dict=request_dict, userID=userID)
                         return self.resetUserPwd(request_dict=request_dict, userID=userID)
                     if operation == 'getAllOnLine':
                     if operation == 'getAllOnLine':
-                        return self.getAllOnLine(userID,response)
+                        return self.getAllOnLine(userID=userID)
                     if operation == 'getOnLine':
                     if operation == 'getOnLine':
-                        return self.getOnLine(userID,response)
+                        return self.getOnLine(userID=userID)
                     if operation == 'getAllUserName':
                     if operation == 'getAllUserName':
-                        return self.getAllUserName(userID,response)
+                        return self.getAllUserName(userID=userID)
                     if operation == 'getStatisAccess':
                     if operation == 'getStatisAccess':
-                        return self.getStatisAccess(userID,request_dict,response)
+                        return self.getStatisAccess(userID=userID,request_dict=request_dict)
                     if operation == 'getAllUID':
                     if operation == 'getAllUID':
-                        return self.getAllUID(userID,response)
+                        return self.getAllUID(userID=userID)
                     if operation == 'getAllDeviceArea':
                     if operation == 'getAllDeviceArea':
-                        return self.getAllDeviceArea(userID,response)
+                        return self.getAllDeviceArea(userID=userID)
                 else:
                 else:
-                    return response.json(444,'operation')
+                    return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
-    def resetUserPwd(self, request_dict, userID,response):
+    def resetUserPwd(self, request_dict, userID):
         own_permission = ModelService.check_permission(userID=userID, permID=50)
         own_permission = ModelService.check_permission(userID=userID, permID=50)
-        if own_permission:
+        if own_permission is True:
             duserID = request_dict.get('duserID', None)
             duserID = request_dict.get('duserID', None)
             userPwd = request_dict.get('userPwd', None)
             userPwd = request_dict.get('userPwd', None)
-            if duserID:
+            param_flag = CommonService.get_param_flag(data=[duserID])
+            if param_flag is True:
                 UserValid = Device_User.objects.filter(userID=duserID)
                 UserValid = Device_User.objects.filter(userID=duserID)
                 if UserValid:
                 if UserValid:
                     if userPwd is None:
                     if userPwd is None:
                         userPwd = '123456'
                         userPwd = '123456'
                     is_update = UserValid.update(password=make_password(userPwd))
                     is_update = UserValid.update(password=make_password(userPwd))
                     if is_update:
                     if is_update:
-                        return response.json(0)
+                        return ResponseJSON(0)
                     else:
                     else:
-                        return response.json(106)
+                        return ResponseJSON(106)
             else:
             else:
-                return response.json(444,'duserID')
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def getAllUserName(self, userID,response):
+    def getAllUserName(self, userID):
         # 权限固定为30
         # 权限固定为30
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
             username_list = Device_User.objects.all().values_list('username', flat=True)
             username_list = Device_User.objects.all().values_list('username', flat=True)
             if username_list:
             if username_list:
-                return response.json(0,{'username_list': list(username_list)})
+                return ResponseJSON(0,{'username_list': list(username_list)})
             else:
             else:
-                return response.json(0)
+                return ResponseJSON(0)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
     #    获取全部用户的在线个数
     #    获取全部用户的在线个数
-    def getAllOnLine(self, userID,response):
+    def getAllOnLine(self, userID):
         # 权限固定为30
         # 权限固定为30
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
@@ -115,11 +114,11 @@ class AdminManage(TemplateView):
                     noonlinenum+=1
                     noonlinenum+=1
             print("在线人数:")
             print("在线人数:")
             print(onlinenum)
             print(onlinenum)
-            return response.json(0, {"onlinenum": onlinenum, "no_onlinenum": noonlinenum})
+            return ResponseJSON(0, {"onlinenum": onlinenum, "no_onlinenum": noonlinenum})
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
     #    获取全部用户的在线人数
     #    获取全部用户的在线人数
-    def getOnLine(self, userID,response):
+    def getOnLine(self, userID):
         # 权限固定为30
         # 权限固定为30
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
@@ -142,12 +141,12 @@ class AdminManage(TemplateView):
                         noonlinenum += 1
                         noonlinenum += 1
             print("在线人")
             print("在线人")
             print(onlinenum)
             print(onlinenum)
-            return response.json(0, {"onlinenum": onlinenum,"no_onlinenum": noonlinenum})
+            return ResponseJSON(0, {"onlinenum": onlinenum,"no_onlinenum": noonlinenum})
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
     # 获取所有设备地区
     # 获取所有设备地区
-    def getAllDeviceArea(self, userID,response):
+    def getAllDeviceArea(self, userID):
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
             qs = Device_Info.objects.all().values('area','UID')
             qs = Device_Info.objects.all().values('area','UID')
@@ -163,17 +162,17 @@ class AdminManage(TemplateView):
                         area_dict[v] += 1
                         area_dict[v] += 1
                     else:
                     else:
                         area_dict[v] = 1
                         area_dict[v] = 1
-                return response.json(0,{'area':area_dict})
+                return ResponseJSON(0,{'area':area_dict})
             else:
             else:
-                return response.json(0)
+                return ResponseJSON(0)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
     '''
     '''
     统计一天访问量
     统计一天访问量
     http://192.168.136.45:8077/adminManage/manage?token=test&operation=getStatisAccess&timestamp=1528773308
     http://192.168.136.45:8077/adminManage/manage?token=test&operation=getStatisAccess&timestamp=1528773308
     '''
     '''
-    def getStatisAccess(self,userID,request_dict,response):
+    def getStatisAccess(self,userID,request_dict):
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
             time_stamp = int(request_dict.get('timestamp', None))
             time_stamp = int(request_dict.get('timestamp', None))
@@ -188,42 +187,42 @@ class AdminManage(TemplateView):
                     res[k] = count
                     res[k] = count
                 else:
                 else:
                     res[k] = 0
                     res[k] = 0
-            return response.json(0, {'count': res})
+            return ResponseJSON(0, {'count': res})
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def getAllUID(self,userID,response):
+    def getAllUID(self,userID):
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
             uid_list = Device_Info.objects.all().values_list('UID', flat=True)
             uid_list = Device_Info.objects.all().values_list('UID', flat=True)
             if uid_list:
             if uid_list:
-                return response.json(0, {'count': len(uid_list),'uid_list':list(uid_list)})
+                return ResponseJSON(0, {'count': len(uid_list),'uid_list':list(uid_list)})
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
+@csrf_exempt
 @require_http_methods(["GET"])
 @require_http_methods(["GET"])
 def getUserIds(request):
 def getUserIds(request):
     token = request.GET.get('token', None)
     token = request.GET.get('token', None)
-    response = ResponseObject()
     if token is not None:
     if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
+        tokenManager = JSONTokenManager()
+        error_code = tokenManager.verify_AToken(token)
+        if error_code == 0:
+            userID = tokenManager.accessDict.get('userID', None)
             own_perm = ModelService.check_permission(userID,30)
             own_perm = ModelService.check_permission(userID,30)
             if own_perm is True:
             if own_perm is True:
                 # userID_list = Device_User.objects.all().values_list('userID', flat=True)
                 # userID_list = Device_User.objects.all().values_list('userID', flat=True)
                 dn = Device_User.objects.all().values('userID', 'username')
                 dn = Device_User.objects.all().values('userID', 'username')
-                return response.json(0,{"datas":list(dn)})
+                return ResponseJSON(0,{"datas":list(dn)})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(tko.code)
+            return HttpResponse(tokenManager.errorCodeInfo(error_code))
     else:
     else:
-        return response.json(311)
+        return ResponseJSON(311)
 
 
 @csrf_exempt
 @csrf_exempt
+# @require_http_methods(['GET'])
 def search_user_by_content(request):
 def search_user_by_content(request):
     if request.method == 'GET':
     if request.method == 'GET':
         request_dict = request.GET
         request_dict = request.GET
@@ -235,18 +234,16 @@ def search_user_by_content(request):
     content = request_dict.get('content', None)
     content = request_dict.get('content', None)
     rstime = request_dict.get('rstime', None)
     rstime = request_dict.get('rstime', None)
     retime = request_dict.get('retime', None)
     retime = request_dict.get('retime', None)
-    response = ResponseObject()
     if page is not None and line is not None:
     if page is not None and line is not None:
         page = int(page)
         page = int(page)
         line = int(line)
         line = int(line)
     else:
     else:
-        return response.json(10,'page,line is none')
+        return ResponseJSON(10,'page,line is none')
     if token is not None:
     if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
+        tokenManager = JSONTokenManager()
+        error_code = tokenManager.verify_AToken(token)
+        if error_code == 0:
+            userID = tokenManager.accessDict.get('userID', None)
             own_perm = ModelService.check_permission(userID,30)
             own_perm = ModelService.check_permission(userID,30)
             if own_perm is True:
             if own_perm is True:
                 check_perm = ModelService.check_permission(userID=userID, permID=20)
                 check_perm = ModelService.check_permission(userID=userID, permID=20)
@@ -256,7 +253,7 @@ def search_user_by_content(request):
                         search_kwargs = CommonService.get_kwargs(data=content)
                         search_kwargs = CommonService.get_kwargs(data=content)
                         queryset = Device_User.objects.filter(**search_kwargs)
                         queryset = Device_User.objects.filter(**search_kwargs)
                     except Exception as e:
                     except Exception as e:
-                        return response.json(444,repr(e))
+                        return ResponseJSON(444,repr(e))
                     if rstime is not None and rstime != '' and retime is not None and retime != '':
                     if rstime is not None and rstime != '' and retime is not None and retime != '':
                         startt = datetime.datetime.fromtimestamp(int(rstime))
                         startt = datetime.datetime.fromtimestamp(int(rstime))
                         rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
                         rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
@@ -274,7 +271,7 @@ def search_user_by_content(request):
                     if queryset.exists():
                     if queryset.exists():
                         count = queryset.count()
                         count = queryset.count()
                         res = queryset[(page - 1) * line:page * line]
                         res = queryset[(page - 1) * line:page * line]
-                        sqlDict = CommonService.qs_to_dict(res)
+                        sqlDict = CommonService.query_set_to_dict(res)
                         for k, v in enumerate(sqlDict["datas"]):
                         for k, v in enumerate(sqlDict["datas"]):
                             if len(v['fields']['role']) > 0:
                             if len(v['fields']['role']) > 0:
                                 role_query_set = Role.objects.get(rid=v['fields']['role'][0])
                                 role_query_set = Role.objects.get(rid=v['fields']['role'][0])
@@ -287,16 +284,16 @@ def search_user_by_content(request):
                                         if now_time > dl_time:
                                         if now_time > dl_time:
                                             sqlDict["datas"][k]['fields']['online'] = False
                                             sqlDict["datas"][k]['fields']['online'] = False
                         sqlDict['count'] = count
                         sqlDict['count'] = count
-                        return response.json(0, sqlDict)
-                    return response.json(0, {'datas': [], 'count': 0})
+                        return ResponseJSON(0, sqlDict)
+                    return ResponseJSON(0, {'datas': [], 'count': 0})
                 else:
                 else:
-                    return response.json(404)
+                    return ResponseJSON(404)
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(tko.code)
+            return HttpResponse(tokenManager.errorCodeInfo(error_code))
     else:
     else:
-        return response.json(311)
+        return ResponseJSON(311)
 
 
 
 
 
 

+ 54 - 50
Controller/AppInfo.py

@@ -1,12 +1,13 @@
 from django.views.generic.base import View
 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.CommonService import CommonService
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
+from Service.CommonService import CommonService
 from Model.models import App_Info
 from Model.models import App_Info
 import traceback
 import traceback
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
+from Service.ResponseService import *
+
 '''
 '''
 http://192.168.136.45:8077/appInfo?operation=add&token=test&appBundleId=123456&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A1%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=1234&bundleVersion=1234
 http://192.168.136.45:8077/appInfo?operation=add&token=test&appBundleId=123456&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A1%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=1234&bundleVersion=1234
 http://192.168.136.45:8077/appInfo?operation=update&token=test&appBundleId=1234&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A3%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=555&id=6
 http://192.168.136.45:8077/appInfo?operation=update&token=test&appBundleId=1234&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A3%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=555&id=6
@@ -30,47 +31,48 @@ class AppInfo(View):
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
         operation = request_dict.get('operation', None)
         operation = request_dict.get('operation', None)
-        response = ResponseObject()
         if operation is not None:
         if operation is not None:
             if operation == 'getAppNewVersion':
             if operation == 'getAppNewVersion':
-                return self.getAppNewVersion(request_dict,response)
+                return self.getAppNewVersion(request_dict=request_dict)
             else:
             else:
                 token = request_dict.get('token', None)
                 token = request_dict.get('token', None)
                 if token is not None:
                 if token is not None:
-                    tko = TokenObject(token)
-                    tko.valid()
-                    response.lang = tko.lang
-                    if tko.code == 0:
-                        userID = tko.userID()
-                        if userID is not None:
+                    tokenManager = JSONTokenManager()
+                    error_code = tokenManager.verify_AToken(token)
+                    if error_code == 0:
+                        userID = tokenManager.accessDict.get('userID', None)
+                        param_flag = CommonService.get_param_flag(data=[userID])
+                        if param_flag is True:
                             if operation == 'query':
                             if operation == 'query':
-                                return self.query(request_dict, userID,response)
+                                return self.query(request_dict=request_dict, userID=userID)
                             elif operation == 'add':
                             elif operation == 'add':
-                                return self.add(request_dict, userID,response)
+                                return self.add(request_dict=request_dict, userID=userID)
                             elif operation == 'update':
                             elif operation == 'update':
-                                return self.update(request_dict, userID,response)
+                                return self.update(request_dict=request_dict, userID=userID)
                             elif operation == 'delete':
                             elif operation == 'delete':
-                                return self.delete(request_dict, userID,response)
-                        return response.json(444,'userID')
+                                return self.delete(request_dict=request_dict, userID=userID)
+                        return ResponseJSON(444)
                     else:
                     else:
-                        return response.json(tko.code)
+                        return HttpResponse(tokenManager.errorCodeInfo(error_code))
                 else:
                 else:
-                    return response.json(311)
+                    return ResponseJSON(311)
         else:
         else:
-            return response.json(444,'operation')
+            return ResponseJSON(444)
 
 
-    def getAppNewVersion(self, request_dict,response):
+    def getAppNewVersion(self, request_dict):
         appBundleId = request_dict.get('appBundleId', None)
         appBundleId = request_dict.get('appBundleId', None)
         app_type = request_dict.get('app_type', None)
         app_type = request_dict.get('app_type', None)
-        if appBundleId is not None and app_type is not None:
+        # systemLanguage = request_dict.get('systemLanguage',None)
+        param_flag = CommonService.get_param_flag(data=[appBundleId, app_type])
+        if param_flag is True:
             try:
             try:
                 app_info = App_Info.objects.get(appBundleId=appBundleId, app_type=app_type)
                 app_info = App_Info.objects.get(appBundleId=appBundleId, app_type=app_type)
             except Exception:
             except Exception:
                 errorInfo = traceback.format_exc()
                 errorInfo = traceback.format_exc()
                 print(errorInfo)
                 print(errorInfo)
-                return response.json(424, {'details': errorInfo})
+                return ResponseJSON(424, {'details': errorInfo})
             else:
             else:
-                return response.json(0, {'appBundleId': app_info.appBundleId,
+                return ResponseJSON(0, {'appBundleId': app_info.appBundleId,
                                         'appName': app_info.appName,
                                         'appName': app_info.appName,
                                         'newAppversion': app_info.newAppversion,
                                         'newAppversion': app_info.newAppversion,
                                         'systemLanguage': app_info.systemLanguage,
                                         'systemLanguage': app_info.systemLanguage,
@@ -80,9 +82,9 @@ class AppInfo(View):
                                         'id': app_info.id,
                                         'id': app_info.id,
                                         'bundleVersion': app_info.bundleVersion})
                                         'bundleVersion': app_info.bundleVersion})
         else:
         else:
-            return response.json(444,'app_type,appBundleId')
+            return ResponseJSON(444)
 
 
-    def add(self, request_dict, userID,response):
+    def add(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=40)
         own_perm = ModelService.check_permission(userID=userID, permID=40)
         if own_perm is True:
         if own_perm is True:
             appBundleId = request_dict.get('appBundleId', None)
             appBundleId = request_dict.get('appBundleId', None)
@@ -101,10 +103,10 @@ class AppInfo(View):
                 except Exception:
                 except Exception:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': errorInfo})
+                    return ResponseJSON(424, {'details': errorInfo})
                 else:
                 else:
                     if has_app_info.exists():
                     if has_app_info.exists():
-                        return response.json(60)
+                        return ResponseJSON(60)
                     else:
                     else:
                         try:
                         try:
                             app_Info = App_Info(
                             app_Info = App_Info(
@@ -121,11 +123,11 @@ class AppInfo(View):
                         except Exception:
                         except Exception:
                             errorInfo = traceback.format_exc()
                             errorInfo = traceback.format_exc()
                             print(errorInfo)
                             print(errorInfo)
-                            return response.json(500, {'details': errorInfo})
+                            return ResponseJSON(500, {'details': errorInfo})
                         else:
                         else:
                             app_Info.save()
                             app_Info.save()
                             if app_Info.id:
                             if app_Info.id:
-                                return response.json(0,
+                                return ResponseJSON(0,
                                                     {
                                                     {
                                                         'appBundleId': app_Info.appBundleId,
                                                         'appBundleId': app_Info.appBundleId,
                                                         'appName': app_Info.appName,
                                                         'appName': app_Info.appName,
@@ -138,31 +140,32 @@ class AppInfo(View):
                                                         'bundleVersion': app_Info.bundleVersion
                                                         'bundleVersion': app_Info.bundleVersion
                                                     })
                                                     })
                             else:
                             else:
-                                return response.json(500)
-            return response.json(444)
+                                return ResponseJSON(500)
+            return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def query(self, request_dict, userID,response):
+    def query(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             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))
-            if page is not None and line is not None:
+            param_flag = CommonService.get_param_flag(data=[page, line])
+            if param_flag is True:
                 queryset = App_Info.objects.all()
                 queryset = App_Info.objects.all()
                 if queryset.exists():
                 if queryset.exists():
                     count = queryset.count()
                     count = queryset.count()
                     res = queryset[(page - 1) * line:page * line]
                     res = queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
+                    send_json = CommonService.query_set_to_dict(res)
                     send_json['count'] = count
                     send_json['count'] = count
-                    return response.json(0, send_json)
-                return response.json(0)
+                    return ResponseJSON(0, send_json)
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(444,'page,line')
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def update(self, request_dict, userID, response):
+    def update(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             id = request_dict.get('id', None)
             id = request_dict.get('id', None)
@@ -182,7 +185,7 @@ class AppInfo(View):
                 except Exception:
                 except Exception:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': errorInfo})
+                    return ResponseJSON(424, {'details': errorInfo})
                 else:
                 else:
                     if app_info.id:
                     if app_info.id:
                         app_info.appBundleId = appBundleId
                         app_info.appBundleId = appBundleId
@@ -194,27 +197,28 @@ class AppInfo(View):
                         app_info.bundleVersion = bundleVersion
                         app_info.bundleVersion = bundleVersion
                         app_info.downloadLink = downloadLink
                         app_info.downloadLink = downloadLink
                         app_info.save()
                         app_info.save()
-                        return response.json(0, {'update_id': app_info.id, 'update_time': str(app_info.update_time)})
+                        return ResponseJSON(0, {'update_id': app_info.id, 'update_time': str(app_info.update_time)})
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def delete(self, request_dict, userID,response):
+    def delete(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         if own_perm is True:
         if own_perm is True:
             id_list = request_dict.getlist('id', None)
             id_list = request_dict.getlist('id', None)
-            if id_list :
+            param_flag = CommonService.get_param_flag(data=[id_list])
+            if param_flag is True:
                 try:
                 try:
                     for id in id_list:
                     for id in id_list:
                         App_Info.objects.filter(id=id).delete()
                         App_Info.objects.filter(id=id).delete()
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
+                    return ResponseJSON(424, {'details': repr(e)})
                 else:
                 else:
-                    return response.json(0)
+                    return ResponseJSON(0)
             else:
             else:
-                return response.json(444,'id must list')
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)

+ 85 - 40
Controller/CheckUserData.py

@@ -4,21 +4,18 @@ from random import Random # 用于生成随机码
 from wsgiref.util import FileWrapper
 from wsgiref.util import FileWrapper
 from django.utils.timezone import utc
 from django.utils.timezone import utc
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import TemplateView
+from django.views.generic import TemplateView, View
 from django.utils.decorators import method_decorator
 from django.utils.decorators import method_decorator
 from django.contrib.auth.hashers import make_password
 from django.contrib.auth.hashers import make_password
+from django.shortcuts import HttpResponseRedirect
 from itsdangerous import URLSafeTimedSerializer as utsr # itsdangerous序列化
 from itsdangerous import URLSafeTimedSerializer as utsr # itsdangerous序列化
 import re, base64, json, traceback, random, string
 import re, base64, json, traceback, random, string
 from qcloudsms_py.httpclient import HTTPError
 from qcloudsms_py.httpclient import HTTPError
 from qcloudsms_py import SmsSingleSender
 from qcloudsms_py import SmsSingleSender
 from qcloudsms_py import SmsVoiceVerifyCodeSender, SmsVoicePromptSender
 from qcloudsms_py import SmsVoiceVerifyCodeSender, SmsVoicePromptSender
-from Model.models import Auth_Captcha,Device_User
-from Ansjer.settings import BASE_DIR
-from Object.ResponseObject import ResponseObject
-import datetime,os
-from Ansjer.config import TX_PHONE_APP_KEY,TX_PHONE_APP_ID
-from django.http import HttpResponse
-
+from Ansjer.settings import *
+from Model.models import Email_Captcha, Device_User, Auth_Captcha
+from Service.ResponseService import *
 
 
 #生成随机字符串
 #生成随机字符串
 def RandomStr(randomlength = 8, number = False):
 def RandomStr(randomlength = 8, number = False):
@@ -37,6 +34,22 @@ def RandomStr(randomlength = 8, number = False):
 
 
     return str
     return str
 
 
+def Active_User(request, token):
+    tokenConfirm = TokenLink(SECRET_KEY)
+    try:
+        username = tokenConfirm.confirm_validate_token(token)
+    except:
+        return ResponseJSON(1000)
+    try:
+        UserValid = Device_User.objects.get(userName=username)
+    except Device_User.DoesNotExist:
+        return ResponseJSON(113)
+    UserValid = Device_User.objects.get(username=username)
+    UserValid.is_active = True
+    UserValid.user_isValid = True
+    UserValid.save()
+    return ResponseJSON(0)
+
 class MobiletoResetPwdView(TemplateView):
 class MobiletoResetPwdView(TemplateView):
     @method_decorator(csrf_exempt)
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
     def dispatch(self, *args, **kwargs):
@@ -60,12 +73,11 @@ class MobiletoResetPwdView(TemplateView):
         return self.ValidationError(userName, newPwd, authCode)
         return self.ValidationError(userName, newPwd, authCode)
 
 
     def ValidationError(self, userName, newPwd, authCode):
     def ValidationError(self, userName, newPwd, authCode):
-        response = ResponseObject()
         if userName != None and authCode != None and newPwd != None:
         if userName != None and authCode != None and newPwd != None:
-            return self.MobiletoResetPwd(userName, authCode, newPwd, response)
+            return self.MobiletoResetPwd(userName, authCode, newPwd)
         else:
         else:
-            return response.json(800)
-    def MobiletoResetPwd(self, userName, authCode, newPwd,response):
+            return ResponseJSON(800)
+    def MobiletoResetPwd(self, userName, authCode, newPwd):
         UserValid = Device_User.objects.filter(username = userName).order_by('-data_joined')
         UserValid = Device_User.objects.filter(username = userName).order_by('-data_joined')
         if UserValid:
         if UserValid:
             Users = Auth_Captcha.objects.filter(username = userName).order_by('-sendtime')
             Users = Auth_Captcha.objects.filter(username = userName).order_by('-sendtime')
@@ -79,17 +91,35 @@ class MobiletoResetPwdView(TemplateView):
                         if timeValid < 300:
                         if timeValid < 300:
                             is_flag = UserValid.update(password=make_password(newPwd))
                             is_flag = UserValid.update(password=make_password(newPwd))
                             if is_flag:
                             if is_flag:
-                                return (0)
+                                return ResponseJSON(0)
                             else:
                             else:
-                                return response.json(405)
+                                return ResponseJSON(405)
                         else:
                         else:
-                            return response.json(120)
+                            return ResponseJSON(120)
         else:
         else:
-            return response.json(102)
+            return ResponseJSON(102)
 
 
 def date_handler(obj):
 def date_handler(obj):
-    return obj.isoformat()
+    return  obj.isoformat()
+
+class ActiveUserView(View):
+    """账户激活的View"""
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(ActiveUserView, self).dispatch(*args, **kwargs)
+
+    def get(self, request, active_code):
+        # 用code在数据库中过滤处信息
+        all_records = Email_Captcha.objects.filter(userCaptcha = active_code)
+        if all_records:
+            for record in all_records:
+                # 通过邮箱查找到对应的用户
+                userEmail = record.userEmail
+                user = Device_User.objects.get(userEmail = userEmail)
+                Device_User.objects.filter(userEmail = userEmail).update(user_isValid=True, is_active = True)
 
 
+        response = HttpResponseRedirect('/login/')
+        return response
 
 
 class TokenLink:
 class TokenLink:
     '''
     '''
@@ -153,11 +183,10 @@ class ModifyPwdView(TemplateView):
         return self.ValidationError(userEmail, oldPwd, newPwd)
         return self.ValidationError(userEmail, oldPwd, newPwd)
 
 
     def ValidationError(self, userEmail, oldPwd, newPwd):
     def ValidationError(self, userEmail, oldPwd, newPwd):
-        response = ResponseObject()
         dataValid = DataValid()
         dataValid = DataValid()
         if dataValid.password_validate(newPwd):
         if dataValid.password_validate(newPwd):
             if oldPwd != newPwd:
             if oldPwd != newPwd:
-                return response.json(118)
+                return ResponseJSON(118)
             try:
             try:
                 User = Device_User.objects.get(userEmail = userEmail)
                 User = Device_User.objects.get(userEmail = userEmail)
                 User.userPwd = make_password(newPwd)
                 User.userPwd = make_password(newPwd)
@@ -165,12 +194,11 @@ class ModifyPwdView(TemplateView):
             except Exception as e:
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 errorInfo = traceback.format_exc()
                 print('更新密码到数据库: %s' % errorInfo)
                 print('更新密码到数据库: %s' % errorInfo)
-                return response.json(501,{'msg':repr(e)})
+                return ResponseJSON(501,{'msg':repr(e)})
             else:
             else:
-                return response.json(0)
+                return ResponseJSON(0)
         else:
         else:
-            return response.json(109)
-
+            return ResponseJSON(109)
 
 
 class DataValid:
 class DataValid:
 
 
@@ -210,12 +238,11 @@ class DataValid:
             return False
             return False
 
 
 def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839):
 def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839):
-    appid = TX_PHONE_APP_ID
-    appkey = TX_PHONE_APP_KEY
+    appid = SDK_AppID
+    appkey = App_Key
 
 
     print(phoneNumbers, msg, sendModel, template_id)
     print(phoneNumbers, msg, sendModel, template_id)
     ssender = SmsSingleSender(appid, appkey)
     ssender = SmsSingleSender(appid, appkey)
-    response = ResponseObject()
     try:
     try:
         if sendType == 'register':
         if sendType == 'register':
             result = ssender.send(0, "86", phoneNumbers, u"{authCode}为您的注册验证码,请于2分钟内填写。"
             result = ssender.send(0, "86", phoneNumbers, u"{authCode}为您的注册验证码,请于2分钟内填写。"
@@ -226,12 +253,12 @@ def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839)
     except HTTPError as e:
     except HTTPError as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('发送手机验证码出现网络错误: %s' % errorInfo)
         print('发送手机验证码出现网络错误: %s' % errorInfo)
-        return response.json(1022,{'msg':repr(e)})
+        return ResponseFormal(1022,{'msg':repr(e)})
 
 
     except Exception as e:
     except Exception as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('发送手机短信验证码错误: %s' % errorInfo)
         print('发送手机短信验证码错误: %s' % errorInfo)
-        return response.json(1021)
+        return ResponseFormal(1021)
     else:
     else:
         resultCode = result.get('result', None)
         resultCode = result.get('result', None)
         if resultCode == 0:
         if resultCode == 0:
@@ -243,14 +270,13 @@ def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839)
 
 
 class QCloudSms(object):
 class QCloudSms(object):
     def __init__(self, nationcode, msg, template_id):
     def __init__(self, nationcode, msg, template_id):
-        self.appid = TX_PHONE_APP_ID
-        self.appkey = TX_PHONE_APP_KEY
+        self.appid = SDK_AppID
+        self.appkey = App_Key
         self.msg = msg # 验证码msg
         self.msg = msg # 验证码msg
         self.nationcode = nationcode # 国家码
         self.nationcode = nationcode # 国家码
         self.template_id = template_id # 模板ID
         self.template_id = template_id # 模板ID
 
 
     def sms(self, mobiles, model, type = 'register'):
     def sms(self, mobiles, model, type = 'register'):
-        response = ResponseObject()
         ssender = SmsSingleSender(self.appid, self.appkey)
         ssender = SmsSingleSender(self.appid, self.appkey)
         try:
         try:
             if type == 'register':
             if type == 'register':
@@ -262,11 +288,11 @@ class QCloudSms(object):
         except HTTPError as e:
         except HTTPError as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('发送手机短信验证码出现网络错误: %s' % errorInfo)
             print('发送手机短信验证码出现网络错误: %s' % errorInfo)
-            return response.json(1022,repr(e))
+            return ResponseFormal(1022,repr(e))
         except Exception as e:
         except Exception as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('发送手机验证码错误: %s' % errorInfo)
             print('发送手机验证码错误: %s' % errorInfo)
-            return response.formal(1021,repr(e))
+            return ResponseFormal(1021,repr(e))
         else:
         else:
             resultCode = result.get('result', None)
             resultCode = result.get('result', None)
             if resultCode == 0:
             if resultCode == 0:
@@ -278,7 +304,6 @@ class QCloudSms(object):
 
 
     def voice(self, mobiles, model, type = 'register'):
     def voice(self, mobiles, model, type = 'register'):
         # 语音验证码请求
         # 语音验证码请求
-        response = ResponseObject()
         vvcsender = SmsVoiceVerifyCodeSender(appid = self.appid, appkey = self.appkey)
         vvcsender = SmsVoiceVerifyCodeSender(appid = self.appid, appkey = self.appkey)
         try:
         try:
             result = vvcsender.send(nation_code=self.nationcode, phone_number = \
             result = vvcsender.send(nation_code=self.nationcode, phone_number = \
@@ -286,11 +311,11 @@ class QCloudSms(object):
         except HTTPError as e:
         except HTTPError as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('发送手机验证码出现网络错误: %s' % errorInfo)
             print('发送手机验证码出现网络错误: %s' % errorInfo)
-            return response.formal(1022,repr(e))
+            return ResponseFormal(1022,repr(e))
         except Exception as e:
         except Exception as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('发送手机语音验证码错误: %s' % errorInfo)
             print('发送手机语音验证码错误: %s' % errorInfo)
-            return response.formal(1023,repr(e))
+            return ResponseFormal(1023,repr(e))
         else:
         else:
             resultCode = result.get('result', None)
             resultCode = result.get('result', None)
             if resultCode == 0:
             if resultCode == 0:
@@ -323,6 +348,25 @@ class QCloudSms(object):
                 errorJSON = json.dumps(result, ensure_ascii=False)
                 errorJSON = json.dumps(result, ensure_ascii=False)
                 return errorJSON
                 return errorJSON
 
 
+def upload_file(request):
+    """
+    文件接收
+    :param request: 请求
+    :return:
+    """
+    if request.method == "POST":    # 请求方法为POST时,进行处理
+        upFile =request.FILES.get("upfile", None)    # 获取上传的文件,如果没有文件,则默认为None
+        if not upFile:
+            return HttpResponse("no files for upload!")
+
+        else:
+            upgradePath = os.path.join(MEDIA_URL, '/Upgrade/IPC/')
+            destination = open(os.path.join(upgradePath, upFile.name), 'wb+')    # 打开特定的文件进行二进制的写操作
+            for chunk in upFile.chunks():      # 分块写入文件
+                destination.write(chunk)
+            destination.close()
+            return HttpResponse("upload over!")
+
 @csrf_exempt
 @csrf_exempt
 def download_file(request, Upgradename, *callback_args, **callback_kwargs):
 def download_file(request, Upgradename, *callback_args, **callback_kwargs):
     """
     """
@@ -340,13 +384,14 @@ def download_file(request, Upgradename, *callback_args, **callback_kwargs):
     # 打印dict类型的不定长参数 args
     # 打印dict类型的不定长参数 args
     for key in callback_kwargs:
     for key in callback_kwargs:
         print("dictargs:" + key + ":" + bytes(callback_kwargs[key]))
         print("dictargs:" + key + ":" + bytes(callback_kwargs[key]))
+    #received_json_data = json.loads(request.body)
     print(request.body)
     print(request.body)
     file_name = os.path.join(BASE_DIR, "static/Upgrade/DVR/").replace('\\', '/') + Upgradename
     file_name = os.path.join(BASE_DIR, "static/Upgrade/DVR/").replace('\\', '/') + Upgradename
-    response = ResponseObject()
+
     if os.path.isfile(file_name):
     if os.path.isfile(file_name):
         try:
         try:
             print(file_name)
             print(file_name)
-            JSON = response.formal(0)
+            JSON = ResponseFormal(0)
             wrapper = FileWrapper(open(file_name, 'rb'))
             wrapper = FileWrapper(open(file_name, 'rb'))
             response = HttpResponse(wrapper, content_type="application/octet-stream")
             response = HttpResponse(wrapper, content_type="application/octet-stream")
             response['Content-Length'] = os.path.getsize(file_name)
             response['Content-Length'] = os.path.getsize(file_name)
@@ -354,12 +399,12 @@ def download_file(request, Upgradename, *callback_args, **callback_kwargs):
             response['Content-Error'] = JSON
             response['Content-Error'] = JSON
             return response
             return response
         except Exception as e:
         except Exception as e:
-            errorJSON = response.formal(10,'Wrong reason:' + repr(e))
+            errorJSON = ResponseFormal(10,'Wrong reason:' + repr(e))
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response['Content-Error'] = errorJSON
             response['Content-Error'] = errorJSON
             return response
             return response
     else:
     else:
-        errorJSON = response.formal(907)
+        errorJSON = ResponseFormal(907)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         response['Content-Error'] = errorJSON
         return response
         return response

+ 23 - 23
Controller/DeviceLog.py

@@ -12,18 +12,13 @@
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
 import datetime
 import datetime
-
-import simplejson as json
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
-
 from Model.models import Device_Info
 from Model.models import Device_Info
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
 from Object.mongodb import mongodb
 from Object.mongodb import mongodb
-from Service.CommonService import CommonService
-from Service.DeviceOperation import DeviceOperation
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
-
+from Service.DeviceOperation import DeviceOperation
+from Service.ResponseService import *
 '''
 '''
 curl http://192.168.136.45:8077/devices/C2887N9EBS87ZAT1111A/logs -d "deviceData={\"UID\":\"C2887N9EBS87ZAT1111A\",\"type\":\"0x10014\",\"UserIP\":\"127.0.0.1\",\"time\":1529474865,\"name\":\"admin\"}"
 curl http://192.168.136.45:8077/devices/C2887N9EBS87ZAT1111A/logs -d "deviceData={\"UID\":\"C2887N9EBS87ZAT1111A\",\"type\":\"0x10014\",\"UserIP\":\"127.0.0.1\",\"time\":1529474865,\"name\":\"admin\"}"
 http://192.168.136.40:8077/devices/2N1K3LE78TYJ38CE111A/logs?type=All&starttime=1529462169&endtime=1529462169
 http://192.168.136.40:8077/devices/2N1K3LE78TYJ38CE111A/logs?type=All&starttime=1529462169&endtime=1529462169
@@ -33,7 +28,6 @@ http://192.168.136.40:8077/devices/2N1K3LE78TYJ38CE111A/logs?type=All&starttime=
 @csrf_exempt
 @csrf_exempt
 def DeviceLog(request, uid):
 def DeviceLog(request, uid):
     # 存储设备日志
     # 存储设备日志
-    response = ResponseObject()
     if request.method == 'POST':
     if request.method == 'POST':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         deviceData = request.POST.get('deviceData', None)
         deviceData = request.POST.get('deviceData', None)
@@ -44,13 +38,14 @@ def DeviceLog(request, uid):
                 mdb = mongodb()
                 mdb = mongodb()
                 data['et'] = datetime.datetime.utcnow()
                 data['et'] = datetime.datetime.utcnow()
                 col = "log_device_operation"
                 col = "log_device_operation"
-                mdb.insert_one(col=col, data=data)
-                return response.json(0)
+                id = mdb.insert_one(col=col, data=data)
+                return ResponseJSON(0)
+                # qs = mdb.findAll(col=col, page=1, line=10)
             except Exception as e:
             except Exception as e:
                 print(repr(e))
                 print(repr(e))
-                return response.json(48,repr(e))
+                return ResponseJSON(48,repr(e))
         else:
         else:
-            return response.json(13)
+            return ResponseJSON(13)
     # 查找设备日志
     # 查找设备日志
     if request.method == 'GET':
     if request.method == 'GET':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
@@ -62,11 +57,10 @@ def DeviceLog(request, uid):
         starttime = request.GET.get('starttime', None)
         starttime = request.GET.get('starttime', None)
         endtime = request.GET.get('endtime', None)
         endtime = request.GET.get('endtime', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 if page is None and line is None:
                 if page is None and line is None:
                     page = 1
                     page = 1
                     line = 10000
                     line = 10000
@@ -85,6 +79,8 @@ def DeviceLog(request, uid):
                             except Exception as e:
                             except Exception as e:
                                 if type is not None:
                                 if type is not None:
                                     query['type'] = type
                                     query['type'] = type
+                        # if starttime is not None and endtime is not None and starttime != '' and endtime != '':
+                        #     query['time'] = {'$gte': int(starttime), '$lte': int(endtime)}
                         if starttime is not None and starttime != '' and endtime is not None and endtime != '':
                         if starttime is not None and starttime != '' and endtime is not None and endtime != '':
                             query['time'] = {'$gte': int(starttime), '$lte': int(endtime)}
                             query['time'] = {'$gte': int(starttime), '$lte': int(endtime)}
                         elif starttime is not None and starttime != '':
                         elif starttime is not None and starttime != '':
@@ -96,6 +92,10 @@ def DeviceLog(request, uid):
                         print('___________query____________')
                         print('___________query____________')
                         mdb = mongodb()
                         mdb = mongodb()
                         col = "log_device_operation"
                         col = "log_device_operation"
+                        # if int(page) < 0:
+                        #     count = mdb.cout(col=col,query=query)
+                        #     total = math.ceil(count/int(line))
+                        #     page = int(total)+int(page)+1
                         qs = mdb.findAll(col=col, page=int(page), line=int(line), query=query)
                         qs = mdb.findAll(col=col, page=int(page), line=int(line), query=query)
                         if qs is not False:
                         if qs is not False:
                             data_list = []
                             data_list = []
@@ -103,11 +103,11 @@ def DeviceLog(request, uid):
                                 i['type'] = DeviceOperation.getOperation(type=i['type'])
                                 i['type'] = DeviceOperation.getOperation(type=i['type'])
                                 data_list.append(i)
                                 data_list.append(i)
                             qs['data'] = data_list
                             qs['data'] = data_list
-                        return response.json(0,qs)
+                        return ResponseJSON(0,qs)
                 else:
                 else:
-                    return response.json(404)
-                return response.json(444)
+                    return ResponseJSON(404)
+                return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)

+ 43 - 44
Controller/DeviceManage.py

@@ -11,11 +11,12 @@
 @file: DeviceManage.py
 @file: DeviceManage.py
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
+from django.shortcuts import HttpResponse
 from django.views.generic.base import View
 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.ResponseService import *
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Device_Info
 from Model.models import Device_Info
@@ -45,41 +46,40 @@ class DeviceManage(View):
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
         operation = request_dict.get('operation', None)
         operation = request_dict.get('operation', None)
-        response = ResponseObject()
         if operation is not None:
         if operation is not None:
             token = request_dict.get('token', None)
             token = request_dict.get('token', None)
             if token is not None:
             if token is not None:
-                tko = TokenObject(token)
-                tko.valid()
-                response.lang = tko.lang
-                if tko.code == 0:
-                    userID = tko.userID()
+                tokenManager = JSONTokenManager()
+                error_code = tokenManager.verify_AToken(token)
+                if error_code == 0:
+                    userID = tokenManager.accessDict.get('userID', None)
                     if userID is not None:
                     if userID is not None:
                         if operation == 'query':
                         if operation == 'query':
-                            return self.query(request_dict, userID, response)
+                            return self.query(request_dict=request_dict, userID=userID)
                         elif operation == 'findByUser':
                         elif operation == 'findByUser':
-                            return self.findByUser(request_dict, userID,response)
+                            return self.findByUser(request_dict=request_dict, userID=userID)
                         elif operation == 'delete':
                         elif operation == 'delete':
-                            return self.delete(request_dict, userID, response)
-                    return response.json(444,'operation')
+                            return self.delete(request_dict=request_dict, userID=userID)
+                    return ResponseJSON(444)
                 else:
                 else:
-                    return response.json(tko.code)
+                    return HttpResponse(tokenManager.errorCodeInfo(error_code))
             else:
             else:
-                return response.json(311)
+                return ResponseJSON(311)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def query(self, request_dict, userID, response):
+    def query(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             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))
-            if page is not None and line is not None:
+            param_flag = CommonService.get_param_flag(data=[page, line])
+            if param_flag is True:
                 queryset = Device_Info.objects.all()
                 queryset = Device_Info.objects.all()
                 if queryset.exists():
                 if queryset.exists():
                     count = queryset.count()
                     count = queryset.count()
                     res = queryset[(page - 1) * line:page * line]
                     res = queryset[(page - 1) * line:page * line]
-                    send_dict = CommonService.qs_to_dict(res)
+                    send_dict = CommonService.query_set_to_dict(res)
                     for k, v in enumerate(send_dict["datas"]):
                     for k, v in enumerate(send_dict["datas"]):
                         for val in res:
                         for val in res:
                             if v['pk'] == val.id:
                             if v['pk'] == val.id:
@@ -94,33 +94,34 @@ class DeviceManage(View):
                                 primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
                                 primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
                                 send_dict["datas"][k]['fields']['primaryusername']=primary
                                 send_dict["datas"][k]['fields']['primaryusername']=primary
                     send_dict['count'] = count
                     send_dict['count'] = count
-                    return response.json(0, send_dict)
-                return response.json(0,{'count':0})
+                    return ResponseJSON(0, send_dict)
+                return ResponseJSON(0,{'count':0})
             else:
             else:
-                return response.json(444,'page,line')
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def delete(self, request_dict, userID, response):
+    def delete(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         if own_perm is True:
         if own_perm is True:
             id_list = request_dict.getlist('id', None)
             id_list = request_dict.getlist('id', None)
-            if id_list:
+            param_flag = CommonService.get_param_flag(data=[id_list])
+            if param_flag is True:
                 try:
                 try:
                     for id in id_list:
                     for id in id_list:
                         Device_Info.objects.filter(id=id).delete()
                         Device_Info.objects.filter(id=id).delete()
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
+                    return ResponseJSON(424, {'details': repr(e)})
                 else:
                 else:
-                    return response.json(0)
+                    return ResponseJSON(0)
             else:
             else:
-                return response.json(444,'id must list')
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def findByUser(self, request_dict, userID, response):
+    def findByUser(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             page = int(request_dict.get('page', None))
             page = int(request_dict.get('page', None))
@@ -134,7 +135,7 @@ class DeviceManage(View):
                 if queryset.exists():
                 if queryset.exists():
                     count = queryset.count()
                     count = queryset.count()
                     res = queryset[(page - 1) * line:page * line]
                     res = queryset[(page - 1) * line:page * line]
-                    send_dict = CommonService.qs_to_dict(res)
+                    send_dict = CommonService.query_set_to_dict(res)
                     for k, v in enumerate(send_dict["datas"]):
                     for k, v in enumerate(send_dict["datas"]):
                         for val in res:
                         for val in res:
                             if v['pk'] == val.id:
                             if v['pk'] == val.id:
@@ -147,12 +148,12 @@ class DeviceManage(View):
                                 primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
                                 primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
                                 send_dict["datas"][k]['fields']['primaryusername']=primary
                                 send_dict["datas"][k]['fields']['primaryusername']=primary
                     send_dict['count'] = count
                     send_dict['count'] = count
-                    return response.json(0, send_dict)
-                return response.json(0,{'count':0})
+                    return ResponseJSON(0, send_dict)
+                return ResponseJSON(0,{'count':0})
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
 
 
 @csrf_exempt
 @csrf_exempt
@@ -161,17 +162,15 @@ def Devices(request, UID):
     if request.method == 'GET':
     if request.method == 'GET':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         token = request.GET.get('token', None)
         token = request.GET.get('token', None)
-        response = ResponseObject()
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 res = Device_Info.objects.filter(userID_id=userID,UID=UID)
                 res = Device_Info.objects.filter(userID_id=userID,UID=UID)
-                send_dict = CommonService.qs_to_dict(res)
-                return response.json(0, send_dict)
+                send_dict = CommonService.query_set_to_dict(res)
+                return ResponseJSON(0, send_dict)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)

+ 67 - 66
Controller/DeviceMeal.py

@@ -14,13 +14,13 @@
 from django.views.generic.base import View
 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.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Device_Meal, Store_Meal
 from Model.models import Device_Meal, Store_Meal
 import traceback, datetime
 import traceback, datetime
 from django.utils import timezone
 from django.utils import timezone
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
+from Service.ResponseService import *
 
 
 '''
 '''
 http://192.168.136.40:8077/device/meal?operation=add&token=test&uid=UKPAH63V23U4ZHEB111A&channel=1&rank=2&days=1
 http://192.168.136.40:8077/device/meal?operation=add&token=test&uid=UKPAH63V23U4ZHEB111A&channel=1&rank=2&days=1
@@ -49,43 +49,42 @@ class DeviceMeal(View):
         return self.validation(request_dict=request.POST)
         return self.validation(request_dict=request.POST)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
         operation = request_dict.get('operation', None)
         operation = request_dict.get('operation', None)
         if operation is not None:
         if operation is not None:
             token = request_dict.get('token', None)
             token = request_dict.get('token', None)
             if token is not None:
             if token is not None:
-                tko = TokenObject(token)
-                tko.valid()
-                response.lang = tko.lang
-                if tko.code == 0:
-                    userID = tko.userID()
-                    if userID is not None:
+                tokenManager = JSONTokenManager()
+                error_code = tokenManager.verify_AToken(token)
+                if error_code == 0:
+                    userID = tokenManager.accessDict.get('userID', None)
+                    param_flag = CommonService.get_param_flag(data=[userID])
+                    if param_flag is True:
                         if operation == 'query':
                         if operation == 'query':
-                            return self.query(request_dict, userID, response)
+                            return self.query(request_dict=request_dict, userID=userID)
                         elif operation == 'add':
                         elif operation == 'add':
-                            return self.add(request_dict, userID, response)
+                            return self.add(request_dict=request_dict, userID=userID)
                         elif operation == 'update':
                         elif operation == 'update':
-                            return self.update(request_dict, userID, response)
+                            return self.update(request_dict=request_dict, userID=userID)
                         elif operation == 'delete':
                         elif operation == 'delete':
-                            return self.delete(request_dict, userID, response)
+                            return self.delete(request_dict=request_dict, userID=userID)
                         # 用户付费成功调用
                         # 用户付费成功调用
                         elif operation == 'addbyuser':
                         elif operation == 'addbyuser':
-                            return self.addbyuser(request_dict, userID, response)
+                            return self.addbyuser(request_dict=request_dict, userID=userID)
                         elif operation == 'querybyuser':
                         elif operation == 'querybyuser':
-                            return self.querybyuser(request_dict, userID, response)
+                            return self.querybyuser(request_dict=request_dict, userID=userID)
                         elif operation == 'updatebyuser':
                         elif operation == 'updatebyuser':
-                            return self.updatebyuser(request_dict, userID, response)
+                            return self.updatebyuser(request_dict=request_dict, userID=userID)
                         elif operation == 'updatestatusbyuser':
                         elif operation == 'updatestatusbyuser':
-                            return self.updatestatusbyuser(request_dict, userID, response)
-                    return response.json(444, 'userID,operation')
+                            return self.updatestatusbyuser(request_dict=request_dict, userID=userID)
+                    return ResponseJSON(444)
                 else:
                 else:
-                    return response.json(tko.code)
+                    return HttpResponse(tokenManager.errorCodeInfo(error_code))
             else:
             else:
-                return response.json(311)
+                return ResponseJSON(311)
         else:
         else:
-            return response.json(444, 'operation')
+            return ResponseJSON(444)
 
 
-    def add(self, request_dict, userID,response):
+    def add(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=40)
         own_perm = ModelService.check_permission(userID=userID, permID=40)
         if own_perm is True:
         if own_perm is True:
             uid = request_dict.get('uid', None)
             uid = request_dict.get('uid', None)
@@ -95,7 +94,7 @@ class DeviceMeal(View):
             if param_flag is True:
             if param_flag is True:
                 is_exist = Device_Meal.objects.filter(uid=uid, channel=channel)
                 is_exist = Device_Meal.objects.filter(uid=uid, channel=channel)
                 if is_exist.exists():
                 if is_exist.exists():
-                    return response.json(54)
+                    return ResponseJSON(54)
                 else:
                 else:
                     try:
                     try:
                         store_meal = Store_Meal.objects.get(id=rank)
                         store_meal = Store_Meal.objects.get(id=rank)
@@ -111,10 +110,10 @@ class DeviceMeal(View):
                         )
                         )
                         device_meal.save()
                         device_meal.save()
                     except Exception as e:
                     except Exception as e:
-                        return response.json(500, {'details': repr(e)})
+                        return ResponseJSON(500, {'details': repr(e)})
                     else:
                     else:
                         if device_meal.id:
                         if device_meal.id:
-                            return response.json(0, {'id': device_meal.id,
+                            return ResponseJSON(0, {'id': device_meal.id,
                                                     'status': device_meal.status,
                                                     'status': device_meal.status,
                                                     'uid': device_meal.uid,
                                                     'uid': device_meal.uid,
                                                     'rank': rank,
                                                     'rank': rank,
@@ -122,11 +121,11 @@ class DeviceMeal(View):
                                                     'add_time': str(device_meal.add_time),
                                                     'add_time': str(device_meal.add_time),
                                                     'update_time': str(device_meal.update_time),
                                                     'update_time': str(device_meal.update_time),
                                                     'end_time': str(device_meal.end_time)})
                                                     'end_time': str(device_meal.end_time)})
-            return response.json(444)
+            return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def query(self, request_dict, userID,response):
+    def query(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             page = int(request_dict.get('page', None))
             page = int(request_dict.get('page', None))
@@ -137,21 +136,21 @@ class DeviceMeal(View):
                 if queryset.exists():
                 if queryset.exists():
                     count = queryset.count()
                     count = queryset.count()
                     res = queryset[(page - 1) * line:page * line]
                     res = queryset[(page - 1) * line:page * line]
-                    send_dict = CommonService.qs_to_dict(res)
+                    send_dict = CommonService.query_set_to_dict(res)
                     for k, v in enumerate(send_dict["datas"]):
                     for k, v in enumerate(send_dict["datas"]):
                         for val in res:
                         for val in res:
                             if v['pk'] == val.id:
                             if v['pk'] == val.id:
                                 title = Store_Meal.objects.get(id=v['fields']['rank']).title
                                 title = Store_Meal.objects.get(id=v['fields']['rank']).title
                                 send_dict["datas"][k]['fields']['title'] = title
                                 send_dict["datas"][k]['fields']['title'] = title
                     send_dict['count'] = count
                     send_dict['count'] = count
-                    return response.json(0, send_dict)
-                return response.json(0)
+                    return ResponseJSON(0, send_dict)
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def update(self, request_dict, userID,response):
+    def update(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             id = request_dict.get('id', None)
             id = request_dict.get('id', None)
@@ -159,6 +158,7 @@ class DeviceMeal(View):
             uid = request_dict.get('uid', None)
             uid = request_dict.get('uid', None)
             channel = request_dict.get('channel', None)
             channel = request_dict.get('channel', None)
             rank = request_dict.get('rank', None)
             rank = request_dict.get('rank', None)
+            # days = request_dict.get('days', None)
             param_flag = CommonService.get_param_flag(data=[status, uid, channel, rank, id])
             param_flag = CommonService.get_param_flag(data=[status, uid, channel, rank, id])
             if param_flag is True:
             if param_flag is True:
                 try:
                 try:
@@ -173,7 +173,7 @@ class DeviceMeal(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
+                    return ResponseJSON(424, {'details': repr(e)})
                 else:
                 else:
                     if device_meal.id:
                     if device_meal.id:
                         device_meal.status = status
                         device_meal.status = status
@@ -182,15 +182,15 @@ class DeviceMeal(View):
                         device_meal.end_time = end_time
                         device_meal.end_time = end_time
                         device_meal.rank = store_meal
                         device_meal.rank = store_meal
                         device_meal.save()
                         device_meal.save()
-                        return response.json(0, {'update_id': device_meal.id,
+                        return ResponseJSON(0, {'update_id': device_meal.id,
                                                 'update_time': str(now_time),
                                                 'update_time': str(now_time),
                                                 'end_time': str(end_time)})
                                                 'end_time': str(end_time)})
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def delete(self, request_dict, userID,response):
+    def delete(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         if own_perm is True:
         if own_perm is True:
             id_list = request_dict.getlist('id', None)
             id_list = request_dict.getlist('id', None)
@@ -202,15 +202,15 @@ class DeviceMeal(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
+                    return ResponseJSON(424, {'details': repr(e)})
                 else:
                 else:
-                    return response.json(0)
+                    return ResponseJSON(0)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def addbyuser(self, request_dict, userID, response):
+    def addbyuser(self, request_dict, userID):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         rank = request_dict.get('rank', None)
         rank = request_dict.get('rank', None)
@@ -220,7 +220,7 @@ class DeviceMeal(View):
             if own_dev is True:
             if own_dev is True:
                 is_exist = Device_Meal.objects.filter(uid=uid, channel=channel)
                 is_exist = Device_Meal.objects.filter(uid=uid, channel=channel)
                 if is_exist.exists():
                 if is_exist.exists():
-                    return response.json(54)
+                    return ResponseJSON(54)
                 else:
                 else:
                     try:
                     try:
                         store_meal = Store_Meal.objects.get(id=rank)
                         store_meal = Store_Meal.objects.get(id=rank)
@@ -236,10 +236,10 @@ class DeviceMeal(View):
                         )
                         )
                         device_meal.save()
                         device_meal.save()
                     except Exception as e:
                     except Exception as e:
-                        return response.json(500, {'details': repr(e)})
+                        return ResponseJSON(500, {'details': repr(e)})
                     else:
                     else:
                         if device_meal.id:
                         if device_meal.id:
-                            return response.json(0,
+                            return ResponseJSON(0,
                                                 {
                                                 {
                                                     'id': device_meal.id,
                                                     'id': device_meal.id,
                                                     'status': device_meal.status,
                                                     'status': device_meal.status,
@@ -251,11 +251,11 @@ class DeviceMeal(View):
                                                     'end_time': str(device_meal.end_time),
                                                     'end_time': str(device_meal.end_time),
                                                 })
                                                 })
             else:
             else:
-                return response.json(14)
-        return response.json(444)
+                return ResponseJSON(14)
+        return ResponseJSON(444)
 
 
     # 查询设备是否开通
     # 查询设备是否开通
-    def querybyuser(self, request_dict, userID,response):
+    def querybyuser(self, request_dict, userID):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         param_flag = CommonService.get_param_flag(data=[uid, channel])
         param_flag = CommonService.get_param_flag(data=[uid, channel])
@@ -264,20 +264,20 @@ class DeviceMeal(View):
             if own_dev is True:
             if own_dev is True:
                 queryset = Device_Meal.objects.filter(uid=uid, channel=channel)
                 queryset = Device_Meal.objects.filter(uid=uid, channel=channel)
                 if queryset.exists():
                 if queryset.exists():
-                    send_dict = CommonService.qs_to_dict(queryset)
+                    send_dict = CommonService.query_set_to_dict(queryset)
                     for k, v in enumerate(send_dict["datas"]):
                     for k, v in enumerate(send_dict["datas"]):
                         for val in queryset:
                         for val in queryset:
                             if v['pk'] == val.id:
                             if v['pk'] == val.id:
                                 title = Store_Meal.objects.get(id=v['fields']['rank']).title
                                 title = Store_Meal.objects.get(id=v['fields']['rank']).title
                                 send_dict["datas"][k]['fields']['title'] = title
                                 send_dict["datas"][k]['fields']['title'] = title
-                    return response.json(0, send_dict)
-                return response.json(0)
+                    return ResponseJSON(0, send_dict)
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(14)
+                return ResponseJSON(14)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def updatebyuser(self, request_dict, userID,response):
+    def updatebyuser(self, request_dict, userID):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         rank = request_dict.get('rank', None)
         rank = request_dict.get('rank', None)
@@ -297,7 +297,7 @@ class DeviceMeal(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
+                    return ResponseJSON(424, {'details': repr(e)})
                 else:
                 else:
                     if device_meal.id:
                     if device_meal.id:
                         device_meal.uid = uid
                         device_meal.uid = uid
@@ -305,19 +305,20 @@ class DeviceMeal(View):
                         device_meal.end_time = end_time
                         device_meal.end_time = end_time
                         device_meal.rank = store_meal
                         device_meal.rank = store_meal
                         device_meal.save()
                         device_meal.save()
-                        return response.json(0, {'update_id': device_meal.id,
+                        return ResponseJSON(0, {'update_id': device_meal.id,
                                                 'update_time': str(now_time),
                                                 'update_time': str(now_time),
                                                 'end_time': str(end_time)})
                                                 'end_time': str(end_time)})
             else:
             else:
-                return response.json(14)
+                return ResponseJSON(14)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def updatestatusbyuser(self, request_dict, userID,response):
+    def updatestatusbyuser(self, request_dict, userID):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         status = request_dict.get('status', None)
         status = request_dict.get('status', None)
-        if uid is not None and channel is not None:
+        param_flag = CommonService.get_param_flag(data=[uid, channel, id])
+        if param_flag is True:
             own_dev = ModelService.check_own_device(userID=userID, UID=uid)
             own_dev = ModelService.check_own_device(userID=userID, UID=uid)
             if own_dev is True:
             if own_dev is True:
                 try:
                 try:
@@ -325,15 +326,15 @@ class DeviceMeal(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
+                    return ResponseJSON(424, {'details': repr(e)})
                 else:
                 else:
                     if device_meal.id:
                     if device_meal.id:
                         device_meal.status = status
                         device_meal.status = status
                         device_meal.save()
                         device_meal.save()
                         now_time = timezone.localtime(timezone.now())
                         now_time = timezone.localtime(timezone.now())
-                        return response.json(0, {'update_id': device_meal.id,
+                        return ResponseJSON(0, {'update_id': device_meal.id,
                                                 'update_time': str(now_time)})
                                                 'update_time': str(now_time)})
             else:
             else:
-                return response.json(14)
+                return ResponseJSON(14)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)

+ 69 - 71
Controller/EquipmentInfo.py

@@ -1,16 +1,18 @@
+from django.shortcuts import HttpResponse
 from django.views.generic.base import View
 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.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Equipment_Info, Device_Info
 from Model.models import Equipment_Info, Device_Info
 import traceback
 import traceback
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
+from Service.ResponseService import ResponseJSON
+
 '''
 '''
 http://192.168.136.45:8077/equipment/info?token=test&devUid=2N1K3LE78TYJ38CE111A&Channel=0&eventType=1&eventTime=1234567890&operation=add&alarm=21342134&receiveTime=1234567891234567
 http://192.168.136.45:8077/equipment/info?token=test&devUid=2N1K3LE78TYJ38CE111A&Channel=0&eventType=1&eventTime=1234567890&operation=add&alarm=21342134&receiveTime=1234567891234567
 http://192.168.136.45:8077/equipment/info?token=test&operation=query&page=1&line=10
 http://192.168.136.45:8077/equipment/info?token=test&operation=query&page=1&line=10
-http://192.168.136.45:8077/equipment/info?token=test&operation=delete&devUid=UKPAH63V23U4ZHEB111A&id=5&id=6&id=7
+http://192.168.136.45:8077/equipment/info?token=test&operation      =delete&devUid=UKPAH63V23U4ZHEB111A&id=5&id=6&id=7
 http://192.168.136.40:8077/equipment/info?token=test&operation=update&devUid=UKPAH63V23U4ZHEB111A&id=3&id=4
 http://192.168.136.40:8077/equipment/info?token=test&operation=update&devUid=UKPAH63V23U4ZHEB111A&id=3&id=4
 http://192.168.136.45:8077/equipment/info?token=test&operation=queryByAdmin&page=1&line=10&userID_id=151547867345163613800138001
 http://192.168.136.45:8077/equipment/info?token=test&operation=queryByAdmin&page=1&line=10&userID_id=151547867345163613800138001
 http://192.168.136.45:8077/equipment/info?token=test&operation=deleteByAdmin&id=5&id=6&id=7
 http://192.168.136.45:8077/equipment/info?token=test&operation=deleteByAdmin&id=5&id=6&id=7
@@ -33,38 +35,35 @@ class EquipmentInfo(View):
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
-        response = ResponseObject()
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            from var_dump import var_dump
-            var_dump(tko.lang)
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 operation = request_dict.get('operation', None)
                 operation = request_dict.get('operation', None)
-                if userID is not None and operation is not None:
+                param_flag = CommonService.get_param_flag(data=[userID, operation])
+                if param_flag is True:
                     if operation == 'query':
                     if operation == 'query':
-                        return self.query_info(request_dict, userID, response)
+                        return self.query_info(request_dict=request_dict, userID=userID)
                     elif operation == 'add':
                     elif operation == 'add':
-                        return self.add_info(request_dict, userID, response)
+                        return self.add_info(request_dict=request_dict, userID=userID)
                     elif operation == 'update':
                     elif operation == 'update':
-                        return self.update_info(request_dict, userID, response)
+                        return self.update_info(request_dict=request_dict, userID=userID)
                     elif operation == 'delete':
                     elif operation == 'delete':
-                        return self.delete_info(request_dict, userID, response)
+                        return self.delete_info(request_dict=request_dict, userID=userID)
                     elif operation == 'findByTime':
                     elif operation == 'findByTime':
-                        return self.findByTime_info(request_dict, userID, response)
+                        return self.findByTime_info(request_dict=request_dict, userID=userID)
                     if operation == 'queryByAdmin':
                     if operation == 'queryByAdmin':
-                        return self.query_all_info(request_dict, userID, response)
+                        return self.query_all_info(request_dict=request_dict, userID=userID)
                     if operation == 'deleteByAdmin':
                     if operation == 'deleteByAdmin':
-                        return self.delete_by_admin(request_dict, userID, response)
-                return response.json(444,'operation')
+                        return self.delete_by_admin(request_dict=request_dict, userID=userID)
+                return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
-    def add_info(self, request_dict, userID,response):
+    def add_info(self, request_dict, userID):
         devUid = request_dict.get('devUid', None)
         devUid = request_dict.get('devUid', None)
         Channel = request_dict.get('Channel', None)
         Channel = request_dict.get('Channel', None)
         eventType = request_dict.get('eventType', None)
         eventType = request_dict.get('eventType', None)
@@ -80,12 +79,11 @@ class EquipmentInfo(View):
                 except Exception:
                 except Exception:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, errorInfo)
+                    return ResponseJSON(424, errorInfo)
                 else:
                 else:
                     if device_info.exists():
                     if device_info.exists():
                         try:
                         try:
                             equipment_info = Equipment_Info(
                             equipment_info = Equipment_Info(
-                                userID=userID,
                                 devUid=devUid,
                                 devUid=devUid,
                                 Channel=Channel,
                                 Channel=Channel,
                                 eventType=eventType,
                                 eventType=eventType,
@@ -100,10 +98,10 @@ class EquipmentInfo(View):
                         except Exception:
                         except Exception:
                             errorInfo = traceback.format_exc()
                             errorInfo = traceback.format_exc()
                             print(errorInfo)
                             print(errorInfo)
-                            return response.json(500, errorInfo)
+                            return ResponseJSON(500, errorInfo)
                         else:
                         else:
                             if equipment_info.id:
                             if equipment_info.id:
-                                return response.json(0, {'infoID': equipment_info.id,
+                                return ResponseJSON(0, {'infoID': equipment_info.id,
                                                         'devUid': devUid,
                                                         'devUid': devUid,
                                                         'Channel': Channel,
                                                         'Channel': Channel,
                                                         'alarm': alarm,
                                                         'alarm': alarm,
@@ -114,36 +112,36 @@ class EquipmentInfo(View):
                                                         'devNickName': equipment_info.devNickName,
                                                         'devNickName': equipment_info.devNickName,
                                                         'viewAccont': equipment_info.viewAccont})
                                                         'viewAccont': equipment_info.viewAccont})
                             else:
                             else:
-                                return response.json(500)
+                                return ResponseJSON(500)
                     else:
                     else:
-                        return response.json(14)
+                        return ResponseJSON(14)
             else:
             else:
-                return response.json(14)
-        return response.json(444)
+                return ResponseJSON(14)
+        return ResponseJSON(444)
 
 
-    def query_info(self, request_dict, userID,response):
+    def query_info(self, request_dict, userID):
         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])
         if param_flag is True:
         if param_flag is True:
-            equipment_info_queryset = Equipment_Info.objects.filter(userID_id=userID)
-            if equipment_info_queryset.exists():
-                equipment_info_count = equipment_info_queryset.count()
-                equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
-                send_json = CommonService.query_set_to_dict(equipment_info_res)
-                send_json['count'] = equipment_info_count
-                return response.json(0, send_json)
-            else:
+            try:
                 uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
                 uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
-                devNickName_list = Device_Info.objects.filter(userID_id=userID).values_list('NickName', flat=True)
-                if len(uid_list) and len(devNickName_list):
-                    Equipment_Info.objects.filter(devUid__in=uid_list, devNickName__in=devNickName_list).update(
-                        userID=userID)
-                return response.json(0, {'datas': [], 'count': 0})
+            except Exception:
+                pass
+            if len(uid_list):
+                equipment_info_queryset = Equipment_Info.objects.filter(devUid__in=uid_list).order_by(
+                    '-id')
+                if equipment_info_queryset.exists():
+                    equipment_info_count = equipment_info_queryset.count()
+                    equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
+                    send_json = CommonService.query_set_to_dict(equipment_info_res)
+                    send_json['count'] = equipment_info_count
+                    return ResponseJSON(0, send_json)
+            return ResponseJSON(0, {'datas': [], 'count': 0})
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def update_info(self, request_dict, userID, response):
+    def update_info(self, request_dict, userID):
         id_list = request_dict.getlist('id[]', None)
         id_list = request_dict.getlist('id[]', None)
         if id_list is None or len(id_list) < 1:
         if id_list is None or len(id_list) < 1:
             id_list = request_dict.getlist('id', None)
             id_list = request_dict.getlist('id', None)
@@ -157,11 +155,11 @@ class EquipmentInfo(View):
                     if own_dev is True:
                     if own_dev is True:
                         count += 1
                         count += 1
                         eq.update(status=1)
                         eq.update(status=1)
-            return response.json(0,{'update_success': count})
+            return ResponseJSON(0,{'update_success': count})
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def delete_info(self, request_dict, userID, response):
+    def delete_info(self, request_dict, userID):
         id_list = request_dict.getlist('id[]', None)
         id_list = request_dict.getlist('id[]', None)
         if id_list is None or len(id_list) < 1:
         if id_list is None or len(id_list) < 1:
             id_list = request_dict.getlist('id', None)
             id_list = request_dict.getlist('id', None)
@@ -177,13 +175,13 @@ class EquipmentInfo(View):
             except Exception as e:
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 errorInfo = traceback.format_exc()
                 print(errorInfo)
                 print(errorInfo)
-                return response.json(424,repr(e))
+                return ResponseJSON(424,repr(e))
             else:
             else:
-                return response.json(0)
+                return ResponseJSON(0)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def findByTime_info(self, request_dict, userID,response):
+    def findByTime_info(self, request_dict, userID):
         startTime = request_dict.get('startTime')
         startTime = request_dict.get('startTime')
         endTime = request_dict.get('endTime')
         endTime = request_dict.get('endTime')
         page = int(request_dict.get('page', None))
         page = int(request_dict.get('page', None))
@@ -192,20 +190,20 @@ class EquipmentInfo(View):
         if param_flag is True:
         if param_flag is True:
             uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
             uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
             if len(uid_list):
             if len(uid_list):
-                equipment_info_queryset = Equipment_Info.objects.filter(userID_id=userID,
+                equipment_info_queryset = Equipment_Info.objects.filter(devUid__in=uid_list,
                                                                         eventTime__range=(startTime, endTime)).order_by(
                                                                         eventTime__range=(startTime, endTime)).order_by(
                     '-id')
                     '-id')
                 if equipment_info_queryset.exists():
                 if equipment_info_queryset.exists():
                     equipment_info_count = equipment_info_queryset.count()
                     equipment_info_count = equipment_info_queryset.count()
                     equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
                     equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(equipment_info_res)
+                    send_json = CommonService.query_set_to_dict(equipment_info_res)
                     send_json['count'] = equipment_info_count
                     send_json['count'] = equipment_info_count
-                    return response.json(0,send_json)
-            return response.json(0,{'datas': [], 'count': 0})
+                    return ResponseJSON(0,send_json)
+            return ResponseJSON(0,{'datas': [], 'count': 0})
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def query_all_info(self, request_dict, userID,response):
+    def query_all_info(self, request_dict, userID):
         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))
         userID_id = request_dict.get('userID_id', None)
         userID_id = request_dict.get('userID_id', None)
@@ -215,21 +213,21 @@ class EquipmentInfo(View):
             if check_perm is True:
             if check_perm is True:
                 uid_list = Device_Info.objects.filter(userID_id=userID_id).values_list('UID', flat=True)
                 uid_list = Device_Info.objects.filter(userID_id=userID_id).values_list('UID', flat=True)
                 if len(uid_list):
                 if len(uid_list):
-                    equipment_info_queryset = Equipment_Info.objects.filter(userID_id=userID_id).order_by(
+                    equipment_info_queryset = Equipment_Info.objects.filter(devUid__in=uid_list).order_by(
                         '-id')
                         '-id')
                     if equipment_info_queryset.exists():
                     if equipment_info_queryset.exists():
                         equipment_info_count = equipment_info_queryset.count()
                         equipment_info_count = equipment_info_queryset.count()
                         equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
                         equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
-                        send_json = CommonService.qs_to_dict(equipment_info_res)
+                        send_json = CommonService.query_set_to_dict(equipment_info_res)
                         send_json['count'] = equipment_info_count
                         send_json['count'] = equipment_info_count
-                        return response.json(0,send_json)
-                return response.json(0,{'datas': [], 'count': 0})
+                        return ResponseJSON(0,send_json)
+                return ResponseJSON(0,{'datas': [], 'count': 0})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def delete_by_admin(self, request_dict, userID,response):
+    def delete_by_admin(self, request_dict, userID):
         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:
@@ -240,10 +238,10 @@ class EquipmentInfo(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424,{'details': repr(e)})
+                    return ResponseJSON(424,{'details': repr(e)})
                 else:
                 else:
-                    return response.json(0,{'delete_count': is_delete[0]})
+                    return ResponseJSON(0,{'delete_count': is_delete[0]})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)

+ 211 - 170
Controller/EquipmentManager.py

@@ -1,136 +1,155 @@
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
 from django.core import serializers
 from django.core import serializers
 import traceback
 import traceback
+from Service.ResponseService import *
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Model.models import Device_User, Device_Info
 from Model.models import Device_User, Device_Info
+from Service.TokenManager import JSONTokenManager
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-import simplejson as json
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
 
 
 
 
-def addNewUserEquipment(userID, deviceContent, response):
-    userIDValid = Device_User.objects.filter(userID=userID)
+def queryUserEquipment(userID):
+    try:
+        deviceValid = Device_Info.objects.filter(userID_id = userID)
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('查询数据库错误: %s' % errorInfo)
+        return ResponseFormal(500, repr(e))
+    else:
+        if deviceValid:
+            sqlJSON = serializers.serialize('json', Device_Info.objects.filter(userID_id = userID))
+            sqlList = json.loads(sqlJSON)
+            sqlDict = dict(zip(["datas"], [sqlList]))
+            return ResponseFormal(0,sqlDict)
+        else:
+            UserValid = Device_User.objects.filter(userID=userID)
+            if UserValid:
+                return ResponseFormal(172)
+            else:
+                return ResponseFormal(113)
+
+def addNewUserEquipment(userID, deviceContent, bulk = False):
+    userIDValid = Device_User.objects.filter(userID = userID)
     if userIDValid:
     if userIDValid:
         try:
         try:
             try:
             try:
                 deviceData = json.loads(deviceContent)
                 deviceData = json.loads(deviceContent)
             except Exception as e:
             except Exception as e:
-                return response.json(803, repr(e))
+                return ResponseFormal(803,repr(e))
             else:
             else:
                 UID = deviceData.get('UID', None)
                 UID = deviceData.get('UID', None)
                 if UID != None:
                 if UID != None:
-                    is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
-                    if is_bind:
-                        return response.json(175)
-                    dValid = Device_Info.objects.filter(userID=userID, UID=UID)
+                    #is_bind = Device_Info.objects.filter(UID = UID,isShare=False)
+                    #if is_bind:
+                        #return ResponseFormal(175)
+                    dValid = Device_Info.objects.filter(userID = userID, UID = UID)
                     if dValid:
                     if dValid:
-                        return response.json(174)
+                        return ResponseFormal(174)
                     else:
                     else:
                         if 'NickName' in deviceData:
                         if 'NickName' in deviceData:
                             nValid = Device_Info.objects.filter(userID=userID, NickName=deviceData['NickName'])
                             nValid = Device_Info.objects.filter(userID=userID, NickName=deviceData['NickName'])
                             if nValid.exists():
                             if nValid.exists():
-                                return response.json(179)
-                        userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
-                                                 **deviceData)
+                                return ResponseJSON(179)
+                        userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID, **deviceData)
                         userDevice.save()
                         userDevice.save()
                 else:
                 else:
-                    return response.json(806)
+                    return ResponseFormal(806)
 
 
         except Exception as e:
         except Exception as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('添加设备错误: %s ' % errorInfo)
             print('添加设备错误: %s ' % errorInfo)
-            return response.json(178, repr(e))
+            return ResponseFormal(178,repr(e))
         else:
         else:
             sqlJSON = serializers.serialize('json', [userDevice])
             sqlJSON = serializers.serialize('json', [userDevice])
             sqlList = json.loads(sqlJSON)
             sqlList = json.loads(sqlJSON)
-            sqlDict = dict(zip(["datas"], [sqlList]))
-            return response.json(0, sqlDict)
+            sqlDict =dict(zip(["datas"], [sqlList]))
+            return ResponseFormal(0,sqlDict)
     else:
     else:
-        return response.json(113)
+        return ResponseFormal(113)
 
 
 
 
-def delUserEquipment(userID, id, response):
+def delUserEquipment(userID, id):
     try:
     try:
-        deviceValid = Device_Info.objects.filter(userID_id=userID, id=id)
+        deviceValid = Device_Info.objects.filter(userID_id = userID, id = id)
     except Exception as e:
     except Exception as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
         print('查询数据库错误: %s' % errorInfo)
-        return response.json(500, repr(e))
+        return ResponseFormal(500, repr(e))
     else:
     else:
         if deviceValid:
         if deviceValid:
             try:
             try:
-                Device_Info.objects.filter(userID_id=userID, id=id).delete()
+                Device_Info.objects.filter(userID_id = userID, id = id).delete()
             except Exception as e:
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 errorInfo = traceback.format_exc()
                 print('删除数据库记录错误: %s' % errorInfo)
                 print('删除数据库记录错误: %s' % errorInfo)
-                return response.json(176, repr(e))
+                return ResponseFormal(176,repr(e))
             else:
             else:
-                return response.json(0)
+                return ResponseFormal(0)
         else:
         else:
-            UserValid = Device_User.objects.filter(userID=userID)
-            if UserValid.exists():
-                return response.json(172)
+            UserValid = Device_User.objects.filter(userID = userID)
+            if UserValid:
+                return ResponseFormal(172)
             else:
             else:
-                return response.json(113)
+                return ResponseFormal(113)
 
 
-
-def modifyUserEquipment(userID, deviceContent, id, response):
+def modifyUserEquipment(userID, deviceContent, id):
     try:
     try:
-        deviceValid = Device_Info.objects.filter(userID_id=userID, id=id)
+        deviceValid = Device_Info.objects.filter(userID_id = userID, id = id)
     except Exception as e:
     except Exception as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
         print('查询数据库错误: %s' % errorInfo)
-        return response.json(500, repr(e))
+        return ResponseFormal(500, repr(e))
     else:
     else:
         if deviceValid:
         if deviceValid:
             deviceData = json.loads(deviceContent)
             deviceData = json.loads(deviceContent)
             try:
             try:
-                userDevice = Device_Info.objects.filter(userID_id=userID, id=id).update(**deviceData)
+                userDevice = Device_Info.objects.filter(userID_id = userID, id = id).update(**deviceData)
             except Exception as e:
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 errorInfo = traceback.format_exc()
                 print('修改设备信息错误: %s ' % errorInfo)
                 print('修改设备信息错误: %s ' % errorInfo)
-                return response.json(177, repr(e))
+                return ResponseFormal(177,repr(e))
             else:
             else:
-                qs = Device_Info.objects.filter(userID_id=userID, id=id)
-                res = CommonService.qs_to_dict(qs)
-                return response.json(0, res)
+                sqlJSON = serializers.serialize('json', Device_Info.objects.filter(userID_id = userID, id = id))
+                sqlList = json.loads(sqlJSON)
+                sqlDict = dict(zip(["datas"], [sqlList]))
+                return ResponseFormal(0,sqlDict)
         else:
         else:
             UserValid = Device_User.objects.filter(userID=userID)
             UserValid = Device_User.objects.filter(userID=userID)
-            if UserValid.exists():
-                return response.json(172)
+            if UserValid:
+                return ResponseFormal(172)
             else:
             else:
-                return response.json(113)
+                return ResponseFormal(113)
 
 
+def showAllUserEquipment(userID):
 
 
-def showAllUserEquipment(userID, response):
     try:
     try:
-        userValid = Device_User.objects.filter(userID=userID).order_by('-data_joined')
+        userValid = Device_User.objects.filter(userID = userID).order_by('-data_joined')
     except Exception as e:
     except Exception as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
         print('查询数据库错误: %s' % errorInfo)
-        return response.json(500, repr(e))
+        return ResponseFormal(500,repr(e))
 
 
     else:
     else:
-        if userValid.exists():
+        if userValid:
             # own_permission = ModelService.check_permission(userID=userID,permID=30)
             # own_permission = ModelService.check_permission(userID=userID,permID=30)
             if userValid[0].is_superuser != 100 and userValid[0].is_superuser != 1:
             if userValid[0].is_superuser != 100 and userValid[0].is_superuser != 1:
-                return response.json(604)
+                return ResponseFormal(604)
             else:
             else:
-                qs = Device_Info.objects.all()
-                res = CommonService.qs_to_dict(qs)
-                return response.json(0, res)
+                sqlJSON = serializers.serialize('json', Device_Info.objects.all())#.order_by('-data_joined'))
+                sqlList = json.loads(sqlJSON)
+                print(sqlList, sqlJSON)
+                sqlDict = dict(zip(["datas"], [sqlList]))
+                return ResponseFormal(0,sqlDict)
         else:
         else:
-            return response.json(113)
-
+            return ResponseFormal(113)
 
 
-def showAllUserEquipmentPC(userID, fieldDict, response):
+def showAllUserEquipmentPC(userID,fieldDict):
     try:
     try:
         user_valid = Device_User.objects.filter(userID=userID).order_by('-data_joined')
         user_valid = Device_User.objects.filter(userID=userID).order_by('-data_joined')
     except Exception as e:
     except Exception as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
         print('查询数据库错误: %s' % errorInfo)
-        return response.json(500, repr(e))
+        return ResponseJSON(500,repr(e))
     else:
     else:
         if user_valid:
         if user_valid:
             own_permission = ModelService.check_permission(userID=userID, permID=30)
             own_permission = ModelService.check_permission(userID=userID, permID=30)
@@ -140,27 +159,33 @@ def showAllUserEquipmentPC(userID, fieldDict, response):
                 device_info_query_set = Device_Info.objects.all()
                 device_info_query_set = Device_Info.objects.all()
                 device_info_count = device_info_query_set.count()
                 device_info_count = device_info_query_set.count()
                 device_info_res = device_info_query_set[(page - 1) * line:page * line]
                 device_info_res = device_info_query_set[(page - 1) * line:page * line]
-                sqlDict = CommonService.qs_to_dict(query_set=device_info_res)
+                sqlDict = CommonService.query_set_to_dict(query_set=device_info_res)
                 sqlDict['count'] = device_info_count
                 sqlDict['count'] = device_info_count
-                return response.json(0, sqlDict)
+                return ResponseJSON(0, sqlDict)
             else:
             else:
-                return response.json(604)
+                return ResponseJSON(604)
         else:
         else:
-            return response.json(113)
+            return ResponseJSON(113)
 
 
+def getKwargs(data={}):
+    kwargs = {}
+    for (k, v) in data.items():
+        if v is not None and v != u'':
+            kwargs[k+'__icontains'] = v
+    return kwargs
 
 
-def findEquipmentInfo(content, type, fieldDict):
-    if type == 1:
-        Device_Info_QuerySet = Device_Info.objects.all()
-    if type == 2:
-        searchCondition = content
-        kwargs = CommonService.get_kwargs(data=searchCondition)
-        Device_Info_QuerySet = Device_Info.objects.filter(**kwargs)
+def findEquipmentInfo(content,type,fieldDict):
+    if type ==1:
+        Device_Info_QuerySet=Device_Info.objects.all()
+    if type==2:
+        searchCondition=content
+        kwargs = getKwargs(data=searchCondition)
+        Device_Info_QuerySet=Device_Info.objects.filter(**kwargs)
     page = int(fieldDict['page'])
     page = int(fieldDict['page'])
     line = int(fieldDict['line'])
     line = int(fieldDict['line'])
     device_info_count = Device_Info_QuerySet.count()
     device_info_count = Device_Info_QuerySet.count()
     res = Device_Info_QuerySet[(page - 1) * line:page * line]
     res = Device_Info_QuerySet[(page - 1) * line:page * line]
-    send_dict = CommonService.qs_to_dict(query_set=res)
+    send_dict = CommonService.query_set_to_dict(query_set=res)
     for k, v in enumerate(send_dict["datas"]):
     for k, v in enumerate(send_dict["datas"]):
         for val in res:
         for val in res:
             if v['pk'] == val.id:
             if v['pk'] == val.id:
@@ -170,8 +195,6 @@ def findEquipmentInfo(content, type, fieldDict):
                 send_dict["datas"][k]['fields']['primaryusername'] = primary
                 send_dict["datas"][k]['fields']['primaryusername'] = primary
     send_dict['count'] = device_info_count
     send_dict['count'] = device_info_count
     return send_dict
     return send_dict
-
-
 @csrf_exempt
 @csrf_exempt
 def queryUserEquipmentInterface(request, *callback_args,
 def queryUserEquipmentInterface(request, *callback_args,
                                 **callback_kwargs):
                                 **callback_kwargs):
@@ -182,50 +205,56 @@ def queryUserEquipmentInterface(request, *callback_args,
     :param callback_kwargs:
     :param callback_kwargs:
     :return:
     :return:
     '''
     '''
-    response = ResponseObject()
+
     if request.method == 'POST':
     if request.method == 'POST':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         token = request.POST.get('token', None)
         token = request.POST.get('token', None)
+
+        if token is not None:
+            tM = JSONTokenManager()
+            error_code = tM.verify_AToken(token)
+            if error_code == 0:
+                userID = tM.accessDict.get('userID', None)
+                if userID:
+                    response = HttpResponse(queryUserEquipment(userID))
+                    return response
+                else:
+                    return ResponseJSON(310)
+            else:
+                response = HttpResponse(tM.errorCodeInfo(error_code))
+                return response
+        else:
+            return ResponseJSON(800)
+
     elif request.method == 'GET':
     elif request.method == 'GET':
         request.encoding = 'gb2312'
         request.encoding = 'gb2312'
         token = request.GET.get('token', None)
         token = request.GET.get('token', None)
-    else:
-        return response.json(801)
-    if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
-            if userID is not None:
-                try:
-                    deviceValid = Device_Info.objects.filter(userID_id=userID)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print('查询数据库错误: %s' % errorInfo)
-                    return response.json(500, repr(e))
+
+        if token is not None:
+            tM = JSONTokenManager()
+            error_code = tM.verify_AToken(token)
+            if error_code == 0:
+                userID = tM.accessDict.get('userID', None)
+                # userID = '151547899913020418607560093'
+
+                if userID:
+                    response = HttpResponse(queryUserEquipment(userID))
+                    return response
                 else:
                 else:
-                    if deviceValid.exists():
-                        res = CommonService.qs_to_dict(deviceValid)
-                        return response.json(0, res)
-                    else:
-                        UserValid = Device_User.objects.filter(userID=userID)
-                        if UserValid.exists():
-                            return response.json(172)
-                        else:
-                            return response.json(113)
+                    return ResponseJSON(310)
+
             else:
             else:
-                return response.json(310)
+                response = HttpResponse(tM.errorCodeInfo(error_code))
+                return response
         else:
         else:
-            return response.json(tko.code)
-    else:
-        return response.json(800)
+            return ResponseJSON(800)
 
 
+    else:
+        return ResponseJSON(801)
 
 
 @csrf_exempt
 @csrf_exempt
 def addNewUserEquipmentInterface(request, *callback_args,
 def addNewUserEquipmentInterface(request, *callback_args,
                                  **callback_kwargs):
                                  **callback_kwargs):
-    response = ResponseObject()
     if request.method == 'POST':
     if request.method == 'POST':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         request_dict = request.POST
         request_dict = request.POST
@@ -233,28 +262,29 @@ def addNewUserEquipmentInterface(request, *callback_args,
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         request_dict = request.GET
         request_dict = request.GET
     else:
     else:
-        return response.json(801)
+        return ResponseJSON(801)
     token = request_dict.get('token', None)
     token = request_dict.get('token', None)
     deviceContent = request_dict.get('content', None)
     deviceContent = request_dict.get('content', None)
     if token is not None and deviceContent is not None:
     if token is not None and deviceContent is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
-            if userID is not None:
-                return addNewUserEquipment(userID, deviceContent, response)
+        tM = JSONTokenManager()
+        error_code = tM.verify_AToken(token)
+        if error_code == 0:
+            userID = tM.accessDict.get('userID', None)
+            if userID:
+                response = HttpResponse(addNewUserEquipment(userID, deviceContent))
+                return response
             else:
             else:
-                return response.json(310)
+                return ResponseJSON(310)
         else:
         else:
-            return response.json(tko.code)
+            response = HttpResponse(tM.errorCodeInfo(error_code))
+            return response
     else:
     else:
-        return response.json(444, 'token,content')
+        return ResponseJSON(800)
 
 
 
 
 @csrf_exempt
 @csrf_exempt
 def delUserEquipmentInterface(request, *callback_args,
 def delUserEquipmentInterface(request, *callback_args,
-                              **callback_kwargs):
+                                 **callback_kwargs):
     '''
     '''
     删除用户设备
     删除用户设备
     :param request:
     :param request:
@@ -262,32 +292,51 @@ def delUserEquipmentInterface(request, *callback_args,
     :param callback_kwargs: 表示关键字参数,dict类型
     :param callback_kwargs: 表示关键字参数,dict类型
     :return:
     :return:
     '''
     '''
-    response = ResponseObject()
     if request.method == 'POST':
     if request.method == 'POST':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        request_dict = request.POST
+
+        token = request.POST.get('token', None)
+        id = request.POST.get('id', None)
+
+        if token is not None and id is not None:
+            tM = JSONTokenManager()
+            error_code = tM.verify_AToken(token)
+            if error_code == 0:
+                userID = tM.accessDict.get('userID', None)
+                if userID:
+                    response = HttpResponse(delUserEquipment(userID, id))
+                    return response
+                else:
+                    return ResponseJSON(310)
+            else:
+                response = HttpResponse(tM.errorCodeInfo(error_code))
+                return response
+
+        else:
+            return ResponseJSON(800)
+
     elif request.method == 'GET':
     elif request.method == 'GET':
         request.encoding = 'gb2312'
         request.encoding = 'gb2312'
-        request_dict = request.GET
-    else:
-        return response.json(801)
-    token = request_dict.get('token', None)
-    id = request_dict.get('id', None)
-    if token is not None and id is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
-            if userID is not None:
-                return delUserEquipment(userID, id, response)
+        token = request.GET.get('token', None)
+        id = request.GET.get('id', None)
+
+        if token is not None and id is not None:
+            tM = JSONTokenManager()
+            error_code = tM.verify_AToken(token)
+            if error_code == 0:
+                userID = tM.accessDict.get('userID', None)
+                if userID:
+                    response = HttpResponse(delUserEquipment(userID, id))
+                    return response
+                else:
+                    return ResponseJSON(310)
             else:
             else:
-                return response.json(310)
+                response = HttpResponse(tM.errorCodeInfo(error_code))
+                return response
         else:
         else:
-            return response.json(tko.code)
+            return ResponseJSON(800)
     else:
     else:
-        return response.json(800)
-
+        return ResponseJSON(801)
 
 
 @csrf_exempt
 @csrf_exempt
 def modifyUserEquipmentInterface(request, *callback_args,
 def modifyUserEquipmentInterface(request, *callback_args,
@@ -299,7 +348,6 @@ def modifyUserEquipmentInterface(request, *callback_args,
     :param callback_kwargs:
     :param callback_kwargs:
     :return:
     :return:
     '''
     '''
-    response = ResponseObject()
     if request.method == 'POST':
     if request.method == 'POST':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         request_dict = request.POST
         request_dict = request.POST
@@ -310,20 +358,20 @@ def modifyUserEquipmentInterface(request, *callback_args,
     deviceContent = request_dict.get('content', None)
     deviceContent = request_dict.get('content', None)
     id = request_dict.get('id', None)
     id = request_dict.get('id', None)
     if token is not None and deviceContent is not None and id is not None:
     if token is not None and deviceContent is not None and id is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
-            if userID is not None:
-                return modifyUserEquipment(userID, deviceContent, id, response)
+        tM = JSONTokenManager()
+        error_code = tM.verify_AToken(token)
+        if error_code == 0:
+            userID = tM.accessDict.get('userID', None)
+            if userID:
+                response = HttpResponse(modifyUserEquipment(userID, deviceContent, id))
+                return response
             else:
             else:
-                return response.json(310)
+                return ResponseJSON(310)
         else:
         else:
-            return response.json(tko.code)
+            response = HttpResponse(tM.errorCodeInfo(error_code))
+            return response
     else:
     else:
-        return response.json(444, 'token,content,id')
-
+        return ResponseJSON(444)
 
 
 @csrf_exempt
 @csrf_exempt
 def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
 def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
@@ -335,55 +383,48 @@ def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
         fieldDict = request.GET
         fieldDict = request.GET
     token = request.POST.get('token', None)
     token = request.POST.get('token', None)
     type = request.POST.get('type', None)
     type = request.POST.get('type', None)
-    response = ResponseObject()
     if token != None:
     if token != None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
+        tM = JSONTokenManager()
+        error_code = tM.verify_AToken(token)
+        if error_code == 0:
+            userID = tM.accessDict.get('userID', None)
             if userID:
             if userID:
                 if type == 'PC':
                 if type == 'PC':
-                    return showAllUserEquipmentPC(userID, fieldDict, response)
+                    return showAllUserEquipmentPC(userID, fieldDict)
                 else:
                 else:
-                    return showAllUserEquipment(userID, response)
+                    return showAllUserEquipment(userID)
             else:
             else:
-                return response.json(310)
+                return ResponseJSON(310)
         else:
         else:
-            return response.json(tko.code)
-    else:
-        return response.json(800)
+            return HttpResponse(tM.errorCodeInfo(error_code))
 
 
+    else:
+        return ResponseJSON(800)
 
 
 @csrf_exempt
 @csrf_exempt
 def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
 def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
     if request.method == 'GET':
     if request.method == 'GET':
         request.encoding = 'gb2312'
         request.encoding = 'gb2312'
+        token = request.GET.get('token',None)
         fieldDict = request.GET
         fieldDict = request.GET
+        deviceContent = request.GET.get('content',None)
     if request.method == 'POST':
     if request.method == 'POST':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
+        token = request.POST.get('token', None)
         fieldDict = request.POST
         fieldDict = request.POST
-    deviceContent = fieldDict.get('content', None)
-    token = fieldDict.get('token', None)
-    response = ResponseObject()
+        deviceContent = request.POST.get('content', None)
 
 
     if token != None:
     if token != None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
+        tM = JSONTokenManager()
+        error_code = tM.verify_AToken(token)
+        if error_code == 0:
             if deviceContent:
             if deviceContent:
-                try:
-                    deviceContent = json.loads(deviceContent)
-                except Exception as e:
-                    print(repr(e))
-                    return response.json(10,repr(e))
-                else:
-                    resultDict = findEquipmentInfo(content=deviceContent, type=2, fieldDict=fieldDict)
+                deviceContent=json.loads(deviceContent)
+                resultDict=findEquipmentInfo(content=deviceContent,type=2,fieldDict=fieldDict)
             else:
             else:
-                resultDict = findEquipmentInfo(content='', type=1, fieldDict=fieldDict)
-            return response.json(0, resultDict)
+                resultDict=findEquipmentInfo(content='',type=1,fieldDict=fieldDict)
+            return ResponseJSON(0,resultDict)
         else:
         else:
-            return response.json(tko.code)
+            return ResponseJSON(310)
     else:
     else:
-        return response.json(444,'token')
+        return ResponseJSON(800)

+ 50 - 55
Controller/EquipmentOTA.py

@@ -1,15 +1,14 @@
 from django.views.generic.base import View
 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.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Equipment_Version
 from Model.models import Equipment_Version
+from Ansjer.config import *
 from django.utils import timezone
 from django.utils import timezone
-import os,simplejson as json
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-from Ansjer.settings import BASE_DIR
-
+import os
+from Service.ResponseService import *
 '''
 '''
 http://192.168.136.45:8077/equipment/OTA?token=test&operation=query&page=1&line=10
 http://192.168.136.45:8077/equipment/OTA?token=test&operation=query&page=1&line=10
 http://192.168.136.45:8077/equipment/OTA?token=test&operation=find&page=1&line=10&content={}
 http://192.168.136.45:8077/equipment/OTA?token=test&operation=find&page=1&line=10&content={}
@@ -17,7 +16,6 @@ http://192.168.136.40:8077/equipment/OTA?eid=138001524641441203480138000&token=t
 http://192.168.136.40:8077/equipment/OTA?eid=138001524641441203480138000&token=test&operation=update&status=1
 http://192.168.136.40:8077/equipment/OTA?eid=138001524641441203480138000&token=test&operation=update&status=1
 '''
 '''
 
 
-
 class EquipmentOTA(View):
 class EquipmentOTA(View):
     @method_decorator(csrf_exempt)
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
     def dispatch(self, *args, **kwargs):
@@ -33,59 +31,56 @@ class EquipmentOTA(View):
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
-        response = ResponseObject()
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
-                if userID is not None:
-                    operation = request_dict.get('operation', None)
-                    if operation is not None:
-                        if operation == 'delete':
-                            return self.delete(request_dict, userID, response)
-                        elif operation == 'query':
-                            return self.query(request_dict, userID, response)
-                        elif operation == 'find':
-                            return self.find(request_dict, userID, response)
-                        elif operation == 'update':
-                            return self.update(request_dict, userID, response)
-                    return response.json(444, 'operation')
-                else:
-                    return response.json(310)
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
+                operation = request_dict.get('operation', None)
+                param_flag = CommonService.get_param_flag(data=[userID, operation])
+                if param_flag is True:
+                    if operation == 'delete':
+                        return self.delete(request_dict=request_dict, userID=userID)
+                    elif operation == 'query':
+                        return self.query(request_dict=request_dict, userID=userID)
+                    elif operation == 'find':
+                        return self.find(request_dict=request_dict, userID=userID)
+                    elif operation == 'update':
+                        return self.update(request_dict=request_dict, userID=userID)
+
+                return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
-    def delete(self, request_dict, userID,response):
+    def delete(self, request_dict, userID):
         eid = request_dict.get('eid', None)
         eid = request_dict.get('eid', None)
         param_flag = CommonService.get_param_flag(data=[eid])
         param_flag = CommonService.get_param_flag(data=[eid])
         if param_flag is True:
         if param_flag is True:
-            own_permission = ModelService.check_permission(userID=userID, permID=230)
+            own_permission = ModelService.check_permission(userID=userID,permID=230)
             if own_permission is True:
             if own_permission is True:
                 ev = Equipment_Version.objects.filter(eid=eid)
                 ev = Equipment_Version.objects.filter(eid=eid)
                 if ev.exists():
                 if ev.exists():
                     try:
                     try:
-                        has_ev = Equipment_Version.objects.filter(filePath=ev[0].filePath)
+                        has_ev = EquipmentOTA.objects.filter(filePath = ev[0].filePath)
                         if has_ev.exists():
                         if has_ev.exists():
                             pass
                             pass
                         else:
                         else:
-                            filepath = os.path.join(BASE_DIR, ev[0].filePath)
+                            filepath = os.path.join(BASE_DIR,ev[0].filePath)
                             os.remove(filepath)
                             os.remove(filepath)
                     except Exception as e:
                     except Exception as e:
                         pass
                         pass
                     ev.delete()
                     ev.delete()
-                    return response.json(0)
+                    return ResponseJSON(0)
             else:
             else:
-                return response.json(404)
-        return response.json(444)
+                return ResponseJSON(404)
+        return ResponseJSON(444)
 
 
-    def query(self, request_dict, userID,response):
+    def query(self, request_dict,userID):
         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])
         if param_flag is True:
         if param_flag is True:
             own_permission = ModelService.check_permission(userID=userID, permID=240)
             own_permission = ModelService.check_permission(userID=userID, permID=240)
             if own_permission is True:
             if own_permission is True:
@@ -93,20 +88,20 @@ class EquipmentOTA(View):
                 if equipment_version_queryset.exists():
                 if equipment_version_queryset.exists():
                     count = equipment_version_queryset.count()
                     count = equipment_version_queryset.count()
                     res = equipment_version_queryset[(page - 1) * line:page * line]
                     res = equipment_version_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
+                    send_json = CommonService.query_set_to_dict(res)
                     send_json['count'] = count
                     send_json['count'] = count
-                    return response.json(0, send_json)
-                return response.json(0)
+                    return ResponseJSON(0, send_json)
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def find(self, request_dict, userID,response):
+    def find(self, request_dict,userID):
         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))
         content = request_dict.get('content', None)
         content = request_dict.get('content', None)
-        param_flag = CommonService.get_param_flag(data=[page, line, content])
+        param_flag = CommonService.get_param_flag(data=[page,line,content])
         if param_flag is True:
         if param_flag is True:
             own_permission = ModelService.check_permission(userID=userID, permID=250)
             own_permission = ModelService.check_permission(userID=userID, permID=250)
             if own_permission is True:
             if own_permission is True:
@@ -116,17 +111,17 @@ class EquipmentOTA(View):
                 if equipment_version_queryset.exists():
                 if equipment_version_queryset.exists():
                     count = equipment_version_queryset.count()
                     count = equipment_version_queryset.count()
                     res = equipment_version_queryset[(page - 1) * line:page * line]
                     res = equipment_version_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
+                    send_json = CommonService.query_set_to_dict(res)
                     send_json['count'] = count
                     send_json['count'] = count
-                    return response.json(0, send_json)
+                    return ResponseJSON(0, send_json)
                 else:
                 else:
-                    return response.json(0)
+                    return ResponseJSON(0)
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def update(self, request_dict, userID,response):
+    def update(self,request_dict,userID):
         eid = request_dict.get('eid', None)
         eid = request_dict.get('eid', None)
         param_flag = CommonService.get_param_flag(data=[eid])
         param_flag = CommonService.get_param_flag(data=[eid])
         if param_flag is True:
         if param_flag is True:
@@ -134,15 +129,15 @@ class EquipmentOTA(View):
             if own_permission is True:
             if own_permission is True:
                 ev = Equipment_Version.objects.filter(eid=eid)
                 ev = Equipment_Version.objects.filter(eid=eid)
                 if ev.exists():
                 if ev.exists():
-                    status = request_dict.get('status', None)
+                    status = request_dict.get('status',None)
                     try:
                     try:
                         update_time = timezone.localtime(timezone.now())
                         update_time = timezone.localtime(timezone.now())
-                        ev.update(status=status, update_time=update_time)
+                        ev.update(status=status,update_time=update_time)
                     except Exception as e:
                     except Exception as e:
                         print(repr(e))
                         print(repr(e))
                         pass
                         pass
-                    return response.json(0, {'update_time': str(update_time)})
+                    return ResponseJSON(0,{'update_time':str(update_time)})
             else:
             else:
-                return response.json(404)
-        return response.json(444)
+                return ResponseJSON(404)
+        return ResponseJSON(444)
 
 

+ 50 - 55
Controller/EquipmentSensor.py

@@ -1,12 +1,13 @@
 from django.views.generic.base import View
 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.ResponseService import *
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Device_Info, Equipment_Sensor
 from Model.models import Device_Info, Equipment_Sensor
 import traceback
 import traceback
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
+
 '''
 '''
 增加,关联设备传感器:
 增加,关联设备传感器:
 params:{
 params:{
@@ -63,35 +64,29 @@ class EquipmentSensor(View):
         return self.validation(request_dict=request.POST)
         return self.validation(request_dict=request.POST)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
-                if userID is not None:
-                    operation = request_dict.get('operation', None)
-                    if operation == 'add':
-                        return self.add_sensor(request_dict, userID,response)
-                    elif operation == 'delete':
-                        return self.delete_sensor(request_dict, userID,response)
-                    elif operation == 'update':
-                        return self.update_sensor(request_dict, userID,response)
-                    elif operation == 'query':
-                        return self.query_sensor(request_dict, userID,response)
-                    elif operation == 'queryall':
-                        return self.admin_query_all_sensor(request_dict, userID,response)
-                else:
-                    return response.json(310)
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
+                operation = request_dict.get('operation', None)
+                if operation == 'add':
+                    return self.add_sensor(request_dict=request_dict, userID=userID)
+                elif operation == 'delete':
+                    return self.delete_sensor(request_dict=request_dict, userID=userID)
+                elif operation == 'update':
+                    return self.update_sensor(userID=userID, request_dict=request_dict)
+                elif operation == 'query':
+                    return self.query_sensor(userID=userID,request_dict=request_dict)
+                elif operation == 'queryall':
+                    return self.admin_query_all_sensor(userID=userID,request_dict=request_dict)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
-
+            return ResponseJSON(311)
 
 
-    def add_sensor(self, request_dict,userID,response):
+    def add_sensor(self, userID, request_dict):
         # 设备PK
         # 设备PK
         did = request_dict.get('did', None)
         did = request_dict.get('did', None)
         name = request_dict.get('name', None)
         name = request_dict.get('name', None)
@@ -105,24 +100,24 @@ class EquipmentSensor(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print('database error: %s' % errorInfo)
                     print('database error: %s' % errorInfo)
-                    return response.json(424)
+                    return ResponseJSON(424)
                 else:
                 else:
                     if device_info:
                     if device_info:
                         equipment_sensor = Equipment_Sensor(name=name, status=status, type=type, uid=device_info.UID)
                         equipment_sensor = Equipment_Sensor(name=name, status=status, type=type, uid=device_info.UID)
                         equipment_sensor.save()
                         equipment_sensor.save()
                         if equipment_sensor.id:
                         if equipment_sensor.id:
-                            return response.json(0,
+                            return ResponseJSON(0,
                                                                              {'id': equipment_sensor.id,
                                                                              {'id': equipment_sensor.id,
                                                                                        'status': equipment_sensor.status,
                                                                                        'status': equipment_sensor.status,
                                                                                        'name': equipment_sensor.name,
                                                                                        'name': equipment_sensor.name,
                                                                                        'type': equipment_sensor.type})
                                                                                        'type': equipment_sensor.type})
                         else:
                         else:
-                            return response.json(4)
+                            return ResponseJSON(4)
             else:
             else:
-                return response.json(14)
-        return response.json(444)
+                return ResponseJSON(14)
+        return ResponseJSON(444)
 
 
-    def delete_sensor(self, request_dict,userID,response):
+    def delete_sensor(self, request_dict,userID):
         # deletelist
         # deletelist
         did = request_dict.get('did',None)
         did = request_dict.get('did',None)
         id_list = request_dict.getlist('id', None)
         id_list = request_dict.getlist('id', None)
@@ -135,17 +130,17 @@ class EquipmentSensor(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print('database error: %s' % errorInfo)
                     print('database error: %s' % errorInfo)
-                    return response.json(424)
+                    return ResponseJSON(424)
                 else:
                 else:
                     if device_info:
                     if device_info:
                         for id in id_list:
                         for id in id_list:
                             Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).delete()
                             Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).delete()
-                        return response.json(0)
+                        return ResponseJSON(0)
             else:
             else:
-                return response.json(14)
-        return response.json(444)
+                return ResponseJSON(14)
+        return ResponseJSON(444)
 
 
-    def update_sensor(self,request_dict,userID,response):
+    def update_sensor(self,request_dict,userID):
         id = request_dict.get('id', None)
         id = request_dict.get('id', None)
         did = request_dict.get('did',None)
         did = request_dict.get('did',None)
         status = request_dict.get('status', None)
         status = request_dict.get('status', None)
@@ -159,21 +154,21 @@ class EquipmentSensor(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print('database error: %s' % errorInfo)
                     print('database error: %s' % errorInfo)
-                    return response.json(424)
+                    return ResponseJSON(424)
                 else:
                 else:
                     is_update = Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).update(status=status,
                     is_update = Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).update(status=status,
                                                                                                   name=name)
                                                                                                   name=name)
                     if is_update:
                     if is_update:
-                        return response.json(0, {'id': id, 'status': status,
+                        return ResponseJSON(0, {'id': id, 'status': status,
                                                                                            'name': name})
                                                                                            'name': name})
-                return response.json(4)
+                return ResponseJSON(4)
             else:
             else:
-                return response.json(14)
+                return ResponseJSON(14)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
 
 
-    def query_sensor(self,request_dict,userID,response):
+    def query_sensor(self,request_dict,userID):
         did = request_dict.get('did', None)
         did = request_dict.get('did', None)
         if did is not None:
         if did is not None:
             is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
             is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
@@ -184,19 +179,19 @@ class EquipmentSensor(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print('database error: %s' % errorInfo)
                     print('database error: %s' % errorInfo)
-                    return response.json(424)
+                    return ResponseJSON(424)
                 else:
                 else:
                     equipment_sensor_queryset = Equipment_Sensor.objects.filter(uid=device_info.UID)
                     equipment_sensor_queryset = Equipment_Sensor.objects.filter(uid=device_info.UID)
                     if equipment_sensor_queryset.exists():
                     if equipment_sensor_queryset.exists():
-                        send_json = CommonService.qs_to_dict(equipment_sensor_queryset)
-                        return response.json(0, send_json)
+                        send_json = CommonService.query_set_to_dict(equipment_sensor_queryset)
+                        return ResponseJSON(0, send_json)
                     else:
                     else:
-                        return response.json(0, {})
-            return response.json(14)
+                        return ResponseJSON(0, {})
+            return ResponseJSON(14)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def admin_query_all_sensor(self,request_dict,userID,response):
+    def admin_query_all_sensor(self,request_dict,userID):
         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))
         if userID is not None:
         if userID is not None:
@@ -206,13 +201,13 @@ class EquipmentSensor(View):
                 if equipment_sensor_queryset.exists():
                 if equipment_sensor_queryset.exists():
                     equipment_stream_count = equipment_sensor_queryset.count()
                     equipment_stream_count = equipment_sensor_queryset.count()
                     equipment_stream_res = equipment_sensor_queryset[(page - 1) * line:page * line]
                     equipment_stream_res = equipment_sensor_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(equipment_stream_res)
+                    send_json = CommonService.query_set_to_dict(equipment_stream_res)
                     send_json['count'] = equipment_stream_count
                     send_json['count'] = equipment_stream_count
-                    return response.json(0, send_json)
+                    return ResponseJSON(0, send_json)
                 else:
                 else:
-                    return response.json(0, {})
-            return response.json(604)
+                    return ResponseJSON(0, {})
+            return ResponseJSON(604)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
 
 

+ 11 - 14
Controller/EquipmentStatus.py

@@ -15,8 +15,7 @@ from django.views.decorators.csrf import csrf_exempt
 from Model.models import Device_Info
 from Model.models import Device_Info
 from django.utils import timezone
 from django.utils import timezone
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
+from Service.ResponseService import *
 '''
 '''
 http://192.168.136.45:8077/device/online?UID=C2887N9EBS87ZAT1111A
 http://192.168.136.45:8077/device/online?UID=C2887N9EBS87ZAT1111A
 http://192.168.136.45:8077/device/offline?UID=C2887N9EBS87ZAT1111A
 http://192.168.136.45:8077/device/offline?UID=C2887N9EBS87ZAT1111A
@@ -25,8 +24,7 @@ http://192.168.136.45:8077/device/updateIP?UID=C2887N9EBS87ZAT1111A?ip=190.9.194
 
 
 
 
 @csrf_exempt
 @csrf_exempt
-def EquipmentOnline(request):
-    response = ResponseObject()
+def EquipmentOnline(request, *callback_args, **callback_kwargs):
     if request.method == 'GET':
     if request.method == 'GET':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         UID = request.GET.get('UID', None)
         UID = request.GET.get('UID', None)
@@ -40,14 +38,13 @@ def EquipmentOnline(request):
             device_info.update(Online=True, update_time=now_time)
             device_info.update(Online=True, update_time=now_time)
         except Exception as e:
         except Exception as e:
             print(repr(e))
             print(repr(e))
-        return response.json(0)
+        return ResponseJSON(0)
     else:
     else:
-        return response.json(13)
+        return ResponseJSON(13)
 
 
 
 
 @csrf_exempt
 @csrf_exempt
-def EquipmentOffline(request):
-    response = ResponseObject()
+def EquipmentOffline(request, *callback_args, **callback_kwargs):
     if request.method == 'GET':
     if request.method == 'GET':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         UID = request.GET.get('UID', None)
         UID = request.GET.get('UID', None)
@@ -60,14 +57,13 @@ def EquipmentOffline(request):
             device_info.update(Online=False)
             device_info.update(Online=False)
         except Exception as e:
         except Exception as e:
             print(repr(e))
             print(repr(e))
-        return response.json(0)
+        return ResponseJSON(0)
     else:
     else:
-        return response.json(13)
+        return ResponseJSON(13)
 
 
 
 
 @csrf_exempt
 @csrf_exempt
-def updateIP(request):
-    response = ResponseObject()
+def updateIP(request, *callback_args, **callback_kwargs):
     if request.method == 'GET':
     if request.method == 'GET':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         UID = request.GET.get('UID', None)
         UID = request.GET.get('UID', None)
@@ -80,10 +76,11 @@ def updateIP(request):
     if device_info.exists():
     if device_info.exists():
         area = ''
         area = ''
         try:
         try:
+            # area = MiscellService.getArea(ip)
             area = CommonService.getAddr(ip=ip)
             area = CommonService.getAddr(ip=ip)
             device_info.update(ip=ip, area=area)
             device_info.update(ip=ip, area=area)
         except Exception as e:
         except Exception as e:
             print(repr(e))
             print(repr(e))
-        return response.json(0,{'area': area})
+        return ResponseJSON(0,{'area': area})
     else:
     else:
-        return response.json(13)
+        return ResponseJSON(13)

+ 49 - 54
Controller/FeedBackInfo.py

@@ -1,13 +1,12 @@
 from django.views.generic.base import View
 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.TokenManager import JSONTokenManager
 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.TokenObject import TokenObject
-from Service.CommonService import CommonService
+from Service.ResponseService import *
 '''
 '''
 http://192.168.136.45:8077/feedbackInfo?operation=add&token=test&content=12341234
 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=query&token=test&page=1&line=10
@@ -35,40 +34,36 @@ class FeedBackInfo(View):
         return self.validation(request_dict=request.POST)
         return self.validation(request_dict=request.POST)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 operation = request_dict.get('operation', None)
                 operation = request_dict.get('operation', None)
-                if userID is not None:
+                param_flag = CommonService.get_param_flag(data=[userID, operation])
+                if param_flag is True:
                     if operation == 'query':
                     if operation == 'query':
-                        return self.query_info(request_dict, userID,response)
+                        return self.query_info(request_dict=request_dict, userID=userID)
                     elif operation == 'add':
                     elif operation == 'add':
-                        return self.add_info(request_dict, userID,response)
+                        return self.add_info(request_dict=request_dict, userID=userID)
                     elif operation == 'update':
                     elif operation == 'update':
-                        return self.update_info(request_dict, userID,response)
+                        return self.update_info(request_dict=request_dict,userID=userID)
                     elif operation == 'delete':
                     elif operation == 'delete':
-                        return self.delete_info(request_dict, userID,response)
+                        return self.delete_info(request_dict=request_dict, userID=userID)
                     elif operation == 'queryAll':
                     elif operation == 'queryAll':
-                        return self.query_all_info(request_dict, userID,response)
+                        return self.query_all_info(request_dict=request_dict,userID=userID)
                     elif operation == 'deleteByAdmin':
                     elif operation == 'deleteByAdmin':
-                        return self.delete_by_admin(request_dict, userID,response)
+                        return self.delete_by_admin(request_dict=request_dict,userID=userID)
                     elif operation == 'updateByAdmin':
                     elif operation == 'updateByAdmin':
-                        return self.update_by_admin(request_dict, userID,response)
-                    else:
-                        return response.json(444,'444')
-                else:
-                    return response.json(310)
+                        return self.update_by_admin(request_dict=request_dict,userID=userID)
+                return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
-    def add_info(self, request_dict, userID,response):
+    def add_info(self, request_dict, userID):
         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:
@@ -81,13 +76,13 @@ class FeedBackInfo(View):
             except Exception:
             except Exception:
                 errorInfo = traceback.format_exc()
                 errorInfo = traceback.format_exc()
                 print(errorInfo)
                 print(errorInfo)
-                return response.json(424, {'details': errorInfo})
+                return ResponseJSON(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(444)
+                return ResponseJSON(0,{'id':feedback_info.id})
+        return ResponseJSON(444)
 
 
-    def query_info(self, request_dict, userID,response):
+    def query_info(self, request_dict, userID):
         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])
@@ -96,14 +91,14 @@ class FeedBackInfo(View):
             if feedback_info_queryset.exists():
             if feedback_info_queryset.exists():
                 count = feedback_info_queryset.count()
                 count = feedback_info_queryset.count()
                 res = feedback_info_queryset[(page - 1) * line:page * line]
                 res = feedback_info_queryset[(page - 1) * line:page * line]
-                send_json = CommonService.qs_to_dict(res)
+                send_json = CommonService.query_set_to_dict(res)
                 send_json['count'] = count
                 send_json['count'] = count
-                return response.json(0, send_json)
-            return response.json(0, {'datas': [], 'count': 0})
+                return ResponseJSON(0, send_json)
+            return ResponseJSON(0, {'datas': [], 'count': 0})
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def update_info(self, request_dict, userID,response):
+    def update_info(self, request_dict, userID):
         content = request_dict.get('content', None)
         content = request_dict.get('content', None)
         id = request_dict.get('id',None)
         id = request_dict.get('id',None)
 
 
@@ -114,24 +109,24 @@ class FeedBackInfo(View):
                 feedback_info.content = content
                 feedback_info.content = content
                 feedback_info.save()
                 feedback_info.save()
             except Exception as e:
             except Exception as e:
-                return response.json(302, {'details': repr(e)})
+                return ResponseJSON(302, {'details': repr(e)})
             else:
             else:
                 now_time = timezone.localtime(timezone.now())
                 now_time = timezone.localtime(timezone.now())
-                return response.json(0, {'update_success': 1,
+                return ResponseJSON(0, {'update_success': 1,
                                                                                    'update_time': str(now_time)})
                                                                                    'update_time': str(now_time)})
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def delete_info(self, request_dict, userID,response):
+    def delete_info(self, request_dict, userID):
         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:
             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 ResponseJSON(0,{'delete_count':is_delete[0]})
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def query_all_info(self, request_dict, userID,response):
+    def query_all_info(self, request_dict, userID):
         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')
         order = request_dict.get('order','-id')
@@ -149,32 +144,32 @@ class FeedBackInfo(View):
                 if feedback_info_queryset.exists():
                 if feedback_info_queryset.exists():
                     count = feedback_info_queryset.count()
                     count = feedback_info_queryset.count()
                     res = feedback_info_queryset[(page - 1) * line:page * line]
                     res = feedback_info_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
+                    send_json = CommonService.query_set_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, {'datas': [], 'count': 0})
+                    return ResponseJSON(0, send_json)
+                return ResponseJSON(0, {'datas': [], 'count': 0})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def delete_by_admin(self, request_dict, userID,response):
+    def delete_by_admin(self, request_dict, userID):
         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:
             check_perm = ModelService.check_permission(userID=userID, permID=10)
             check_perm = ModelService.check_permission(userID=userID, permID=10)
             if check_perm is True:
             if check_perm is True:
                 is_delete = Feedback_Info.objects.filter(id__in=id_list).delete()
                 is_delete = Feedback_Info.objects.filter(id__in=id_list).delete()
-                return response.json(0, {'delete_count': is_delete[0]})
+                return ResponseJSON(0, {'delete_count': is_delete[0]})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def update_by_admin(self, request_dict, userID,response):
+    def update_by_admin(self, request_dict, userID):
         id = request_dict.get('id',None)
         id = request_dict.get('id',None)
         status = request_dict.get('status',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])
@@ -186,11 +181,11 @@ class FeedBackInfo(View):
                     feedback_info.status = status
                     feedback_info.status = status
                     feedback_info.save()
                     feedback_info.save()
                 except Exception as e:
                 except Exception as e:
-                    return response.json(302, {'details': repr(e)})
+                    return ResponseJSON(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 ResponseJSON(0, {'update_id': feedback_info.id,'update_time':str(now_time)})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)

+ 91 - 94
Controller/HlsManage.py

@@ -14,15 +14,14 @@
 from django.views.generic.base import View
 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.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Model.models import Device_Meal
 from Model.models import Device_Meal
 from Object.AWS.S3ClassObject import S3ClassObject
 from Object.AWS.S3ClassObject import S3ClassObject
 from Object.AWS.CloudfrontSignUrl import CloudfrontSignUrl
 from Object.AWS.CloudfrontSignUrl import CloudfrontSignUrl
 from Object.encryHlsVodUrl import getSignUrl
 from Object.encryHlsVodUrl import getSignUrl
 from Object.m3u8generate import PlaylistGenerator
 from Object.m3u8generate import PlaylistGenerator
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
-from django.http import HttpResponse
+from Service.ResponseService import *
 '''
 '''
 设备端
 设备端
 http://13.56.215.252:82/HlsManager?operation=signPutObj&key=555666.mp4&uid=L59KVYDAEPHR1T6M111A&channel=0
 http://13.56.215.252:82/HlsManager?operation=signPutObj&key=555666.mp4&uid=L59KVYDAEPHR1T6M111A&channel=0
@@ -48,26 +47,26 @@ class HlsManage(View):
         return self.validation(request_dict=request.POST)
         return self.validation(request_dict=request.POST)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
         operation = request_dict.get('operation', None)
         operation = request_dict.get('operation', None)
-        if operation == 'signPutObj':
-            return self.sign_put_obj(request_dict,response)
-        elif operation == 'signPostObj':
-            return self.sign_post_obj(request_dict,response)
-        elif operation == 'getHlsVod':
-            return self.get_hls_vod(request_dict,response)
-        elif operation == 'getAllTs':
-            return self.get_all_ts(request_dict,response)
-        elif operation == 'getVodUrl':
-            return self.get_vod_url(request_dict,response)
-        else:
-            return response.json(444, 'operation')
+        if operation is not None:
+            if operation == 'signPutObj':
+                return self.sign_put_obj(request_dict=request_dict)
+            elif operation == 'signPostObj':
+                return self.sign_post_obj(request_dict=request_dict)
+            elif operation == 'getHlsVod':
+                return self.get_hls_vod(request_dict=request_dict)
+            elif operation == 'getAllTs':
+                return self.get_all_ts(request_dict=request_dict)
+            elif operation == 'getVodUrl':
+                return self.get_vod_url(request_dict=request_dict)
+        return ResponseJSON(444)
 
 
-    def sign_put_obj(self, request_dict,response):
+    def sign_put_obj(self, request_dict):
         key = request_dict.get('key', None)
         key = request_dict.get('key', None)
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
-        if key is not None and uid is not None and channel is not None:
+        param_flag = CommonService.get_param_flag(data=[key, uid, channel])
+        if param_flag is True:
             device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
             device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
             if device_meal_queryset.exists():
             if device_meal_queryset.exists():
                 path = uid + '_' + channel + '/' + key
                 path = uid + '_' + channel + '/' + key
@@ -80,19 +79,20 @@ class HlsManage(View):
                 s3 = S3ClassObject()
                 s3 = S3ClassObject()
                 sign_url = s3.sign_put_object(key=path, bucket_meal=bucket_meal[meal_id])
                 sign_url = s3.sign_put_object(key=path, bucket_meal=bucket_meal[meal_id])
                 if sign_url is not False:
                 if sign_url is not False:
-                    return (0, {'url': sign_url})
+                    return ResponseJSON(0, {'url': sign_url})
                 else:
                 else:
-                    return response.json(48)
+                    return ResponseJSON(48)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(444,'key, uid, channel')
+            return ResponseJSON(444)
 
 
-    def sign_post_obj(self, request_dict,response):
+    def sign_post_obj(self, request_dict):
         key = request_dict.get('key', None)
         key = request_dict.get('key', None)
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
-        if key is not None and uid is not None and channel is not None:
+        param_flag = CommonService.get_param_flag(data=[key, uid, channel])
+        if param_flag is True:
             device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
             device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
             if device_meal_queryset.exists():
             if device_meal_queryset.exists():
                 path = uid + '_' + channel + '/' + key
                 path = uid + '_' + channel + '/' + key
@@ -105,66 +105,62 @@ class HlsManage(View):
                 s3 = S3ClassObject()
                 s3 = S3ClassObject()
                 data = s3.sign_post_object(key=path, bucket_meal=bucket_meal[meal_id])
                 data = s3.sign_post_object(key=path, bucket_meal=bucket_meal[meal_id])
                 if data is not False:
                 if data is not False:
-                    return response.json(0, {'url': data})
+                    return ResponseJSON(0, {'url': data})
                 else:
                 else:
-                    return response.json(48)
+                    return ResponseJSON(48)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(444,'key, uid, channel')
+            return ResponseJSON(444)
 
 
-    def get_all_ts(self, request_dict,response):
+    def get_all_ts(self, request_dict):
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
-                if userID is not None:
-                    uid = request_dict.get('uid', None)
-                    channel = request_dict.get('channel', None)
-                    if uid is not None and channel is not None:
-                        own_permission = ModelService.check_permission(userID=userID, permID=30)
-                        own_device = ModelService.check_own_device(userID=userID, UID=uid)
-                        if own_permission is True or own_device is True:
-                            device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
-                            if device_meal_queryset.exists():
-                                meal_id = device_meal_queryset[0].rank_id
-                                bucket_meal = {
-                                    1: 'ansjer.meal.1',  # 7
-                                    2: 'ansjer.meal.2',  # 30
-                                }
-                                s3 = S3ClassObject()
-                                data = s3.get_prefix_obj(prefix=uid + '_' + channel + '/', bucket=bucket_meal[meal_id])
-                                # return response.json(0, {'files': data,'bk':bucket_meal[meal_id]})
-                                return response.json(0, {'files': data})
-                            else:
-                                return response.json(444)
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                uid = request_dict.get('uid', None)
+                channel = request_dict.get('channel', None)
+                userID = tokenManager.accessDict.get('userID', None)
+                param_flag = CommonService.get_param_flag(data=[userID, uid, channel])
+                if param_flag is True:
+                    own_permission = ModelService.check_permission(userID=userID, permID=30)
+                    own_device = ModelService.check_own_device(userID=userID, UID=uid)
+                    if own_permission is True or own_device is True:
+                        device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
+                        if device_meal_queryset.exists():
+                            meal_id = device_meal_queryset[0].rank_id
+                            bucket_meal = {
+                                1: 'ansjer.meal.1',  # 7
+                                2: 'ansjer.meal.2',  # 30
+                            }
+                            s3 = S3ClassObject()
+                            data = s3.get_prefix_obj(prefix=uid + '_' + channel + '/', bucket=bucket_meal[meal_id])
+                            # return ResponseJSON(0, {'files': data,'bk':bucket_meal[meal_id]})
+                            return ResponseJSON(0, {'files': data})
                         else:
                         else:
-                            return response.json(404)
+                            return ResponseJSON(444)
                     else:
                     else:
-                        return response.json(444,'uid,channel')
+                        return ResponseJSON(404)
                 else:
                 else:
-                    return response.json(310)
+                    return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
-    def get_hls_vod(self, request_dict,response):
+    def get_hls_vod(self, request_dict):
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
-                
-                if userID is not None:
-                    key = request_dict.get('key', None)
-                    uid = request_dict.get('uid', None)
-                    channel = request_dict.get('channel', None)
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                key = request_dict.get('key', None)
+                uid = request_dict.get('uid', None)
+                channel = request_dict.get('channel', None)
+                userID = tokenManager.accessDict.get('userID', None)
+                param_flag = CommonService.get_param_flag(data=[userID, key, uid, channel])
+                if param_flag is True:
                     own_device = ModelService.check_own_device(userID=userID, UID=uid)
                     own_device = ModelService.check_own_device(userID=userID, UID=uid)
                     if own_device is True:
                     if own_device is True:
                         device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
                         device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
@@ -172,9 +168,10 @@ class HlsManage(View):
                             meal_id = device_meal_queryset[0].rank_id
                             meal_id = device_meal_queryset[0].rank_id
                             cf_domain = {
                             cf_domain = {
                                 1: 'http://d3om3d8c0l14oc.cloudfront.net/',
                                 1: 'http://d3om3d8c0l14oc.cloudfront.net/',
-                                2: 'http://d4neaolnu8h83.cloudfront.net/',
+                                2:'http://d4neaolnu8h83.cloudfront.net/',
                             }
                             }
-                            url = cf_domain[meal_id] + uid + '_' + channel + '/' + key
+                            url = cf_domain[meal_id]+uid + '_' + channel + '/' + key
+                            # url = 'http://d3om3d8c0l14oc.cloudfront.net/'+uid + '_' + channel + '/' + key
                             sign_url = CloudfrontSignUrl(url=url)
                             sign_url = CloudfrontSignUrl(url=url)
                             playlist_entries = [
                             playlist_entries = [
                                 {
                                 {
@@ -183,36 +180,36 @@ class HlsManage(View):
                                 }
                                 }
                             ]
                             ]
                             playlist = PlaylistGenerator(playlist_entries).generate()
                             playlist = PlaylistGenerator(playlist_entries).generate()
-                            response = HttpResponse(content_type='application/force-download', content=playlist)
-                            response['Content-Disposition'] = 'attachment; filename=' + key + '.m3u8'
+                            response = HttpResponse(content_type='application/force-download',content=playlist)
+                            response['Content-Disposition'] = 'attachment; filename='+key+'.m3u8'
                             # response['X-Sendfile'] = playlist
                             # response['X-Sendfile'] = playlist
-                            # return response.json(404)
+                            # return ResponseJSON(404)
                             return response
                             return response
                             # return HttpResponse(playlist)
                             # return HttpResponse(playlist)
                         else:
                         else:
-                            return response.json(0)
+                            return ResponseJSON(0)
                     else:
                     else:
-                        return response.json(15)
+                        return ResponseJSON(15)
                 else:
                 else:
-                    return response.json(310)
+                    return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
-        
+            return ResponseJSON(311)
+
     # mp4
     # mp4
-    def get_vod_url(self, request_dict,response):
+    def get_vod_url(self, request_dict):
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
                 key = request_dict.get('key', None)
                 key = request_dict.get('key', None)
                 uid = request_dict.get('uid', None)
                 uid = request_dict.get('uid', None)
                 channel = request_dict.get('channel', None)
                 channel = request_dict.get('channel', None)
-                if userID is not None:
+                userID = tokenManager.accessDict.get('userID', None)
+                param_flag = CommonService.get_param_flag(data=[userID, key, uid, channel])
+                if param_flag is True:
                     own_device = ModelService.check_own_device(userID=userID, UID=uid)
                     own_device = ModelService.check_own_device(userID=userID, UID=uid)
                     if own_device is True:
                     if own_device is True:
                         device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
                         device_meal_queryset = Device_Meal.objects.filter(uid=uid, channel=channel, status=1)
@@ -225,17 +222,17 @@ class HlsManage(View):
                             bk = bucket_meal[meal_id]
                             bk = bucket_meal[meal_id]
                             path = '/'+bk+'/'+uid+'_'+channel+'/'+key
                             path = '/'+bk+'/'+uid+'_'+channel+'/'+key
                             signUrl = getSignUrl(path=path)
                             signUrl = getSignUrl(path=path)
-                            return response.json(0,{'signUrl':signUrl})
+                            return ResponseJSON(0,{'signUrl':signUrl})
                         else:
                         else:
-                            return response.json(0)
+                            return ResponseJSON(0)
                     else:
                     else:
-                        return response.json(15)
+                        return ResponseJSON(15)
                 else:
                 else:
-                    return response.json(310)
+                    return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
 
 
 
 

+ 26 - 30
Controller/LogAccess.py

@@ -11,12 +11,11 @@
 @file: LogAccess.py
 @file: LogAccess.py
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Object.mongodb import mongodb
 from Object.mongodb import mongodb
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-
+from Service.ResponseService import *
 
 
 @csrf_exempt
 @csrf_exempt
 def LogAccess(request):
 def LogAccess(request):
@@ -30,35 +29,32 @@ def LogAccess(request):
         starttime = request.GET.get('starttime', None)
         starttime = request.GET.get('starttime', None)
         # 结束时间
         # 结束时间
         endtime = request.GET.get('endtime', None)
         endtime = request.GET.get('endtime', None)
-        response = ResponseObject()
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
-                if userID is not None:
-                    if page is not None and line is not None:
-                        own_per = ModelService.check_permission(userID=userID, permID=30)
-                        if own_per is True:
-                            query = {}
-                            if starttime is not None and starttime != '' and endtime is not None and endtime != '':
-                                query['time'] = {'$gte': int(starttime), '$lte': int(endtime)}
-                            elif starttime is not None and starttime != '':
-                                query['time'] = {'$gte': int(starttime)}
-                            elif endtime is not None and endtime != '':
-                                query['time'] = {'$lte': int(endtime)}
-                            col = "log_access"
-                            mdb = mongodb()
-                            qs = mdb.findAll(col=col, page=int(page), line=int(line), query=query)
-                            return response.json(0, qs)
-                        else:
-                            return response.json(404)
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
+                param_flag = CommonService.get_param_flag(data=[userID, page, line])
+                if param_flag is True:
+                    own_per = ModelService.check_permission(userID=userID, permID=30)
+                    if own_per is True:
+                        query = {}
+                        if starttime is not None and starttime != '' and endtime is not None and endtime != '':
+                            query['time'] = {'$gte': int(starttime),'$lte': int(endtime)}
+                        elif starttime is not None and starttime != '':
+                            query['time'] = {'$gte': int(starttime)}
+                        elif endtime is not None and endtime != '':
+                            query['time'] = {'$lte': int(endtime)}
+                        # var_dump(query)
+                        col = "log_access"
+                        mdb = mongodb()
+                        qs = mdb.findAll(col=col, page=int(page), line=int(line), query=query)
+                        return ResponseJSON(0,qs)
                     else:
                     else:
-                        return response.json(444,'page,line')
+                        return ResponseJSON(404)
                 else:
                 else:
-                    return response.json(310)
+                    return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)

+ 83 - 39
Controller/LogManager.py

@@ -4,10 +4,10 @@ from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from django.utils.decorators import method_decorator
 import Ansjer.settings as api_settings
 import Ansjer.settings as api_settings
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
-import time,os
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-from Ansjer.settings import BASE_DIR
+import time
+from Service.ResponseService import *
+from Ansjer.config import *
+from Service.TokenManager import JSONTokenManager
 
 
 
 
 def StatisticsData(request):
 def StatisticsData(request):
@@ -113,7 +113,6 @@ def StatisticsData(request):
     print('HTTP_USER_AGENT', request.META.get('HTTP_USER_AGENT', 'unknown'))
     print('HTTP_USER_AGENT', request.META.get('HTTP_USER_AGENT', 'unknown'))
     print('HTTP_AUTHORIZATION', request.META.get('HTTP_AUTHORIZATION', b'unknown'))
     print('HTTP_AUTHORIZATION', request.META.get('HTTP_AUTHORIZATION', b'unknown'))
 
 
-
 class HelpView(TemplateView):
 class HelpView(TemplateView):
     '''
     '''
     帮助说明,包括版本信息,帮助文件等
     帮助说明,包括版本信息,帮助文件等
@@ -134,42 +133,48 @@ class HelpView(TemplateView):
         return self.getRequestInfo(reInfoType,token)
         return self.getRequestInfo(reInfoType,token)
 
 
     def getRequestInfo(self, reInfoType,token):
     def getRequestInfo(self, reInfoType,token):
-        response = ResponseObject()
         if reInfoType is not None and token is not None:
         if reInfoType is not None and token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 own_permission = ModelService.check_permission(userID=userID, permID=30)
                 own_permission = ModelService.check_permission(userID=userID, permID=30)
                 if own_permission is True:
                 if own_permission is True:
+                    vInfo = versionInfo()
                     if reInfoType == 'version':
                     if reInfoType == 'version':
-                        return self.readInfo(response)
+                        response = HttpResponse(vInfo.readInfo())
+                        return response
                     elif reInfoType == 'requirements':
                     elif reInfoType == 'requirements':
-                        return self.requirementsInfo(response)
+                        response = HttpResponse(vInfo.requirementsInfo())
+                        return response
                     elif reInfoType == 'helpfile':
                     elif reInfoType == 'helpfile':
-                        return self.getHelpCHM(response)
+                        response = vInfo.getHelpCHM()
+                        return response
                     else:
                     else:
-                        return response.json(801)
+                        return ResponseJSON(801)
                 else:
                 else:
-                    return response.json(404)
+                    return ResponseJSON(404)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(800,'reInfoType','reInfoType')
+            return ResponseJSON(800)
+
+class versionInfo:
+    def __init__(self):
+        return
 
 
-    def readInfo(self,response):
+    def readInfo(self):
         verfilePath = '/'.join((api_settings.BASE_DIR, 'static/Help/')).replace('\\', '/') + 'version.txt'
         verfilePath = '/'.join((api_settings.BASE_DIR, 'static/Help/')).replace('\\', '/') + 'version.txt'
         if os.path.isfile(verfilePath):
         if os.path.isfile(verfilePath):
             file = open(verfilePath, encoding='utf-8')
             file = open(verfilePath, encoding='utf-8')
             versionStr = ''
             versionStr = ''
             for line in file:
             for line in file:
                 versionStr += line
                 versionStr += line
-            return response.json(0,{'versioninfo':versionStr})
+            return ResponseFormal(0,{'versioninfo':versionStr})
         else:
         else:
-            return response.json(701)
+            return ResponseFormal(701)
 
 
-    def requirementsInfo(self,response):
+    def requirementsInfo(self):
         requirementsPath = '/'.join((api_settings.BASE_DIR, 'requirements.txt')).replace('\\', '/')
         requirementsPath = '/'.join((api_settings.BASE_DIR, 'requirements.txt')).replace('\\', '/')
         print(requirementsPath)
         print(requirementsPath)
         if os.path.isfile(requirementsPath):
         if os.path.isfile(requirementsPath):
@@ -177,28 +182,68 @@ class HelpView(TemplateView):
             requirementsStr = ''
             requirementsStr = ''
             for line in file:
             for line in file:
                 requirementsStr += line
                 requirementsStr += line
-            return response.json(0,{'requirementsinfo': requirementsStr})
+            return ResponseFormal(0,{'requirementsinfo': requirementsStr})
         else:
         else:
-            return response.json(701)
+            return ResponseFormal(701)
 
 
-    def getHelpCHM(self,response):
+    def getHelpCHM(self):
         verHelpCHM = '/'.join((api_settings.BASE_DIR, 'static/Help/')).replace('\\', '/') + 'AnsjerHelp.CHM'
         verHelpCHM = '/'.join((api_settings.BASE_DIR, 'static/Help/')).replace('\\', '/') + 'AnsjerHelp.CHM'
         print(verHelpCHM)
         print(verHelpCHM)
         if os.path.isfile(verHelpCHM):
         if os.path.isfile(verHelpCHM):
             return OTAEquipment.downloadUrl(fileType='CHM', fileCode='', fileVersion='', fileName=verHelpCHM)
             return OTAEquipment.downloadUrl(fileType='CHM', fileCode='', fileVersion='', fileName=verHelpCHM)
         else:
         else:
-            return response.json(code=701)
+            return ResponseFormal(code=701)
+
+from django.core.cache import cache
+class ZxMiddleware(object):
+    def __init__(self):
+        self.online_ips = ()
+        self.online_count = 0
+
+    def process_request(self, request):
+        if 'HTTP_X_FORWARDED_FOR' in request.META:
+            ip = request.META['HTTP_X_FORWARDED_FOR']
+        else:
+            ip = request.META['REMOTE_ADDR']
+        online_ips = cache.get("online_ips", [])
+        if online_ips:
+            online_ips = cache.get_many(online_ips).keys()
+        cache.set(ip, 0, 15 * 60)
+        if ip not in online_ips:
+            online_ips.append(ip)
+        cache.set("online_ips", online_ips)
 
 
+def get_online_count():
+    online_ips = cache.get("online_ips", [])
+    if online_ips:
+        online_ips = cache.get_many(online_ips).keys()
+        return len(online_ips)
+    return 0
 
 
+class BlockedIpMiddleware3:
+    def __init__(self, get_response):
+        print(get_response, 'dddddddddddddd')
+        self.get_response = get_response
+        # One-time configuration and initialization.
+
+    def __call__(self, request):
+        # Code to be executed for each request before
+        # the view (and later middleware) are called.
+        print('sdcall', request)
+        response = self.get_response(request)
+
+        # Code to be executed for each request/response after
+        # the view is called.
+        return response
+
+@csrf_exempt
 def upload_help_chm(request):
 def upload_help_chm(request):
     token = request.POST.get('token', None)
     token = request.POST.get('token', None)
-    response = ResponseObject()
     if token is not None:
     if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
+        tokenManager = JSONTokenManager()
+        error_code = tokenManager.verify_AToken(token)
+        if error_code == 0:
+            userID = tokenManager.accessDict.get('userID', None)
             own_permission = ModelService.check_permission(userID=userID, permID=30)
             own_permission = ModelService.check_permission(userID=userID, permID=30)
             if own_permission is True:
             if own_permission is True:
                 f = request.FILES.get('file', None)
                 f = request.FILES.get('file', None)
@@ -211,16 +256,15 @@ def upload_help_chm(request):
                             destination.write(chunk)
                             destination.write(chunk)
                 except Exception as e:
                 except Exception as e:
                     print('error:' + repr(e))
                     print('error:' + repr(e))
-                    return response.json(700,{'details': repr(e)})
-                return response.json(0)
+                    return ResponseJSON(700,{'details': repr(e)})
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(tko.code)
+            return HttpResponse(tokenManager.errorCodeInfo(error_code))
     else:
     else:
-        return response.json(311)
+        return ResponseJSON(311)
 
 
 @csrf_exempt
 @csrf_exempt
 def errorPath(request,**kwargs):
 def errorPath(request,**kwargs):
-    response = ResponseObject()
-    return response.json(414)
+    return ResponseFormal(414)

+ 65 - 65
Controller/MealManage.py

@@ -11,17 +11,17 @@
 @file: MealManage.py
 @file: MealManage.py
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
+from django.shortcuts import HttpResponse
 from django.views.generic.base import View
 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.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Store_Meal
 from Model.models import Store_Meal
 import traceback
 import traceback
 from django.utils import timezone
 from django.utils import timezone
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
-
+from Service.ResponseService import ResponseJSON
 '''
 '''
 http://192.168.136.40:8077/meal/manage?operation=add&token=test&title=套餐A&price=$199&content=存7天&day=7&id=1
 http://192.168.136.40:8077/meal/manage?operation=add&token=test&title=套餐A&price=$199&content=存7天&day=7&id=1
 http://192.168.136.45:8077/meal/manage?operation=update&token=test&id=1&title=套餐A&price=$199&content=存3天&day=7
 http://192.168.136.45:8077/meal/manage?operation=update&token=test&id=1&title=套餐A&price=$199&content=存3天&day=7
@@ -44,36 +44,35 @@ class MealManage(View):
         return self.validation(request_dict=request.POST)
         return self.validation(request_dict=request.POST)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
-        token = request_dict.get('token', None)
-        if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
-                if userID is not None:
-                    operation = request_dict.get('operation', None)
-                    if operation == 'query':
-                        return self.query(request_dict, response)
-                    elif operation == 'add':
-                        return self.add(request_dict, userID, response)
-                    elif operation == 'update':
-                        return self.update(request_dict, userID, response)
-                    elif operation == 'delete':
-                        return self.delete(request_dict, userID, response)
-                    elif operation == 'find':
-                        return self.find(request_dict, userID, response)
-                    else:
-                        return response.json(444, 'operation')
+        operation = request_dict.get('operation', None)
+        if operation is not None:
+            token = request_dict.get('token', None)
+            if token is not None:
+                tokenManager = JSONTokenManager()
+                error_code = tokenManager.verify_AToken(token)
+                if error_code == 0:
+                    userID = tokenManager.accessDict.get('userID', None)
+                    param_flag = CommonService.get_param_flag(data=[userID])
+                    if param_flag is True:
+                        if operation == 'query':
+                            return self.query(request_dict=request_dict)
+                        elif operation == 'add':
+                            return self.add(request_dict=request_dict, userID=userID)
+                        elif operation == 'update':
+                            return self.update(request_dict=request_dict, userID=userID)
+                        elif operation == 'delete':
+                            return self.delete(request_dict=request_dict, userID=userID)
+                        elif operation == 'find':
+                            return self.find(request_dict=request_dict, userID=userID)
+                    return ResponseJSON(444)
                 else:
                 else:
-                    return response.json(310)
+                    return HttpResponse(tokenManager.errorCodeInfo(error_code))
             else:
             else:
-                return response.json(tko.code)
+                return ResponseJSON(311)
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(444)
 
 
-    def add(self, request_dict, userID, response):
+    def add(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=40)
         own_perm = ModelService.check_permission(userID=userID, permID=40)
         if own_perm is True:
         if own_perm is True:
             title = request_dict.get('title', None)
             title = request_dict.get('title', None)
@@ -85,7 +84,7 @@ class MealManage(View):
             if param_flag is True:
             if param_flag is True:
                 try:
                 try:
                     store_meal = Store_Meal(
                     store_meal = Store_Meal(
-                        id=id,
+                        id = id,
                         title=title,
                         title=title,
                         price=price,
                         price=price,
                         content=content,
                         content=content,
@@ -95,24 +94,25 @@ class MealManage(View):
                 except Exception:
                 except Exception:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(500, {'details': errorInfo})
+                    return ResponseJSON(500, {'details': errorInfo})
                 else:
                 else:
                     if store_meal.id:
                     if store_meal.id:
-                        return response.json(0, {
-                            'id': store_meal.id,
-                            'title': store_meal.title,
-                            'price': store_meal.price,
-                            'content': store_meal.content,
-                            'day': store_meal.day,
-                            'add_time': str(store_meal.add_time),
-                            'update_time': str(store_meal.update_time),
-                        })
+                        return ResponseJSON(0,
+                                                                         {
+                                                                             'id': store_meal.id,
+                                                                             'title': store_meal.title,
+                                                                             'price': store_meal.price,
+                                                                             'content': store_meal.content,
+                                                                             'day': store_meal.day,
+                                                                             'add_time': str(store_meal.add_time),
+                                                                             'update_time': str(store_meal.update_time),
+                                                                         })
 
 
-            return response.json(444)
+            return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def query(self, request_dict, response):
+    def query(self, request_dict):
         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])
@@ -121,14 +121,14 @@ class MealManage(View):
             if queryset.exists():
             if queryset.exists():
                 count = queryset.count()
                 count = queryset.count()
                 res = queryset[(page - 1) * line:page * line]
                 res = queryset[(page - 1) * line:page * line]
-                send_json = CommonService.qs_to_dict(res)
+                send_json = CommonService.query_set_to_dict(res)
                 send_json['count'] = count
                 send_json['count'] = count
-                return response.json(0, send_json)
-            return response.json(0)
+                return ResponseJSON(0, send_json)
+            return ResponseJSON(0)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def update(self, request_dict, userID, response):
+    def update(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             id = request_dict.get('id', None)
             id = request_dict.get('id', None)
@@ -138,14 +138,14 @@ class MealManage(View):
             content = request_dict.get('content', None)
             content = request_dict.get('content', None)
 
 
             param_flag = CommonService.get_param_flag(
             param_flag = CommonService.get_param_flag(
-                data=[id, title, price, content, day])
+                data=[id, title, price, content,day])
             if param_flag is True:
             if param_flag is True:
                 try:
                 try:
                     store_meal = Store_Meal.objects.get(id=id)
                     store_meal = Store_Meal.objects.get(id=id)
                 except Exception:
                 except Exception:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': errorInfo})
+                    return ResponseJSON(424, {'details': errorInfo})
                 else:
                 else:
                     if store_meal.id:
                     if store_meal.id:
                         now_time = timezone.localtime(timezone.now())
                         now_time = timezone.localtime(timezone.now())
@@ -155,14 +155,14 @@ class MealManage(View):
                         store_meal.content = content
                         store_meal.content = content
                         store_meal.day = day
                         store_meal.day = day
                         store_meal.save()
                         store_meal.save()
-                        return response.json(0, {'update_id': store_meal.id,
-                                                 'update_time': str(now_time)})
+                        return ResponseJSON(0, {'update_id': store_meal.id,
+                                                                                           'update_time': str(now_time)})
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def delete(self, request_dict, userID, response):
+    def delete(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         own_perm = ModelService.check_permission(userID=userID, permID=10)
         if own_perm is True:
         if own_perm is True:
             id_list = request_dict.getlist('id', None)
             id_list = request_dict.getlist('id', None)
@@ -174,15 +174,15 @@ class MealManage(View):
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': repr(e)})
+                    return ResponseJSON(424, {'details': repr(e)})
                 else:
                 else:
-                    return response.json(0)
+                    return ResponseJSON(0)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def find(self, request_dict, userID, response):
+    def find(self, request_dict, userID):
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         own_perm = ModelService.check_permission(userID=userID, permID=30)
         if own_perm is True:
         if own_perm is True:
             page = int(request_dict.get('page', None))
             page = int(request_dict.get('page', None))
@@ -193,11 +193,11 @@ class MealManage(View):
                 if queryset.exists():
                 if queryset.exists():
                     count = queryset.count()
                     count = queryset.count()
                     res = queryset[(page - 1) * line:page * line]
                     res = queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(res)
+                    send_json = CommonService.query_set_to_dict(res)
                     send_json['count'] = count
                     send_json['count'] = count
-                    return response.json(0, send_json)
-                return response.json(0)
+                    return ResponseJSON(0, send_json)
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)

+ 349 - 247
Controller/OTAEquipment.py

@@ -1,31 +1,46 @@
 from zlib import crc32
 from zlib import crc32
+from Ansjer.settings import *
 from django.core import serializers
 from django.core import serializers
 from wsgiref.util import FileWrapper
 from wsgiref.util import FileWrapper
 import traceback, hashlib
 import traceback, hashlib
-from Ansjer.config import SERVER_DOMAIN
+from Ansjer.settings import SERVER_DOMAIN
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
 from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from django.utils.decorators import method_decorator
 from Model.models import Equipment_Version
 from Model.models import Equipment_Version
 from Model.models import Device_User
 from Model.models import Device_User
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-import time, os,simplejson as json
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-from django.http import HttpResponse
-from Ansjer.settings import BASE_DIR
+from Service.ResponseService import *
+import time
+
+def getEquipmentVersion(code):
+    if code == '31162001A':
+        return ResponseFormal(0,{'softwareVersion': '1.4.3'})
+    try:
+        equipmentValid = Equipment_Version.objects.filter(code = code,status=1).order_by('-data_joined')
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('查询数据库错误: %s' % errorInfo)
+        return ResponseFormal(500,{'details':repr(e)})
+    else:
+        if equipmentValid:
+            equipment = equipmentValid[0]
+            return ResponseFormal(0, {'softwareVersion': equipment.softwareVersion})
+        else:
+            return ResponseFormal(900)
 
 
 
 
-def getUrl(filePath, http_host):
+def getUrl(filePath,http_host):
     urls = []
     urls = []
-    server_dm = 'http://' + http_host
+    server_dm = 'http://'+http_host
     filePaths = filePath.split(',')
     filePaths = filePath.split(',')
     if len(filePaths) > 0:
     if len(filePaths) > 0:
         for path in filePaths:
         for path in filePaths:
             if path.find('static/Upgrade/') != -1:
             if path.find('static/Upgrade/') != -1:
                 path = path.replace('static/Upgrade/', '').replace('\\', '/')
                 path = path.replace('static/Upgrade/', '').replace('\\', '/')
-                url = SERVER_DOMAIN + '/OTA/downloads/' + path + '?time=' + str(time.time())
+                url = SERVER_DOMAIN + '/OTA/downloads/' + path+'?time='+str(time.time())
                 urls.append(url)
                 urls.append(url)
             else:
             else:
                 url = SERVER_DOMAIN + 'OTA/downloads/' + filePath.replace('\\', '/')
                 url = SERVER_DOMAIN + 'OTA/downloads/' + filePath.replace('\\', '/')
@@ -34,35 +49,33 @@ def getUrl(filePath, http_host):
     else:
     else:
         return ''
         return ''
 
 
-
-def getUpdataFileUrl(code, http_host, response):
+def getUpdataFileUrl(code,http_host):
     try:
     try:
-        equipmentValid = Equipment_Version.objects.filter(code=code, status=1).order_by('-data_joined')
+        equipmentValid = Equipment_Version.objects.filter(code=code,status=1).order_by('-data_joined')
     except Exception as e:
     except Exception as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
         print('查询数据库错误: %s' % errorInfo)
-        return response.json(500, {'details': repr(e)})
+        return ResponseFormal(500,{'details':repr(e)})
     else:
     else:
         if equipmentValid:
         if equipmentValid:
             equipment = equipmentValid[0]
             equipment = equipmentValid[0]
             file_path = equipment.filePath
             file_path = equipment.filePath
-            url = getUrl(file_path, http_host)
-            https_url = getOTAHttps(file_path, http_host)
+            url = getUrl(file_path,http_host)
+            https_url = getOTAHttps(file_path,http_host)
             if len(url) > 0:
             if len(url) > 0:
-                return response.json(0, {
+                return ResponseFormal(0,{
                     "urlCount": len(url),
                     "urlCount": len(url),
                     "url": url,
                     "url": url,
-                    'https_url': https_url,
+                    'https_url':https_url,
                     "fileSize": equipment.fileSize,
                     "fileSize": equipment.fileSize,
                     "Description": equipment.Description,
                     "Description": equipment.Description,
                 })
                 })
             else:
             else:
-                return response.json(901)
+                return ResponseFormal(901)
         else:
         else:
-            return response.json(902)
-
+            return ResponseFormal(902)
 
 
-def getOTAHttps(filePath, http_host):
+def getOTAHttps(filePath,http_host):
     urls = ''
     urls = ''
     server_dm = 'https://' + http_host
     server_dm = 'https://' + http_host
     if filePath.find('static/Upgrade/') != -1:
     if filePath.find('static/Upgrade/') != -1:
@@ -70,56 +83,92 @@ def getOTAHttps(filePath, http_host):
         urls = server_dm + '/OTA/downloads/' + path + '?time=' + str(time.time())
         urls = server_dm + '/OTA/downloads/' + path + '?time=' + str(time.time())
     return urls
     return urls
 
 
-def addNewEquipmentVersion(deviceContent, token,response):
+def getDir(fileType, fileName, fileCode, fileVersion):
+    try:
+        if fileCode != None and fileVersion != None:
+            path = '/'.join((BASE_DIR, 'static/Upgrade', fileType, fileCode, fileVersion)).replace('\\', '/') + '/'
+        else:
+            if fileType != 'IPC' and fileType != 'DVR' and fileType != 'NVR' and fileType != 'XVR':
+                path = '/'.join((BASE_DIR, "static/Upgrade", 'Other')).replace('\\', '/')  + '/'
+
+        if not os.path.exists(path):
+            os.makedirs(path)
+            file_name = path + str(fileName)
+            if os.path.exists(file_name):
+                os.remove(file_name)
+            destination = open(file_name, 'wb+')
+            for chunk in fileName.chunks():
+                destination.write(chunk)
+            destination.close()
+        else:
+            file_name = path + str(fileName)
+            if os.path.exists(file_name):
+                os.remove(file_name)
+
+            destination = open(file_name, 'wb+')
+            for chunk in fileName.chunks():
+                destination.write(chunk)
+            destination.close()
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('上传文件错误: %s' % errorInfo)
+        return ResponseFormal(700,{'details':repr(e)})
+    else:
+        index = file_name.find('static/')
+        filePath = file_name[index:]
+        return ResponseFormal(0,{'filePath':filePath})
+
+
+def addNewEquipmentVersion(deviceContent,token):
     """
     """
     :param deviceContent:
     :param deviceContent:
     :return:
     :return:
     """
     """
-    if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        # 设置语言
-        response.lang = tko.res.get('lang', None)
-        if tko.code == 0:
-            userID = tko.userID
-            own_permission = ModelService.check_permission(userID=userID, permID=220)
-            if own_permission is True:
-                try:
-                    deviceData = json.loads(deviceContent)
-                except Exception as e:
-                    print(deviceData)
-                    return response.json(803)
-                else:
-                    version = deviceData.get('version', None)
-                    if version is not None:
-                        filePath = deviceData.get('filePath', None)
-
-                        if filePath is not None:
-                            try:
-                                deviceData['filePath'] = ','.join(filePath)
-                                equipmentVersion = Equipment_Version(
-                                    eid=CommonService.getUserID(getUser=False, setOTAID=True),
-                                    **deviceData)
-                                equipmentVersion.save()
-                            except Exception as e:
-                                errorInfo = traceback.format_exc()
-                                print('添加设备错误: %s ' % errorInfo)
-                                return response.json(806, repr(e))
-                            else:
-                                res =CommonService.qs_to_dict([equipmentVersion])
-                                return response.json(0, res)
-                        else:
-                            return response.json(806)
-                    else:
-                        return response.json(806)
-
-            else:
-                return response.json(404)
-
+    if token is None:
+        return ResponseJSON(311)
+    tokenManager = JSONTokenManager()
+    error_code = tokenManager.verify_AToken(token)
+    if error_code == 0:
+        pass
     else:
     else:
-        return response.json(311)
-
+        return tokenManager.errorCodeInfo(error_code)
+    userID = tokenManager.accessDict.get('userID', None)
+    own_permission = ModelService.check_permission(userID=userID, permID=220)
+    if own_permission is not True:
+        # pass
+        return ResponseFormal(404)
+    try:
+        # print(deviceContent)
+        deviceData = json.loads(deviceContent)
+        print('----------')
+        print(deviceData)
+    except Exception as e:
+        return ResponseFormal(803)
+    else:
+        version = deviceData.get('version', None)
+        if version != None:
+            eVersionValid = Equipment_Version.objects.filter(version = version)
+            # if eVersionValid:
+            #     return ResponseFormal(904)
+        else:
+            return ResponseFormal(806)
+        try:
+            filePath = deviceData.get('filePath', None)
 
 
+            if filePath == None:
+                return ResponseFormal(806)
+            deviceData['filePath'] = ','.join(filePath)
+            equipmentVersion = Equipment_Version(eid = CommonService.getUserID(getUser=False, setOTAID=True), **deviceData)
+            equipmentVersion.save()
+        except Exception as e:
+            errorInfo = traceback.format_exc()
+            print('添加设备错误: %s ' % errorInfo)
+            return ResponseFormal(806,{'details':repr(e)})
+        else:
+            sqlJSON = serializers.serialize('json', [equipmentVersion])
+            sqlList = json.loads(sqlJSON)
+            sqlDict =dict(zip(["datas"], [sqlList]))
+            return ResponseFormal(0,sqlDict)
 
 
 def downloadUrl(fileType, fileCode, fileVersion, fileName):
 def downloadUrl(fileType, fileCode, fileVersion, fileName):
     fullPath = os.path.join(BASE_DIR, "static/Upgrade").replace('\\', '/')
     fullPath = os.path.join(BASE_DIR, "static/Upgrade").replace('\\', '/')
@@ -158,59 +207,24 @@ def downloadUrl(fileType, fileCode, fileVersion, fileName):
             return response
             return response
 
 
         except Exception as e:
         except Exception as e:
-            res =ResponseObject()
-            errorJSON = res.formal(906, {'details': repr(e)})
+            errorJSON = ResponseFormal(906,{'details':repr(e)})
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response['Content-Error'] = errorJSON
             response['Content-Error'] = errorJSON
             return response
             return response
     else:
     else:
-        res = ResponseObject()
-        errorJSON = res.formal(907)
+        errorJSON = ResponseFormal(907)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         response['Content-Error'] = errorJSON
         return response
         return response
 
 
-def getMD5orSHA265(fileName, encryptionType='MD5'):
-    """
-
-    :param filePath:
-    :param encryptionType:
-    :return:
-    """
-    if not os.path.isfile(fileName):
-        return ''
-    else:
-        if encryptionType == 'MD5':
-            encryption = hashlib.md5()
-        elif encryptionType == 'SHA265':
-            encryption = hashlib.sha256()
-        elif encryptionType == 'CRC32':
-            f = open(fileName, 'rb')
-            chunk = f.read()
-            return crc32(chunk)
-
-        f = open(fileName, 'rb')
-        block_size = 8192  # why is 8192 | 8192 is fast than 2048
-
-        while True:
-            chunk = f.read(block_size)
-            if not chunk:
-                break
-            encryption.update(chunk)
-
-        f.close()
-        return encryption.hexdigest()
-
-
 @csrf_exempt
 @csrf_exempt
-def downloadUpdataFileUrl(request):
-    response = ResponseObject()
+def downloadUpdataFileUrl(request, *callback_args, **callback_kwargs):
     if request.method == 'GET':
     if request.method == 'GET':
         request_dict = request.GET
         request_dict = request.GET
     elif request.method == 'POST':
     elif request.method == 'POST':
         request_dict = request.POST
         request_dict = request.POST
     else:
     else:
-        errorJSON = response.formal(801)
+        errorJSON = ResponseFormal(801)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         response['Content-Error'] = errorJSON
         return response
         return response
@@ -220,51 +234,47 @@ def downloadUpdataFileUrl(request):
     fileName = request_dict.get('fileName', None)
     fileName = request_dict.get('fileName', None)
     if fileType != None and fileCode != None and fileVersion != \
     if fileType != None and fileCode != None and fileVersion != \
             None and fileName != None:
             None and fileName != None:
-        return downloadUrl(fileType, fileCode, fileVersion, fileName,response)
-
+        response = downloadUrl(fileType, fileCode, fileVersion, fileName)
+        return response
     else:
     else:
-        errorJSON = response.formal(800)
+        errorJSON = ResponseFormal(800)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         response['Content-Error'] = errorJSON
         return response
         return response
 
 
-
 '''
 '''
 http://192.168.136.40:8077/OTA/getEquipmentVersion?31AX162001A
 http://192.168.136.40:8077/OTA/getEquipmentVersion?31AX162001A
 '''
 '''
-
-
 @csrf_exempt
 @csrf_exempt
-def getEquipmentVersionInterface(request):
-    response = ResponseObject()
+def getEquipmentVersionInterface(request,
+                                 *callback_args, **callback_kwargs):
     if request.method == "POST":
     if request.method == "POST":
-        request.encoding = 'utf-8'
+        request.encoding ='utf-8'
         code = request.POST.get('code', None)
         code = request.POST.get('code', None)
+
+        if code is not None:
+            response = HttpResponse(getEquipmentVersion(code))
+            return response
+
+        else:
+            return ResponseJSON(800)
     elif request.method == "GET":
     elif request.method == "GET":
         request.encoding = 'gb2312'
         request.encoding = 'gb2312'
         code = request.GET.get('code', None)
         code = request.GET.get('code', None)
-    else:
-        return response.json(801)
-    if code is not None:
-        try:
-            equipmentValid = Equipment_Version.objects.filter(code=code, status=1).order_by('-data_joined')
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('查询数据库错误: %s' % errorInfo)
-            return response.json(500, {'details': repr(e)})
+
+        if code is not None:
+            response = HttpResponse(getEquipmentVersion(code))
+            return response
+
         else:
         else:
-            if equipmentValid:
-                equipment = equipmentValid[0]
-                return response.json(0, {'softwareVersion': equipment.softwareVersion})
-            else:
-                return response.json(900)
-    else:
-        return response.json(800)
+            return ResponseJSON(800)
 
 
+    else:
+        return ResponseJSON(801)
 
 
 @csrf_exempt
 @csrf_exempt
-def getUpdataFileUrlInterface(request):
-    response = ResponseObject()
+def getUpdataFileUrlInterface(request,
+                              *callback_args, **callback_kwargs):
     if request.method == "POST":
     if request.method == "POST":
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         request_dict = request.POST
         request_dict = request.POST
@@ -272,19 +282,17 @@ def getUpdataFileUrlInterface(request):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         request_dict = request.GET
         request_dict = request.GET
     else:
     else:
-        return response.json(801)
+        return ResponseJSON(801)
     code = request_dict.get('code', None)
     code = request_dict.get('code', None)
     http_host = request.META.get('HTTP_HOST', None)
     http_host = request.META.get('HTTP_HOST', None)
     if code is not None:
     if code is not None:
-        return getUpdataFileUrl(code, http_host, response)
+        return HttpResponse(getUpdataFileUrl(code,http_host))
     else:
     else:
-        return response.json(800)
-
+        return ResponseJSON(800)
 
 
 @csrf_exempt
 @csrf_exempt
 def downloadUpdataFileUrlInterface(request, fileType, fileName,
 def downloadUpdataFileUrlInterface(request, fileType, fileName,
                                    *callback_args, **callback_kwargs):
                                    *callback_args, **callback_kwargs):
-    res = ResponseObject()
     if fileType is not None and fileName is not None:
     if fileType is not None and fileName is not None:
         fullPath = os.path.join(BASE_DIR, "static/Upgrade/").replace('\\', '/')
         fullPath = os.path.join(BASE_DIR, "static/Upgrade/").replace('\\', '/')
         if fileType == 'IPC':
         if fileType == 'IPC':
@@ -310,14 +318,14 @@ def downloadUpdataFileUrlInterface(request, fileType, fileName,
         print(fullPath)
         print(fullPath)
         if os.path.isfile(fullPath):
         if os.path.isfile(fullPath):
             try:
             try:
-                JSON = res.formal(0)
+                JSON = ResponseFormal(0)
                 if fileType != 'User':
                 if fileType != 'User':
                     wrapper = FileWrapper(open(fullPath, 'rb'))
                     wrapper = FileWrapper(open(fullPath, 'rb'))
                     response = HttpResponse(wrapper, content_type="application/octet-stream")
                     response = HttpResponse(wrapper, content_type="application/octet-stream")
                     response['Content-Length'] = os.path.getsize(fullPath)
                     response['Content-Length'] = os.path.getsize(fullPath)
                     response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(fullPath)
                     response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(fullPath)
                     response['Content-MD5'] = getMD5orSHA265(fullPath)
                     response['Content-MD5'] = getMD5orSHA265(fullPath)
-                    # 校验文件md5值
+                    #校验文件md5值
                     response['Content-SHA265'] = getMD5orSHA265(fullPath, 'SHA265')
                     response['Content-SHA265'] = getMD5orSHA265(fullPath, 'SHA265')
                     response['Content-CRC32'] = getMD5orSHA265(fullPath, 'CRC32')
                     response['Content-CRC32'] = getMD5orSHA265(fullPath, 'CRC32')
                     response['Content-Error'] = JSON
                     response['Content-Error'] = JSON
@@ -327,23 +335,22 @@ def downloadUpdataFileUrlInterface(request, fileType, fileName,
                     response = HttpResponse(Imagedata, content_type="image/jpeg")
                     response = HttpResponse(Imagedata, content_type="image/jpeg")
                     return response
                     return response
             except Exception as e:
             except Exception as e:
-                errorJSON = res.formal(906)
+                errorJSON = ResponseFormal(906)
                 response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
                 response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
                 response['Content-Error'] = errorJSON
                 response['Content-Error'] = errorJSON
                 return response
                 return response
         else:
         else:
-            errorJSON = res.formal(907)
+            errorJSON = ResponseFormal(907)
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response['Content-Error'] = errorJSON
             response['Content-Error'] = errorJSON
             return response
             return response
 
 
     else:
     else:
-        errorJSON = res.formal(800)
+        errorJSON = ResponseFormal(800)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         response['Content-Error'] = errorJSON
         return response
         return response
 
 
-
 class getUploadFiletoDirView(TemplateView):
 class getUploadFiletoDirView(TemplateView):
     @method_decorator(csrf_exempt)
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
     def dispatch(self, *args, **kwargs):
@@ -351,45 +358,55 @@ class getUploadFiletoDirView(TemplateView):
 
 
     def post(self, request, *args, **kwargs):
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        request_dict = request.POST
+
+        token = request.POST.get('token', None)
+        fileType = request.POST.get('fileType', None)
+        fileCode = request.POST.get('fileCode', None)
+        fileVersion = request.POST.get('fileVersion', None)
         fileName = request.FILES.get('fileName', None)
         fileName = request.FILES.get('fileName', None)
-        return self.ValidationError(request_dict,fileName)
+
+        return self.ValidationError(token, fileType, fileName,
+                                     filefileCode=fileCode, fileVersion=fileVersion)
 
 
     def get(self, request, *args, **kwargs):
     def get(self, request, *args, **kwargs):
         request.encoding = 'gb2312'
         request.encoding = 'gb2312'
-        request_dict = request.GET
+
+        token = request.GET.get('token', None)
+        fileType = request.GET.get('fileType', None)
+        fileCode = request.GET.get('fileCode', None)
+        fileVersion = request.GET.get('fileVersion', None)
         fileName = request.FILES.get('fileName', None)
         fileName = request.FILES.get('fileName', None)
-        return self.ValidationError(request_dict,fileName)
-
-    def ValidationError(self, request_dict,fileName):
-        response = ResponseObject()
-        token = request_dict.get('token', None)
-        fileType = request_dict.get('fileType', None)
-        fileCode = request_dict.get('fileCode', None)
-        fileVersion = request_dict.get('fileVersion', None)
+        return self.ValidationError(token, fileType, fileName,filefileCode=fileCode, fileVersion=fileVersion)
+
+    def ValidationError(self, token, fileType, fileName, *args, **kwargs):
         if fileName != None and fileType != None and token != None:
         if fileName != None and fileType != None and token != None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
-                if userID is not None:
+            tM = JSONTokenManager()
+            error_code = tM.verify_AToken(token)
+            if error_code == 0:
+                userID = tM.accessDict.get('userID', None)
+                if userID:
                     own_permission = ModelService.check_permission(userID=userID, permID=210)
                     own_permission = ModelService.check_permission(userID=userID, permID=210)
                     if own_permission is True:
                     if own_permission is True:
+                        fileCode = kwargs.get('fileCode', None)
+                        fileVersion = kwargs.get('fileVersion', None)
                         if fileVersion != None and fileCode != None:
                         if fileVersion != None and fileCode != None:
-                            return self.getUploadFiletoDir(userID, fileType, fileName,response,fileCode, fileVersion=fileVersion)
+                            response = HttpResponse(self.getUploadFiletoDir(userID, fileType, fileName,
+                                                                            fileCode, fileVersion=fileVersion))
+                            return response
                         else:
                         else:
-                            return self.getUploadFiletoDir(userID, fileType, fileName,response)
+                            response = HttpResponse(self.getUploadFiletoDir(userID, fileType, fileName))
+                            return response
                     else:
                     else:
-                        return response.json(404)
+                        return ResponseJSON(404)
                 else:
                 else:
-                    return response.json(310)
+                    return ResponseJSON(310)
             else:
             else:
-                return response.json(tko.code)
+                response = HttpResponse(tM.errorCodeInfo(error_code))
+                return response
         else:
         else:
-            return response.json(800)
+            return ResponseJSON(800)
 
 
-    def getUploadFiletoDir(self, userID, fileType, fileName,response, *args, **kwargs):
+    def getUploadFiletoDir(self, userID, fileType, fileName, *args, **kwargs):
         """
         """
         将上传的文件写入服务器对应目录下
         将上传的文件写入服务器对应目录下
         :param Type: equipment type
         :param Type: equipment type
@@ -397,17 +414,17 @@ class getUploadFiletoDirView(TemplateView):
         :return: filePath
         :return: filePath
         """
         """
         try:
         try:
-            User = Device_User.objects.filter(userID=userID)
+            User = Device_User.objects.filter(userID = userID)
         except Exception as e:
         except Exception as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('查询数据库错误: %s' % errorInfo)
             print('查询数据库错误: %s' % errorInfo)
-            return response.json(500, {'details': repr(e)})
+            return ResponseFormal(500,{'details':repr(e)})
         else:
         else:
             if not User:
             if not User:
-                return response.json(113)
-            own_perm = ModelService.check_permission(userID, permID=210)
+                return ResponseFormal(113)
+            own_perm = ModelService.check_permission(userID,permID=210)
             if own_perm is not True:
             if own_perm is not True:
-                return response.json(605)
+                return ResponseFormal(605)
             updataFile = fileName.name
             updataFile = fileName.name
             updataFile = updataFile.replace(' ', '+')
             updataFile = updataFile.replace(' ', '+')
             versionIndex = updataFile.find('.', updataFile.find('.', updataFile.find('.') + 1) + 1)
             versionIndex = updataFile.find('.', updataFile.find('.', updataFile.find('.') + 1) + 1)
@@ -418,88 +435,63 @@ class getUploadFiletoDirView(TemplateView):
                 fileCode = len(updataFile[versionIndex + 1: codeIndex]) > 0 and \
                 fileCode = len(updataFile[versionIndex + 1: codeIndex]) > 0 and \
                            updataFile[versionIndex + 1: codeIndex] or None
                            updataFile[versionIndex + 1: codeIndex] or None
                 if fileCode is not None and fileVersion is not None:
                 if fileCode is not None and fileVersion is not None:
-                    return self.getDir(fileType, fileName, fileCode, fileVersion)
+                    return getDir(fileType, fileName, fileCode, fileVersion)
                 else:
                 else:
                     fileCode = kwargs.get('fileCode', None)
                     fileCode = kwargs.get('fileCode', None)
                     fileVersion = kwargs.get('fileVersion', None)
                     fileVersion = kwargs.get('fileVersion', None)
                     print(fileCode, fileVersion)
                     print(fileCode, fileVersion)
                     if fileCode != None and fileVersion != None:
                     if fileCode != None and fileVersion != None:
-                        return self.getDir(fileType, fileName, fileCode, fileVersion)
+                        return getDir(fileType, fileName, fileCode, fileVersion)
                     else:
                     else:
-                        return response.json(903)
+                        return ResponseFormal(903)
             else:
             else:
                 fileCode = kwargs.get('fileCode', None)
                 fileCode = kwargs.get('fileCode', None)
                 fileVersion = kwargs.get('fileVersion', None)
                 fileVersion = kwargs.get('fileVersion', None)
                 if fileCode != None and fileVersion != None:
                 if fileCode != None and fileVersion != None:
-                    return self.getDir(fileType, fileName, fileCode, fileVersion,response)
+                    return getDir(fileType, fileName, fileCode, fileVersion)
                 else:
                 else:
-                    return response.json(903)
-
-    def getDir(self,fileType, fileName, fileCode, fileVersion, response):
-        try:
-            if fileCode != None and fileVersion != None:
-                path = '/'.join((BASE_DIR, 'static/Upgrade', fileType, fileCode, fileVersion)).replace('\\', '/') + '/'
-            else:
-                if fileType != 'IPC' and fileType != 'DVR' and fileType != 'NVR' and fileType != 'XVR':
-                    path = '/'.join((BASE_DIR, "static/Upgrade", 'Other')).replace('\\', '/') + '/'
-
-            if not os.path.exists(path):
-                os.makedirs(path)
-                file_name = path + str(fileName)
-                if os.path.exists(file_name):
-                    os.remove(file_name)
-                destination = open(file_name, 'wb+')
-                for chunk in fileName.chunks():
-                    destination.write(chunk)
-                destination.close()
-            else:
-                file_name = path + str(fileName)
-                if os.path.exists(file_name):
-                    os.remove(file_name)
-
-                destination = open(file_name, 'wb+')
-                for chunk in fileName.chunks():
-                    destination.write(chunk)
-                destination.close()
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('上传文件错误: %s' % errorInfo)
-            return response.json(700, {'details': repr(e)})
-        else:
-            index = file_name.find('static/')
-            filePath = file_name[index:]
-            return response.json(0, {'filePath': filePath})
-
+                    return ResponseFormal(903)
 
 
 @csrf_exempt
 @csrf_exempt
-def addNewEquipmentVersionInterface(request):
-
-    response = ResponseObject()
+def addNewEquipmentVersionInterface(request, *callback_args,
+                                    **callback_kwargs):
     if request.method == "POST":
     if request.method == "POST":
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
-        request_dict = request.POST
+        deviceContent = request.POST.get('content', None).encode('utf-8')
+        token = request.POST.get('token', None)
+        deviceContent = str(deviceContent, encoding='utf-8')
+        deviceContent = deviceContent.replace(' ', ' ').replace('\'', '\"')
+        print(deviceContent, type(deviceContent))
+        if deviceContent is not None:
+            response = HttpResponse(addNewEquipmentVersion(deviceContent,token))
+            return response
+        else:
+            return ResponseJSON(800)
+
     elif request.method == "GET":
     elif request.method == "GET":
         request.encoding = 'gb2312'
         request.encoding = 'gb2312'
-        request_dict = request.GET
-    else:
-        return response.json(801)
-    deviceContent = request_dict.get('content', None).encode('utf-8')
-    token = request_dict.get('token', None)
-    deviceContent = str(deviceContent, encoding='utf-8')
-    deviceContent = deviceContent.replace(' ', ' ').replace('\'', '\"')
-    if deviceContent is not None:
-        return addNewEquipmentVersion(deviceContent, token,response)
-    else:
-        return response.json(800)
 
 
+        deviceContent = request.GET.get('content', None).encode('gb2312')
+        deviceContent = str(deviceContent, encoding='gb2312')
+        token = request.GET.get('token', None)
+        deviceContent = deviceContent.replace(' ', ' ').replace('\'', '\"')
+        if deviceContent is not None:
+            response = HttpResponse(addNewEquipmentVersion(deviceContent,token))
+            return response
 
 
-def showAllEquipmentVersion(userID,response):
+        else:
+            return ResponseJSON(800)
+    else:
+        return ResponseJSON(801)
+
+@csrf_exempt
+def showAllEquipmentVersion(userID):
     try:
     try:
-        userValid = Device_User.objects.filter(userID=userID).order_by('-data_joined')
+        userValid = Device_User.objects.filter(userID = userID).order_by('-data_joined')
     except Exception as e:
     except Exception as e:
         errorInfo = traceback.format_exc()
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
         print('查询数据库错误: %s' % errorInfo)
-        return response.json(500)
+        return ResponseFormal(500)
     else:
     else:
         if userValid:
         if userValid:
             own_permission = ModelService.check_permission(userID=userID, permID=240)
             own_permission = ModelService.check_permission(userID=userID, permID=240)
@@ -508,33 +500,143 @@ def showAllEquipmentVersion(userID,response):
                 sqlList = json.loads(sqlJSON)
                 sqlList = json.loads(sqlJSON)
                 print(sqlList, sqlJSON)
                 print(sqlList, sqlJSON)
                 sqlDict = dict(zip(["datas"], [sqlList]))
                 sqlDict = dict(zip(["datas"], [sqlList]))
-                return response.json(0, sqlDict)
+                return ResponseFormal(0,sqlDict)
             else:
             else:
-                return response.json(604)
+                return ResponseFormal(604)
         else:
         else:
-            return response.json(113)
-
+            return ResponseFormal(113)
 
 
 @csrf_exempt
 @csrf_exempt
-def showAllEquipmentVersionInterface(request):
-    response = ResponseObject()
+def showAllEquipmentVersionInterface(request, *callback_args,
+                                 **callback_kwargs):
     if request.method == 'POST':
     if request.method == 'POST':
         token = request.POST.get('token', None)
         token = request.POST.get('token', None)
+
+        if token != None:
+            tM = JSONTokenManager()
+            error_code = tM.verify_AToken(token)
+            if error_code == 0:
+                userID = tM.accessDict.get('userID', None)
+                if userID:
+                    response = HttpResponse(showAllEquipmentVersion(userID))
+                    return response
+                else:
+                    return ResponseJSON(310)
+            else:
+                response = HttpResponse(tM.errorCodeInfo(error_code))
+                return response
+
+        else:
+            return ResponseJSON(800)
+
     elif request.method == 'GET':
     elif request.method == 'GET':
         token = request.GET.get('token', None)
         token = request.GET.get('token', None)
-    if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
-            if userID:
-                return showAllEquipmentVersion(userID,response)
+
+        if token != None:
+            tM = JSONTokenManager()
+            error_code = tM.verify_AToken(token)
+            if error_code == 0:
+                userID = tM.accessDict.get('userID', None)
+                if userID:
+                    response = HttpResponse(showAllEquipmentVersion(userID))
+                    return response
+                else:
+                    return ResponseJSON(310)
+
             else:
             else:
-                return response.json(310)
+                response = HttpResponse(tM.errorCodeInfo(error_code))
+                return response
         else:
         else:
-            return response.json(tko.code)
+            return ResponseJSON(800)
+
+import zlib
+@csrf_exempt
+def getCRC32(filePath):
+    print(filePath)
+    block_size = 1024 * 1024
+    crc = 0
+
+    try:
+        fd = open(filePath, 'rb')
+        while True:
+            buffer = fd.read(block_size)
+            if len(buffer) == 0:  # EOF or file empty. return hashes
+                fd.close()
+                return crc  # 返回的是十进制的值
+
+            crc = zlib.crc32(buffer, crc)
+    except Exception as e:
+        return ResponseFormal(908,{'details':repr(e)})
+
+def getMD5orSHA265(fileName, encryptionType='MD5'):
+    """
+
+    :param filePath:
+    :param encryptionType:
+    :return:
+    """
+    if not os.path.isfile(fileName):
+        return ''
     else:
     else:
-        return response.json(800)
+        if encryptionType == 'MD5':
+            encryption = hashlib.md5()
+        elif encryptionType == 'SHA265':
+            encryption = hashlib.sha256()
+        elif encryptionType == 'CRC32':
+            f = open(fileName, 'rb')
+            chunk = f.read()
+            return crc32(chunk)
+
+        f = open(fileName, 'rb')
+        block_size = 8192  # why is 8192 | 8192 is fast than 2048
+
+        while True:
+            chunk = f.read(block_size)
+            if not chunk:
+                break
+            encryption.update(chunk)
+
+        f.close()
+        return encryption.hexdigest()
 
 
+def CRC(fileName):
+    fd = open(fileName, 'rb')
+    dwSize = os.path.getsize(fileName)
+    lpBuffer = fd.read()
+
+    crc = -1
+    CRC32Table = [0] * 256
+    ulPolynomial = 0x04C11DB7
+    len = dwSize
+    buffer = lpBuffer
+    for index in range(0xFF):
+        value = 0
+        ref = index
+
+        for n in range(9):
+            if ref & 1:
+                value |= 1 << (8 - n)
+            ref >>= 1
+
+        CRC32Table[index] = value << 24
+        for j in range(8):
+            CRC32 = CRC32Table[index] & (1 << 31) and ulPolynomial or 0
+            CRC32Table[index] = (CRC32Table[index] << 1) ^ CRC32
+        value = 0
+        ref = CRC32Table[index]
+        for n in range(33):
+            if ref & 1:
+                value |= 1 << (32 - n)
+            ref >>= 1
+        CRC32Table[index] = value
+
+    index = 0
+    while len:
+        len -= 1
+        crc = (crc >> 8) ^ CRC32Table[(crc & 0xFF) ^ buffer[index]]
+        index += 1
+
+    print(crc ^ 0xffffffff)
+
+    return crc ^ 0xffffffff
 
 

+ 106 - 255
Controller/OauthManage.py

@@ -11,276 +11,127 @@
 @file: OauthManage.py
 @file: OauthManage.py
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
-from var_dump import var_dump
-from django.utils.timezone import utc
 from django.views.generic.base import View
 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 Model.models import oauth_user, Device_User
-from Service.ModelService import ModelService
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
-from Service.CommonService import CommonService
-from Controller.CheckUserData import DataValid
+from Service.TokenManager import *
+from Model.models import oauth_user,Auth_Captcha
 from django.contrib import auth
 from django.contrib import auth
-import json, requests, datetime
-from django.contrib.auth.hashers import make_password  # 对密码加密模块
-from Ansjer.config import DOMAIN_OAUTH_URI
-
-'''
-http://192.168.136.40:8077/oauth/relate/?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvaWQiOiI3N2EzNzJmYi1jNDdiLTQ5OWQtYmY3Ni0wMTIwNzdiNGRiM2MiLCJleHAiOjE1MzQyMTE1MDR9.9DAwCctDk_qwn1kHfPqkvSGiFMunnb7I9mU44YlNchE
-'''
-
+from django.http import HttpResponseRedirect
+import json
+from Service.ResponseService import *
+import requests
+from Service.ModelService import ModelService
+from django.middleware.csrf import get_token
+from django.http import JsonResponse
 
 
-class OauthRelateView(View):
+class OauthManage(View):
     @method_decorator(csrf_exempt)
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
     def dispatch(self, *args, **kwargs):
-        return super(OauthRelateView, self).dispatch(*args, **kwargs)
-
-    # 定义host
-    __http_host = None
-
+        return super(OauthManage, self).dispatch(*args, **kwargs)
     # 查询
     # 查询
-    def get(self, request):
-        request.encoding = 'utf-8'
-        self.__http_host = request.META.get('PATH_INFO', None)
-        response = ResponseObject()
-        token = request.GET.get('token', None)
-        return self.relate(token, response)
+    def get(self, request, *args, **kwargs):
 
 
+        return
     # 认证登录
     # 认证登录
-    def post(self, request):
-        self.__http_host = request.META.get('PATH_INFO', None)
-        response = ResponseObject()
+    def post(self, request, *args, **kwargs):
         try:
         try:
             json_data = json.loads(request.body.decode("utf-8"))
             json_data = json.loads(request.body.decode("utf-8"))
         except Exception as e:
         except Exception as e:
             print(repr(e))
             print(repr(e))
-            return response.json(10, repr(e))
+            return ResponseJSON(10,repr(e))
         else:
         else:
-            token = json_data.get('token', None)
-            return self.relate(token, response)
-
-    def relate(self, token, response):
-
-        if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            # 设置语言
-            response.lang = tko.lang
-            if tko.code == 0:
-                oid = tko.oid
-                if oid is not None:
-                    # 判断用户是否已关联
-                    userID = tko.userID()
-                    if userID is not None:
-                        return self.loginUpdate(userID, response)
-                    # 未关联情况下进行关联,并创建用户
-                    else:
-                        return self.relateUser(oid, token, response)
-
-                else:
-                    return response.json(444, 'oid')
-            else:
-                return response.json(tko.code)
-        else:
-            return response.json(444, 'token')
-
-    def loginUpdate(self, userID, response):
-        now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
-        userData = Device_User.objects.filter(userID=userID)
-        userData.update(last_login=now_time, online=True)
-        return self.responseRes(userData[0], response)
-
-    def relateUser(self, oid, token, response):
-        try:
-            http_oauth = requests.get(
-                url='{domain_oauth}accounts/{oid}/'.format(oid=oid, domain_oauth=DOMAIN_OAUTH_URI),
-                params={'token': token}
-            )
-            get_res = http_oauth.json()
-        except Exception as e:
-            return response.json(10, repr(e))
-        else:
-            code = get_res.get('code', None)
-            if code == 0:
-                datas = get_res['res']
-                username = datas.get('username', None)
-                password = datas.get('password', None)
-                userValid = Device_User.objects.filter(username=username)
+            access_token = json_data.get('access_token', None)
+            if access_token is not None:
                 try:
                 try:
-                    if userValid.exists():
-                        UserData = userValid[0]
-                    else:
-                        dataValid = DataValid()
-                        if dataValid.email_validate(username):
-                            UserData = Device_User(username=username, userEmail=username, password=password,
-                                                   userID=CommonService.getUserID(μs=False, setOTAID=True),
-                                                   is_active=True, user_isValid=True)
-                        else:
-                            UserData = Device_User(username=username, password=password,
-                                                   userID=CommonService.getUserID(μs=False, setOTAID=True),
-                                                   is_active=True, user_isValid=True)
-                        UserData.save()
+                    ser = requests.get(url='http://192.168.136.45:9898/accounts/user/',
+                                       data={'access_token': access_token})
+                    ser_data = json.loads(ser.content)
                 except Exception as e:
                 except Exception as e:
-                    var_dump(repr(e))
-                    return response.json(106)
-                else:
-                    ourValid = oauth_user.objects.get_or_create(oid=oid, userID=UserData)
-                    if ourValid:
-                        return self.responseRes(UserData, response)
-                    else:
-                        UserData.delete()
-                        return response.json(106)
-
-            else:
-                return response.json(code)
-
-    def responseRes(self, UserData, response):
-        if UserData.userID and UserData.username:
-            res = {}
-            role_dict = ModelService.own_role(userID=UserData.userID)
-            res['rid'] = role_dict['rid']
-            res['roleName'] = role_dict['roleName']
-            res['permList'] = ModelService.own_permission(UserData.userID)
-            res['username'] = UserData.username
-            res['email'] = UserData.userEmail
-            res['nickname'] = UserData.NickName
-            print(res)
-            return response.json(0, res)
-        else:
-            return response.json(10, 'userID,username参数错误')
-
-
-class OauthResUserView(View):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(OauthResUserView, self).dispatch(*args, **kwargs)
-
-    # 查询
-    def get(self, request):
-        request.encoding = 'utf-8'
-        response = ResponseObject()
-        username = request.GET.get('username', None)
-        password = request.GET.get('password', None)
-        return self.validate(username, password, response)
-
-    # 认证登录
-    def post(self, request):
-        response = ResponseObject()
-        try:
-            print(request.body.decode("utf-8"))
-            json_data = json.loads(request.body.decode("utf-8"))
-        except Exception as e:
-            var_dump(repr(e))
-            return response.json(10, repr(e))
-        else:
-            username = json_data.get('username', None)
-            password = json_data.get('password', None)
-            return self.validate(username, password, response)
-
-    def validate(self, username, password, response):
-        if username is not None:
-            dataValid = DataValid()
-            if dataValid.mobile_validate(username):
-                user_qs = Device_User.objects.filter(username=username)
-            elif dataValid.email_validate(username):
-                user_qs = Device_User.objects.filter(username=username)
-            else:
-                return response.json(104)
-            if user_qs.exists():
-                if user_qs[0].user_isValid and user_qs[0].is_active:
-                    User = auth.authenticate(username=user_qs[0].username, password=password)
-                    if User:
-                        res = {'username': user_qs[0].username}
-                        return response.json(0, res)
-                    else:
-                        return response.json(111)
+                    print(repr(e))
+                    return ResponseJSON(10,repr(e))
                 else:
                 else:
-                    return response.json(110)
-            else:
-                return response.json(102)
-        else:
-            return response.json(444,'username')
-
-
-class ModifyRSPwdView(View):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(ModifyRSPwdView, self).dispatch(*args, **kwargs)
-
-    # 查询
-    def get(self, request):
-        response = ResponseObject()
-        request_dict = request.GET
-        return self.validate(request_dict, response)
-
-    # 认证登录
-    def post(self, request):
-        response = ResponseObject()
-        try:
-            print(request.body.decode("utf-8"))
-            json_data = json.loads(request.body.decode("utf-8"))
-        except Exception as e:
-            from var_dump import var_dump
-            var_dump(repr(e))
-            return response.json(10, repr(e))
-        else:
-            request_dict = json_data
-            return self.validate(request_dict, response)
-
-    def validate(self, request_dict, response):
-        username = request_dict.get('username', None)
-        oldPwd = request_dict.get('oldPwd', None)
-        newPwd = request_dict.get('newPwd', None)
-
-        UserAuth = auth.authenticate(username=username, password=oldPwd)
-        if UserAuth:
-            return self.ModifyPwd(username, newPwd, response)
-        else:
-            return response.json(99)
-
-    def ModifyPwd(self, username, newPwd, response):
-        user_qs = Device_User.objects.filter(username=username)
-        upCount = user_qs.update(password=make_password(newPwd))
-        if upCount:
-            return response.json(0)
-
-
-class OauthForgetView(View):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(OauthForgetView, self).dispatch(*args, **kwargs)
-
-    # 查询
-    def get(self, request):
-        response = ResponseObject()
-        request_dict = request.GET
-        return self.validate(request_dict, response)
-
-    # 认证登录
-    def post(self, request):
-        response = ResponseObject()
-        try:
-            json_data = json.loads(request.body.decode("utf-8"))
-        except Exception as e:
-            from var_dump import var_dump
-            var_dump(repr(e))
-            return response.json(10, repr(e))
-        else:
-            request_dict = json_data
-            return self.validate(request_dict, response)
-
-    def validate(self, request_dict, response):
-        username = request_dict.get('username', None)
-        dataValid = DataValid()
-        if dataValid.email_validate(username):
-            user_qs = Device_User.objects.filter(userEmail=username)
-        elif dataValid.mobile_validate(username):
-            user_qs = Device_User.objects.filter(username=username)
-        else:
-            return response.json(9)
-        if user_qs.exists():
-            return response.json(0, {'password': user_qs[0].password})
-        else:
-            return response.json(9)
+                    oid = ser_data['oid']
+                    if oid is not None:
+                        ou = oauth_user.objects.filter(oid=oid)
+                        # 用户存在情况查找绑定用户
+                        if ou.exists():
+                            user_qs =ou[0].userID
+                            userID = user_qs.userID
+                        #用户不存在情况新增一个用户
+                        else:
+                            oid = ser_data['oid']
+                            username = ser_data['username']
+                            password = ser_data['password']
+                            email = ser_data['email']
+                            try:
+                                CaptchaRecord = Auth_Captcha()
+                                CaptchaRecord.authcaptca = '1234'
+                                CaptchaRecord.username = username
+                                CaptchaRecord.sendtype = 'register'
+                                CaptchaRecord.save()
+                            except Exception as e:
+                                return ResponseJSON(10,repr(e))
+                            try:
+                                UserData = Device_User(username=username, userEmail=email, password=password,
+                                                       userID=CommonService.getUserID(μs=False, setOTAID=True),
+                                                       is_active=True, user_isValid=True)
+                                UserData.save()
+                            except Exception as e:
+                                errorInfo = traceback.format_exc()
+                                print('Create User Error: %s' % errorInfo)
+                                return ResponseJSON(424,'Create User Error:' + repr(e))
+                            else:
+                                ourValid = oauth_user.objects.create(oid=oid, userID=UserData)
+                                if ourValid:
+                                    userID = UserData.userID
+                        if userID:
+                            userValid = Device_User.objects.filter(userID=userID)
+                            if userValid.exists():
+                                authtoken_Obj = AuthToken_Token.objects.filter(tokenID_id=userID)
+                                if authtoken_Obj.exists():
+                                    tokenManager = JSONTokenManager()
+                                    access_token = tokenManager.deToken(authtoken_Obj[0].access_token)
+                                    refresh_token = tokenManager.deToken(authtoken_Obj[0].refresh_token)
+                                else:
+                                    access_token = False
+                                    refresh_token = False
+                                if access_token is not False and refresh_token is not False:
+                                    resultDict = {
+                                        'result': {'access_token': access_token, 'refresh_token': refresh_token},
+                                        'error_code': 0}
+                                else:
+                                    JSON = json.dumps({'userID': userID, 'mCode': ''}, ensure_ascii=False)
+                                    tokenManager = JSONTokenManager()
+                                    tokenJSON = tokenManager.generate_AToken(JSON=JSON,
+                                                                             iCode=tokenManager.getSalt(strLen=8))
+                                    resultDict = json.loads(tokenJSON)
+                                error_code = resultDict.get('error_code', None)
+                                if error_code != None and error_code == 0:
+                                    result = resultDict.get('result', None)
+                                    if result != None:
+                                        import datetime
+                                        now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+                                        userValid.update(last_login=now_time, online=True)
+                                        role_dict = ModelService.own_role(userID=userID)
+                                        result['rid'] = role_dict['rid']
+                                        result['roleName'] = role_dict['roleName']
+                                        result['permList'] = ModelService.own_permission(userID)
+                                        result['username'] = userValid[0].username
+                                        return ResponseJSON(0, result)
+
+        return ResponseJSON(10)
+    # 修改 资源改变
+    def put(self, request):
+        return ResponseJSON(404)
+
+    # 修改 属性改变
+    def PATCH(self, request):
+        return ResponseJSON(404)
+
+    # 删除
+    def delete(self, request):
+        return ResponseJSON(404)
+
+    def validation(self, request_dict, *args, **kwargs):
+        return ResponseJSON(404)

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 474 - 182
Controller/PermissionManager.py


+ 145 - 149
Controller/StreamMedia.py

@@ -1,19 +1,20 @@
 from django.views.generic.base import View
 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.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Model.models import Equipment_Stream
 from Model.models import Equipment_Stream
 from Object.AWS.S3ClassObject import S3ClassObject
 from Object.AWS.S3ClassObject import S3ClassObject
 from Object.AWS.ElasticTranscoder import ElasticTranscoder
 from Object.AWS.ElasticTranscoder import ElasticTranscoder
-import traceback, xmltodict, requests, re, subprocess, time, os,simplejson as json
+import traceback, xmltodict, requests, re, subprocess
 from ffmpy import FFmpeg
 from ffmpy import FFmpeg
+import time
 from Object.AWS.CloudfrontSignCookie import BetterThanBoto
 from Object.AWS.CloudfrontSignCookie import BetterThanBoto
-from Ansjer.config import NGINX_RTMP_STAT, RTMP_PUSH_URL
-from Ansjer.settings import BASE_DIR
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
-from Service.CommonService import CommonService
-from django.http import HttpResponse
+from Ansjer.settings import NGINX_RTMP_STAT,RTMP_PUSH_URL
+from Service.ResponseService import *
+from Ansjer.config import BASE_DIR
+import os
+
 '''
 '''
 移动端=>
 移动端=>
 增:
 增:
@@ -67,62 +68,58 @@ class StreamMedia(View):
         return self.validation(request_dict=request.POST)
         return self.validation(request_dict=request.POST)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
         if token is not None:
         if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                userID = tokenManager.accessDict.get('userID', None)
                 own_permission = ModelService.check_permission(userID=userID, permID=60)
                 own_permission = ModelService.check_permission(userID=userID, permID=60)
                 if own_permission is not True:
                 if own_permission is not True:
-                    operation = request_dict.get('operation', None)
-                    if operation == 'add':
-                        return self.add_stream(token=token, request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'delete':
-                        return self.delete_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'update':
-                        return self.update_stream(userID=userID, request_dict=request_dict, response=response)
-                    elif operation == 'query':
-                        return self.query_stream(userID=userID, response=response)
-                    elif operation == 'getDelVideo':
-                        return self.get_del_video(userID=userID, request_dict=request_dict, response=response)
-                    elif operation == 'getAllVideo':
-                        return self.get_all_video(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getVodUrl':
-                        return self.get_vod_url(request_dict=request_dict, response=response)
-                    elif operation == 'getVodHls':
-                        return self.get_vod_hls(request_dict=request_dict, response=response)
-                    elif operation == 'getAdminAllStream':
-                        return self.get_admin_all_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminDelStream':
-                        return self.get_admin_del_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminUpdateStream':
-                        return self.get_admin_update_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminVodUrl':
-                        return self.get_admin_vod_url(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminFindStream':
-                        return self.get_admin_find_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminDelVideo':
-                        return self.get_admin_del_video(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAllServerJson':
-                        return self.get_all_server_json(userID=userID, response=response)
-                    elif operation == 'getAdminHlsVod':
-                        return self.get_admin_hls_vod(userID=userID, request_dict=request_dict, response=response)
-                    elif operation == 'getAdminAddStream':
-                        return self.get_admin_add_stream(userID=userID, request_dict=request_dict, response=response)
-                    else:
-                        return response.json(444, 'operation')
+                    return ResponseJSON(404)
+                operation = request_dict.get('operation', None)
+                if operation == 'add':
+                    return self.add_stream(token=token, request_dict=request_dict, userID=userID)
+                elif operation == 'delete':
+                    return self.delete_stream(request_dict=request_dict, userID=userID)
+                elif operation == 'update':
+                    return self.update_stream(userID=userID, request_dict=request_dict)
+                elif operation == 'query':
+                    return self.query_stream(userID=userID)
+                elif operation == 'getDelVideo':
+                    return self.get_del_video(userID=userID, request_dict=request_dict)
+                elif operation == 'getAllVideo':
+                    return self.get_all_video(request_dict=request_dict, userID=userID)
+                elif operation == 'getVodUrl':
+                    return self.get_vod_url(request_dict=request_dict)
+                elif operation == 'getVodHls':
+                    return self.get_vod_hls(request_dict=request_dict)
+                elif operation == 'getAdminAllStream':
+                    return self.get_admin_all_stream(request_dict=request_dict, userID=userID)
+                elif operation == 'getAdminDelStream':
+                    return self.get_admin_del_stream(request_dict=request_dict, userID=userID)
+                elif operation == 'getAdminUpdateStream':
+                    return self.get_admin_update_stream(request_dict=request_dict, userID=userID)
+                elif operation == 'getAdminVodUrl':
+                    return self.get_admin_vod_url(request_dict=request_dict, userID=userID)
+                elif operation == 'getAdminFindStream':
+                    return self.get_admin_find_stream(request_dict=request_dict, userID=userID)
+                elif operation == 'getAdminDelVideo':
+                    return self.get_admin_del_video(request_dict=request_dict, userID=userID)
+                elif operation == 'getAllServerJson':
+                    return self.get_all_server_json(userID=userID)
+                elif operation == 'getAdminHlsVod':
+                    return self.get_admin_hls_vod(userID=userID, request_dict=request_dict)
+                elif operation == 'getAdminAddStream':
+                    return self.get_admin_add_stream(userID=userID, request_dict=request_dict)
                 else:
                 else:
-                    return response.json(404)
-
+                    return ResponseJSON(444)
             else:
             else:
-                return response.json(tko.code)
+                return HttpResponse(tokenManager.errorCodeInfo(error_code))
         else:
         else:
-            return response.json(311)
+            return ResponseJSON(311)
 
 
-    def add_stream(self, token, userID, request_dict, response):
+    def add_stream(self, token, userID, request_dict):
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         status = request_dict.get('status', None)
         status = request_dict.get('status', None)
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
@@ -132,54 +129,54 @@ class StreamMedia(View):
             if is_user is True:
             if is_user is True:
                 stream_queryset = Equipment_Stream.objects.filter(userID=userID, uid=uid, channel=channel, rank=1)
                 stream_queryset = Equipment_Stream.objects.filter(userID=userID, uid=uid, channel=channel, rank=1)
                 if stream_queryset.exists():
                 if stream_queryset.exists():
-                    return response.json(174)
+                    return ResponseJSON(174)
                 try:
                 try:
                     flag = Equipment_Stream.objects.create(userID=userID, status=status, uid=uid, channel=channel,
                     flag = Equipment_Stream.objects.create(userID=userID, status=status, uid=uid, channel=channel,
                                                            access_token=token)
                                                            access_token=token)
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, errorInfo)
+                    return ResponseJSON(424, errorInfo)
                 else:
                 else:
                     if flag:
                     if flag:
                         rtmp_url = RTMP_PUSH_URL
                         rtmp_url = RTMP_PUSH_URL
                         rtmp_name = uid + '_' + channel + '?userID=' + userID + '&uid=' + uid + '&channel=' + channel + '&access_token=' + token
                         rtmp_name = uid + '_' + channel + '?userID=' + userID + '&uid=' + uid + '&channel=' + channel + '&access_token=' + token
-                        return response.json(0, {'userID': userID, 'channel': channel,
-                                                 'uid': uid,
-                                                 'status': status,
-                                                 'access_token': token,
-                                                 'rtmp_url': rtmp_url,
-                                                 'rtmp_name': rtmp_name})
+                        return ResponseJSON(0, {'userID': userID, 'channel': channel,
+                                                'uid': uid,
+                                                'status': status,
+                                                'access_token': token,
+                                                'rtmp_url': rtmp_url,
+                                                'rtmp_name': rtmp_name})
             else:
             else:
-                return response.json(14)
+                return ResponseJSON(14)
         else:
         else:
-            return response.json(444, 'channel, status, uid')
+            return ResponseJSON(444)
 
 
-    def delete_stream(self, request_dict, userID,response):
+    def delete_stream(self, request_dict, userID):
         id_list = request_dict.getlist('id', None)
         id_list = request_dict.getlist('id', None)
         if len(id_list):
         if len(id_list):
             for id in id_list:
             for id in id_list:
                 Equipment_Stream.objects.filter(id=id, userID=userID).delete()
                 Equipment_Stream.objects.filter(id=id, userID=userID).delete()
-            return response.json(0)
-        return response.json(444)
+            return ResponseJSON(0)
+        return ResponseJSON(444)
 
 
-    def update_stream(self, userID, request_dict,response):
+    def update_stream(self, userID, request_dict):
         id = request_dict.get('id', None)
         id = request_dict.get('id', None)
         status = request_dict.get('status', None)
         status = request_dict.get('status', None)
         is_update = Equipment_Stream.objects.filter(id=id, userID=userID).update(status=status)
         is_update = Equipment_Stream.objects.filter(id=id, userID=userID).update(status=status)
         if is_update:
         if is_update:
-            return response.json(0, {'id': id, 'status': status})
-        return response.json(444)
+            return ResponseJSON(0,{'id': id, 'status': status})
+        return ResponseJSON(444)
 
 
-    def query_stream(self, userID,response):
+    def query_stream(self, userID):
         equipment_stream_queryset = Equipment_Stream.objects.filter(userID=userID)
         equipment_stream_queryset = Equipment_Stream.objects.filter(userID=userID)
         if equipment_stream_queryset.exists():
         if equipment_stream_queryset.exists():
-            res = CommonService.qs_to_dict(equipment_stream_queryset)
-            return response.json(0,res)
-        else:
-            return response.json(0)
+            send_josn = CommonService.query_set_to_dict(equipment_stream_queryset)
+            return HttpResponse(CommonService.response_formal(
+                data={'code': 0, 'reason': u'Success', 'result': send_josn}))
+        return ResponseJSON(444)
 
 
-    def get_all_video(self, request_dict, userID,response):
+    def get_all_video(self, request_dict, userID):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         if uid is not None and channel is not None:
         if uid is not None and channel is not None:
@@ -188,23 +185,24 @@ class StreamMedia(View):
             if own_permission is True or own_device is True:
             if own_permission is True or own_device is True:
                 s3 = S3ClassObject()
                 s3 = S3ClassObject()
                 data = s3.get_all_object(prefix=uid + '_' + channel + '/flv')
                 data = s3.get_all_object(prefix=uid + '_' + channel + '/flv')
-                return response.json(0, {'files': data})
+                # data = s3.get_all_object(prefix=uid + '_' + channel + '/')
+                return ResponseJSON(0, {'files': data})
             else:
             else:
-                return response.json(404)
-        return response.json(444,'uid,channel')
+                return ResponseJSON(404)
+        return ResponseJSON(444)
 
 
-    def get_vod_url(self, request_dict,response):
+    def get_vod_url(self, request_dict):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         filename = request_dict.get('filename', None)
         filename = request_dict.get('filename', None)
         if uid is not None and filename is not None and channel is not None:
         if uid is not None and filename is not None and channel is not None:
             s3 = S3ClassObject()
             s3 = S3ClassObject()
             url = s3.get_generate_vod_url(uid + '_' + channel + '/' + filename)
             url = s3.get_generate_vod_url(uid + '_' + channel + '/' + filename)
-            return response.json(0, {'url': url})
+            return ResponseJSON(0, {'url': url})
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def get_admin_all_stream(self, request_dict, userID,response):
+    def get_admin_all_stream(self, request_dict, userID):
         # 判断
         # 判断
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
@@ -214,16 +212,16 @@ class StreamMedia(View):
             if equipment_stream_queryset.exists():
             if equipment_stream_queryset.exists():
                 equipment_stream_count = equipment_stream_queryset.count()
                 equipment_stream_count = equipment_stream_queryset.count()
                 equipment_stream_res = equipment_stream_queryset[(page - 1) * line:page * line]
                 equipment_stream_res = equipment_stream_queryset[(page - 1) * line:page * line]
-                send_json = CommonService.qs_to_dict(equipment_stream_res)
+                send_json = CommonService.query_set_to_dict(equipment_stream_res)
                 send_json['count'] = equipment_stream_count
                 send_json['count'] = equipment_stream_count
-                send_json = CommonService.qs_to_dict(equipment_stream_queryset)
-                return response.json(0, send_json)
+                send_json = CommonService.query_set_to_dict(equipment_stream_queryset)
+                return ResponseJSON(0, send_json)
             else:
             else:
-                return response.json(0)
+                return ResponseJSON(0)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def get_admin_del_stream(self, request_dict, userID,response):
+    def get_admin_del_stream(self, request_dict, userID):
         # 判断
         # 判断
         own_permission = ModelService.check_permission(userID=userID, permID=10)
         own_permission = ModelService.check_permission(userID=userID, permID=10)
         if own_permission is True:
         if own_permission is True:
@@ -232,12 +230,12 @@ class StreamMedia(View):
             if len(id_list):
             if len(id_list):
                 for id in id_list:
                 for id in id_list:
                     Equipment_Stream.objects.filter(id=id).delete()
                     Equipment_Stream.objects.filter(id=id).delete()
-                return response.json(0)
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(444)
-        return response.json(404)
+                return ResponseJSON(444)
+        return ResponseJSON(404)
 
 
-    def get_admin_del_video(self, request_dict, userID,response):
+    def get_admin_del_video(self, request_dict, userID):
         # 判断
         # 判断
         own_permission = ModelService.check_permission(userID=userID, permID=10)
         own_permission = ModelService.check_permission(userID=userID, permID=10)
         if own_permission is True:
         if own_permission is True:
@@ -259,11 +257,11 @@ class StreamMedia(View):
                         s3 = S3ClassObject()
                         s3 = S3ClassObject()
                         response = s3.del_object_list(keylist=key_list)
                         response = s3.del_object_list(keylist=key_list)
                         if response['Deleted']:
                         if response['Deleted']:
-                            return response.json(0,
-                                                {'deleted': response['Deleted']})
-        return response.json(444)
+                            return ResponseJSON(0,
+                                                                             {'deleted': response['Deleted']})
+        return ResponseJSON(444)
 
 
-    def get_del_video(self, request_dict, userID,response):
+    def get_del_video(self, request_dict, userID):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         if uid is not None and channel is not None:
         if uid is not None and channel is not None:
@@ -282,12 +280,12 @@ class StreamMedia(View):
                         s3 = S3ClassObject()
                         s3 = S3ClassObject()
                         response = s3.del_object_list(keylist=key_list)
                         response = s3.del_object_list(keylist=key_list)
                         if response['Deleted']:
                         if response['Deleted']:
-                            return response.json(0)
+                            return ResponseJSON(0)
             else:
             else:
-                return response.json(404)
-        return response.json(444)
+                return ResponseJSON(404)
+        return ResponseJSON(444)
 
 
-    def get_admin_update_stream(self, userID, request_dict,response):
+    def get_admin_update_stream(self, userID, request_dict):
         own_permission = ModelService.check_permission(userID=userID, permID=50)
         own_permission = ModelService.check_permission(userID=userID, permID=50)
         if own_permission is True:
         if own_permission is True:
             id = request_dict.get('id', None)
             id = request_dict.get('id', None)
@@ -296,13 +294,13 @@ class StreamMedia(View):
             if param_flag is True:
             if param_flag is True:
                 is_update = Equipment_Stream.objects.filter(id=id).update(status=status)
                 is_update = Equipment_Stream.objects.filter(id=id).update(status=status)
                 if is_update:
                 if is_update:
-                    return response.json(0, {'id': id, 'status': status})
+                    return ResponseJSON(0, {'id': id, 'status': status})
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def get_admin_vod_url(self, userID, request_dict,response):
+    def get_admin_vod_url(self, userID, request_dict):
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
             uid = request_dict.get('uid', None)
             uid = request_dict.get('uid', None)
@@ -311,13 +309,13 @@ class StreamMedia(View):
             if uid is not None and filename is not None and channel is not None:
             if uid is not None and filename is not None and channel is not None:
                 s3 = S3ClassObject()
                 s3 = S3ClassObject()
                 url = s3.get_generate_vod_url(uid + '_' + channel + '/' + filename)
                 url = s3.get_generate_vod_url(uid + '_' + channel + '/' + filename)
-                return response.json(0, {'url': url})
+                return ResponseJSON(0, {'url': url})
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def get_admin_find_stream(self, userID, request_dict,response):
+    def get_admin_find_stream(self, userID, request_dict):
         own_permission = ModelService.check_permission(userID=userID, permID=20)
         own_permission = ModelService.check_permission(userID=userID, permID=20)
         if own_permission is True:
         if own_permission is True:
             content = request_dict.get('content', None)
             content = request_dict.get('content', None)
@@ -331,17 +329,17 @@ class StreamMedia(View):
                 if equipment_stream_queryset.exists():
                 if equipment_stream_queryset.exists():
                     equipment_stream_count = equipment_stream_queryset.count()
                     equipment_stream_count = equipment_stream_queryset.count()
                     equipment_stream_res = equipment_stream_queryset[(page - 1) * line:page * line]
                     equipment_stream_res = equipment_stream_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(equipment_stream_res)
+                    send_json = CommonService.query_set_to_dict(equipment_stream_res)
                     send_json['count'] = equipment_stream_count
                     send_json['count'] = equipment_stream_count
-                    return response.json(0, send_json)
+                    return ResponseJSON(0, send_json)
                 else:
                 else:
-                    return response.json(0)
+                    return ResponseJSON(0)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def get_all_server_json(self, userID,response):
+    def get_all_server_json(self, userID):
         own_permission = ModelService.check_permission(userID=userID, permID=20)
         own_permission = ModelService.check_permission(userID=userID, permID=20)
         if own_permission is True:
         if own_permission is True:
             url = NGINX_RTMP_STAT
             url = NGINX_RTMP_STAT
@@ -349,11 +347,11 @@ class StreamMedia(View):
             xml_content = res.text
             xml_content = res.text
             xml_dict = xmltodict.parse(xml_content)
             xml_dict = xmltodict.parse(xml_content)
             if len(xml_dict):
             if len(xml_dict):
-                return response.json(0, {'data': xml_dict})
+                return ResponseJSON(0, {'data': xml_dict})
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def get_admin_add_stream(self, token, userID, request_dict,response):
+    def get_admin_add_stream(self, token, userID, request_dict):
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         status = request_dict.get('status', None)
         status = request_dict.get('status', None)
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
@@ -363,31 +361,31 @@ class StreamMedia(View):
             if own_perm is True:
             if own_perm is True:
                 stream_queryset = Equipment_Stream.objects.filter(uid=uid, channel=channel)
                 stream_queryset = Equipment_Stream.objects.filter(uid=uid, channel=channel)
                 if stream_queryset.exists():
                 if stream_queryset.exists():
-                    return response.json(174)
+                    return ResponseJSON(174)
                 try:
                 try:
                     flag = Equipment_Stream.objects.create(userID=userID, status=status, uid=uid, channel=channel,
                     flag = Equipment_Stream.objects.create(userID=userID, status=status, uid=uid, channel=channel,
                                                            access_token=token)
                                                            access_token=token)
                 except Exception as e:
                 except Exception as e:
                     errorInfo = traceback.format_exc()
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
                     print(errorInfo)
-                    return response.json(424, {'details': errorInfo})
+                    return ResponseJSON(424, {'details': errorInfo})
                 else:
                 else:
                     if flag:
                     if flag:
                         rtmp_url = RTMP_PUSH_URL
                         rtmp_url = RTMP_PUSH_URL
                         rtmp_name = uid + '_' + channel + '?userID=' + userID + '&uid=' + uid + '&channel=' + channel + '&access_token=' + token
                         rtmp_name = uid + '_' + channel + '?userID=' + userID + '&uid=' + uid + '&channel=' + channel + '&access_token=' + token
-                        return response.json(0,
-                                            {'userID': userID, 'channel': channel,
-                                             'uid': uid,
-                                             'status': status,
-                                             'access_token': token,
-                                             'rtmp_url': rtmp_url,
-                                             'rtmp_name': rtmp_name})
+                        return ResponseJSON(0,
+                                                                         {'userID': userID, 'channel': channel,
+                                                                                   'uid': uid,
+                                                                                   'status': status,
+                                                                                   'access_token': token,
+                                                                                   'rtmp_url': rtmp_url,
+                                                                                   'rtmp_name': rtmp_name})
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
-    def get_admin_hls_vod(self, request_dict, userID,response):
+    def get_admin_hls_vod(self, request_dict, userID):
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
         if own_permission is True:
             uid = request_dict.get('uid', None)
             uid = request_dict.get('uid', None)
@@ -409,15 +407,15 @@ class StreamMedia(View):
                 if res is True:
                 if res is True:
                     domain_prefix = 'http://d3596w5a6euckc.cloudfront.net/vod'
                     domain_prefix = 'http://d3596w5a6euckc.cloudfront.net/vod'
                     vod_url = domain_prefix + '/' + vod_key + '.m3u8'
                     vod_url = domain_prefix + '/' + vod_key + '.m3u8'
-                    return response.json(0, {'vodurl': vod_url})
+                    return ResponseJSON(0, {'vodurl': vod_url})
                 else:
                 else:
-                    return response.json(403)
+                    return ResponseJSON(403)
             else:
             else:
-                return response.json(444)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(404)
+            return ResponseJSON(404)
 
 
-    def get_vod_hls(self, request_dict,response):
+    def get_vod_hls(self, request_dict):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         channel = request_dict.get('channel', None)
         filename = request_dict.get('filename', None)
         filename = request_dict.get('filename', None)
@@ -442,11 +440,11 @@ class StreamMedia(View):
                                                      expires_at=expires_at,
                                                      expires_at=expires_at,
                                                      private_key_file=os.path.join(BASE_DIR,
                                                      private_key_file=os.path.join(BASE_DIR,
                                                                                    'Ansjer/file/pk-APKAINI6BNPKV54NHH7Q.pem'))
                                                                                    'Ansjer/file/pk-APKAINI6BNPKV54NHH7Q.pem'))
-                return response.json(0, {'vodurl': vod_url, 'vodCookie': vodCookie})
+                return ResponseJSON(0, {'vodurl': vod_url,'vodCookie': vodCookie})
             else:
             else:
-                return response.json(403)
+                return ResponseJSON(403)
         else:
         else:
-            return response.json(444)
+            return ResponseJSON(444)
 
 
 
 
 # 推流验证
 # 推流验证
@@ -484,14 +482,12 @@ def Auth_Live(request, *callback_args,
     if request.method == 'POST':
     if request.method == 'POST':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         request_dict = request.POST
         request_dict = request.POST
-    response = ResponseObject()
     token = request_dict.get('token', None)
     token = request_dict.get('token', None)
     if token is not None:
     if token is not None:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
+        tokenManager = JSONTokenManager()
+        error_code = tokenManager.verify_AToken(token)
+        if error_code == 0:
+            userID = request_dict.get('userID', None)
             uid = request_dict.get('uid', None)
             uid = request_dict.get('uid', None)
             channel = request_dict.get('channel', None)
             channel = request_dict.get('channel', None)
             if userID is not None and uid is not None and channel is not None:
             if userID is not None and uid is not None and channel is not None:
@@ -565,7 +561,7 @@ def send_video_s3(request, *callback_args,
                             subprocess.Popen(rm_common, shell=True)
                             subprocess.Popen(rm_common, shell=True)
         return HttpResponse(status=403)
         return HttpResponse(status=403)
     else:
     else:
-        return HttpResponse(404)
+        return ResponseJSON(444)
 
 
 
 
 @csrf_exempt
 @csrf_exempt
@@ -579,7 +575,7 @@ def push_flv_s3(request, *callback_args,
         request_dict = request.POST
         request_dict = request.POST
     # 文件名
     # 文件名
     basename = request_dict.get('basename', None)
     basename = request_dict.get('basename', None)
-    response = ResponseObject()
+    # print(basename)
     if basename != None:
     if basename != None:
         base_path = 'tmp/flv/'
         base_path = 'tmp/flv/'
         file_base_path = base_path + basename
         file_base_path = base_path + basename
@@ -628,5 +624,5 @@ def push_flv_s3(request, *callback_args,
                             except Exception as e:
                             except Exception as e:
                                 print(repr(e))
                                 print(repr(e))
                                 pass
                                 pass
-                        return response.json(code)
-    return response.json(444)
+                        return ResponseJSON(code)
+    return ResponseJSON(444)

+ 12 - 15
Controller/SysManage.py

@@ -12,16 +12,15 @@
 @Contact: chanjunkai@163.com
 @Contact: chanjunkai@163.com
 """
 """
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
+from Service.TokenManager import JSONTokenManager
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
-from Ansjer.settings import BASE_DIR
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-import os
+from Ansjer.config import *
+from Service.ResponseService import *
 
 
 
 
 @csrf_exempt
 @csrf_exempt
-def updateLog(request):
+def updateLog(request, *callback_args, **callback_kwargs):
     if request.method == 'GET':
     if request.method == 'GET':
         request.encoding = 'utf-8'
         request.encoding = 'utf-8'
         request_dict = request.GET
         request_dict = request.GET
@@ -30,14 +29,12 @@ def updateLog(request):
         request_dict = request.POST
         request_dict = request.POST
     token = request_dict.get('token',None)
     token = request_dict.get('token',None)
     content = request_dict.get('content',None)
     content = request_dict.get('content',None)
-    response = ResponseObject()
     param_flag = CommonService.get_param_flag(data=[token,content])
     param_flag = CommonService.get_param_flag(data=[token,content])
     if param_flag is True:
     if param_flag is True:
-        tko = TokenObject(token)
-        tko.valid()
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID()
+        tokenManager = JSONTokenManager()
+        error_code = tokenManager.verify_AToken(token)
+        if error_code == 0:
+            userID = tokenManager.accessDict.get('userID', None)
             own_permission = ModelService.check_permission(userID=userID,permID=50)
             own_permission = ModelService.check_permission(userID=userID,permID=50)
             if own_permission is True:
             if own_permission is True:
                 file_path = os.path.join(BASE_DIR,'static/Help/version.txt')
                 file_path = os.path.join(BASE_DIR,'static/Help/version.txt')
@@ -46,11 +43,11 @@ def updateLog(request):
                         f.write(content)
                         f.write(content)
                 except Exception as e:
                 except Exception as e:
                     pass
                     pass
-                return response.json(0)
+                return ResponseJSON(0)
             else:
             else:
-                return response.json(404)
+                return ResponseJSON(404)
         else:
         else:
-            return response.json(tko.code)
+            return HttpResponse(tokenManager.errorCodeInfo(error_code))
     else:
     else:
-        return response.json(444)
+        return ResponseJSON(444)
 
 

+ 10 - 18
Controller/Test.py

@@ -15,20 +15,19 @@ 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 Ansjer.settings import *
 # from Ansjer.settings import *
+from Service.TokenManager import *
 from django.contrib import auth
 from django.contrib import auth
 from django.http import HttpResponseRedirect
 from django.http import HttpResponseRedirect
 '''
 '''
 http://192.168.136.40:8077/Test
 http://192.168.136.40:8077/Test
 '''
 '''
 import json
 import json
+from Service.ResponseService import *
 import requests
 import requests
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from django.middleware.csrf import get_token
 from django.middleware.csrf import get_token
 from django.http import JsonResponse
 from django.http import JsonResponse
 from ratelimit.decorators import ratelimit
 from ratelimit.decorators import ratelimit
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-
 
 
 class Test(View):
 class Test(View):
     '''
     '''
@@ -46,32 +45,25 @@ class Test(View):
     @ratelimit(key='ip', rate='1/m')
     @ratelimit(key='ip', rate='1/m')
     # 查询
     # 查询
     def get(self, request, *args, **kwargs):
     def get(self, request, *args, **kwargs):
-        response = ResponseObject()
-
-        return response.json(0)
+        return ResponseJSON(0)
 
 
     # 增加
     # 增加
     def post(self, request, *args, **kwargs):
     def post(self, request, *args, **kwargs):
-        response = ResponseObject()
-        return response.json(0)
+
+
+        return ResponseJSON(0, {'test': 123})
 
 
     # 修改 资源改变
     # 修改 资源改变
     def put(self, request):
     def put(self, request):
-        response = ResponseObject()
-        return response.json(0)
+        return ResponseJSON(404)
 
 
     # 修改 属性改变
     # 修改 属性改变
     def PATCH(self, request):
     def PATCH(self, request):
-        response = ResponseObject()
-        return response.json(0)
+        return ResponseJSON(404)
 
 
     # 删除
     # 删除
     def delete(self, request):
     def delete(self, request):
-        response = ResponseObject()
-
-        return response.json(0)
+        return ResponseJSON(404)
 
 
     def validation(self, request_dict, *args, **kwargs):
     def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
-
-        return response.json(0)
+        return ResponseJSON(404)

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 747 - 145
Controller/UserManger.py


+ 121 - 114
Controller/shareUserPermission.py

@@ -2,14 +2,16 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 from django.core import serializers
 from django.core import serializers
 import traceback, simplejson as json
 import traceback, simplejson as json
+from django.shortcuts import HttpResponse
 from django.views.generic.base import View
 from django.views.generic.base import View
 from django.core.exceptions import FieldError
 from django.core.exceptions import FieldError
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
 from django.utils.decorators import method_decorator
 from django.utils.decorators import method_decorator
+from Service.TokenManager import JSONTokenManager
 from Model.models import Device_User, Device_Info, Role
 from Model.models import Device_User, Device_Info, Role
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
+from Service.ResponseService import *
+
 
 
 
 
 class searchUserView(View):
 class searchUserView(View):
@@ -27,7 +29,7 @@ class searchUserView(View):
         fieldDict = request.GET
         fieldDict = request.GET
         return self.searchUser(fieldDict, args, kwargs)
         return self.searchUser(fieldDict, args, kwargs)
 
 
-    def searchUserSQL(self, fieldDict, response, *args, **kwargs):
+    def searchUserSQL(self, fieldDict, *args, **kwargs):
         exact = fieldDict.get('exact', True)
         exact = fieldDict.get('exact', True)
         if exact == '0' or exact == 'False':
         if exact == '0' or exact == 'False':
             exact = False
             exact = False
@@ -36,30 +38,31 @@ class searchUserView(View):
 
 
         if 'exact' in fieldDict.keys():
         if 'exact' in fieldDict.keys():
             fieldDict.pop('exact')
             fieldDict.pop('exact')
+
         try:
         try:
-            if exact == 'True' or exact == 1:
+            if  exact == 'True' or exact == 1:
                 User = Device_User.objects.filter(**fieldDict).order_by('-data_joined')
                 User = Device_User.objects.filter(**fieldDict).order_by('-data_joined')
             elif exact == 'False' or exact == 0:
             elif exact == 'False' or exact == 0:
                 if 'username' in fieldDict.keys():
                 if 'username' in fieldDict.keys():
-                    User = Device_User.objects.filter(username=fieldDict.get('username',
-                                                                             None)).order_by('-data_joined')
+                    User = Device_User.objects.filter(username = fieldDict.get('username',
+                                                                                           None)).order_by('-data_joined')
                 elif 'userEmail' in fieldDict.keys():
                 elif 'userEmail' in fieldDict.keys():
-                    User = Device_User.objects.filter(userEmail=fieldDict.get('userEmail',
-                                                                              None)).order_by('-data_joined')
+                    User = Device_User.objects.filter(userEmail = fieldDict.get('userEmail',
+                                                                                           None)).order_by('-data_joined')
                 elif 'userID' in fieldDict.keys():
                 elif 'userID' in fieldDict.keys():
-                    User = Device_User.objects.filter(userID=fieldDict.get('userID',
-                                                                           None)).order_by('-data_joined')
+                    User = Device_User.objects.filter(userID = fieldDict.get('userID',
+                                                                                           None)).order_by('-data_joined')
                 else:
                 else:
                     User = Device_User.objects.filter(**fieldDict).order_by('-data_joined')
                     User = Device_User.objects.filter(**fieldDict).order_by('-data_joined')
             else:
             else:
                 User = Device_User.objects.filter(**fieldDict).order_by('-data_joined')
                 User = Device_User.objects.filter(**fieldDict).order_by('-data_joined')
 
 
         except FieldError:
         except FieldError:
-            return response.json(502)
+            return ResponseFormal(502)
         except Exception as e:
         except Exception as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('查询数据库错误: %s' % errorInfo)
             print('查询数据库错误: %s' % errorInfo)
-            return response.json(500, {'details': repr(e)})
+            return ResponseFormal(500,{'details':repr(e)})
         else:
         else:
             if User:
             if User:
                 ddUser = User[0].device_info_set.all()
                 ddUser = User[0].device_info_set.all()
@@ -68,30 +71,32 @@ class searchUserView(View):
                 if ddUser:
                 if ddUser:
                     sqlJSON1 = serializers.serialize('json', ddUser)
                     sqlJSON1 = serializers.serialize('json', ddUser)
                     sqlList1 = json.loads(sqlJSON1)
                     sqlList1 = json.loads(sqlJSON1)
-                    device_Info_dict = {}
-                    device_Info_list = []
+                    device_Info_dict={}
+                    device_Info_list=[]
                     for eachJson1 in sqlList1:
                     for eachJson1 in sqlList1:
-                        device_Info_dict['primaryUserID'] = eachJson1['fields']['primaryUserID']
-                        device_Info_dict['Type'] = eachJson1['fields']['Type']
-                        device_Info_dict['UID'] = eachJson1['fields']['UID']
-                        device_Info_dict['pk'] = eachJson1['pk']
-                        device_Info_dict['NickName'] = eachJson1['fields']['NickName']
-                        device_Info_dict['View_Password'] = eachJson1['fields']['View_Password']
-                        device_Info_dict['View_Account'] = eachJson1['fields']['View_Account']
-                        device_Info_dict['Online'] = eachJson1['fields']['Online']
-                        device_Info_dict['EventNotification'] = eachJson1['fields']['EventNotification']
-                        device_Info_dict['ChannelIndex'] = eachJson1['fields']['ChannelIndex']
-                        device_Info_dict['EventNotification'] = eachJson1['fields']['EventNotification']
-                        device_Info_dict['NotificationMode'] = eachJson1['fields']['NotificationMode']
+                        device_Info_dict['primaryUserID']=eachJson1['fields']['primaryUserID']
+                        device_Info_dict['Type']=eachJson1['fields']['Type']
+                        device_Info_dict['UID']=eachJson1['fields']['UID']
+                        device_Info_dict['pk']=eachJson1['pk']
+                        device_Info_dict['NickName']=eachJson1['fields']['NickName']
+                        device_Info_dict['View_Password']=eachJson1['fields']['View_Password']
+                        device_Info_dict['View_Account']=eachJson1['fields']['View_Account']
+                        device_Info_dict['Online']=eachJson1['fields']['Online']
+                        device_Info_dict['EventNotification']=eachJson1['fields']['EventNotification']
+                        device_Info_dict['ChannelIndex']=eachJson1['fields']['ChannelIndex']
+                        device_Info_dict['EventNotification']=eachJson1['fields']['EventNotification']
+                        device_Info_dict['NotificationMode']=eachJson1['fields']['NotificationMode']
+
                         device_Info_list.append(device_Info_dict)
                         device_Info_list.append(device_Info_dict)
-                        device_Info_dict = {}
+                        device_Info_dict={}
                     sqlList[0]['device_info'] = device_Info_list
                     sqlList[0]['device_info'] = device_Info_list
                 sqlDict = dict(zip(["datas"], [sqlList]))
                 sqlDict = dict(zip(["datas"], [sqlList]))
-                return response.json(0, sqlDict)
+                return ResponseFormal(0, sqlDict)
             else:
             else:
-                return response.json(102)
-
-    def searchUserPCSQL(self, fieldDict, response):
+                # 发送邮件
+                # sms()
+                return ResponseFormal(102)
+    def searchUserPCSQL(self, fieldDict):
         try:
         try:
             page = int(fieldDict['page'])
             page = int(fieldDict['page'])
             line = int(fieldDict['line'])
             line = int(fieldDict['line'])
@@ -99,56 +104,57 @@ class searchUserView(View):
             fieldDict.pop('line')
             fieldDict.pop('line')
             fieldDict.pop('type')
             fieldDict.pop('type')
             if len(fieldDict) > 0:
             if len(fieldDict) > 0:
-                searchCondition = CommonService.get_kwargs(data=fieldDict)
+                searchCondition=CommonService.get_kwargs(data=fieldDict)
                 device_user_queryset = Device_User.objects.filter(**searchCondition).order_by('-data_joined')
                 device_user_queryset = Device_User.objects.filter(**searchCondition).order_by('-data_joined')
             else:
             else:
                 device_user_queryset = Device_User.objects.all().order_by('-data_joined')
                 device_user_queryset = Device_User.objects.all().order_by('-data_joined')
         except FieldError:
         except FieldError:
-            return response.json(502)
+            return ResponseFormal(502)
         except Exception as e:
         except Exception as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('查询数据库错误: %s' % errorInfo)
             print('查询数据库错误: %s' % errorInfo)
-            return response.json(500, {"details": repr(e)})
+            return ResponseFormal(500, {"details": repr(e)})
         else:
         else:
             if device_user_queryset:
             if device_user_queryset:
                 device_user_count = device_user_queryset.count()
                 device_user_count = device_user_queryset.count()
-                device_user_res = device_user_queryset[(page - 1) * line:page * line]
-                sqlDict = CommonService.qs_to_dict(device_user_res)
+                device_user_res=device_user_queryset[(page-1)*line:page*line]
+                sqlDict = CommonService.query_set_to_dict(device_user_res)
                 for k, v in enumerate(sqlDict["datas"]):
                 for k, v in enumerate(sqlDict["datas"]):
                     for val in device_user_res:
                     for val in device_user_res:
-                        if v['pk'] == val.userID:
-                            device_info_query_set = val.device_info_set.all()
-                            device_info_list = CommonService.qs_to_dict(device_info_query_set)
+                        if v['pk']==val.userID:
+                            device_info_query_set=val.device_info_set.all()
+                            device_info_list = CommonService.query_set_to_dict(device_info_query_set)
                             # device_user关联到device_info
                             # device_user关联到device_info
-                            sqlDict["datas"][k]['device_info'] = device_info_list
-                    if len(v['fields']['role']) > 0:
-                        role_query_set = Role.objects.get(rid=v['fields']['role'][0])
+                            sqlDict["datas"][k]['device_info']=device_info_list
+                    if len(v['fields']['role'])>0:
+                        role_query_set=Role.objects.get(rid=v['fields']['role'][0])
                         sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
                         sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
                 sqlDict['count'] = device_user_count
                 sqlDict['count'] = device_user_count
-                return response.json(0, sqlDict)
+                return ResponseFormal(0,sqlDict)
             else:
             else:
-                return response.json(0, {"datas": ""})
-
+                return ResponseFormal(0,{"datas":""})
     def searchUser(self, fieldDict, *args, **kwargs):
     def searchUser(self, fieldDict, *args, **kwargs):
-        response = ResponseObject()
-        token = fieldDict.get('token', None)
-        if token != None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                fieldDict = fieldDict.dict()
-                fieldDict.pop('token')
-                type = fieldDict.get('type', None)
-                if type == 'PC':
-                    return self.searchUserPCSQL(fieldDict, response)
+        if fieldDict != None:
+            token = fieldDict.get('token', None)
+            if token != None:
+                tokenManager = JSONTokenManager()
+                error_code = tokenManager.verify_AToken(token)
+                if error_code == 0:
+                    fieldDict = fieldDict.dict()
+                    fieldDict.pop('token')
+                    type = fieldDict.get('type',None)
+                    if type == 'PC':
+                        response = HttpResponse(self.searchUserPCSQL(fieldDict))
+                    else:
+                        response = HttpResponse(self.searchUserSQL(fieldDict, args, kwargs))
+                    return response
                 else:
                 else:
-                    return self.searchUserSQL(fieldDict, response, args, kwargs)
+                    response = HttpResponse(tokenManager.errorCodeInfo(error_code))
+                    return response
             else:
             else:
-                return response.json(tko.code)
+                return ResponseJSON(444)
         else:
         else:
-            return response.json(444)
-
+            return ResponseJSON(444)
 
 
 class shareUserEquipmentView(View):
 class shareUserEquipmentView(View):
     @method_decorator(csrf_exempt)
     @method_decorator(csrf_exempt)
@@ -180,32 +186,34 @@ class shareUserEquipmentView(View):
                 sharedAll = 1
                 sharedAll = 1
             else:
             else:
                 sharedAll = 0
                 sharedAll = 0
-        response = ResponseObject()
+
         if token != None and GuestID != None:
         if token != None and GuestID != None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                MasterID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                MasterID = tokenManager.accessDict.get('userID', None)
                 if sharedAll and MasterID != None:
                 if sharedAll and MasterID != None:
-                    return self.shareUserSQL(MasterID, GuestID, True, response, args, kwargs)
+                    response = HttpResponse(self.shareUserSQL(MasterID, GuestID, True, args, kwargs))
+                    return response
                 if content != None and MasterID != None:
                 if content != None and MasterID != None:
-                    return self.shareUserSQL(MasterID, GuestID, False, response, args, content=content)
+                    response = HttpResponse(self.shareUserSQL(MasterID, GuestID, False, args, content=content))
+                    return response
                 else:
                 else:
-                    return response.json(804)
+                    return ResponseJSON(804)
             else:
             else:
-                return response.json(tko.code)
+                response = HttpResponse(tokenManager.errorCodeInfo(error_code))
+                return response
         else:
         else:
-            return response.json(800)
+            return ResponseJSON(800)
 
 
-    def shareUserSQL(self, MasterID, GuestID, sharedAll, response, *args, **kwargs):
+    def shareUserSQL(self, MasterID, GuestID, sharedAll, *args, **kwargs):
         try:
         try:
-            Guest = Device_User.objects.filter(userID=GuestID).order_by('-data_joined')
-            Master = Device_Info.objects.filter(userID_id=MasterID).order_by('-data_joined')
+            Guest = Device_User.objects.filter(userID = GuestID).order_by('-data_joined')
+            Master = Device_Info.objects.filter(userID_id = MasterID).order_by('-data_joined')
         except Exception as e:
         except Exception as e:
             errorInfo = traceback.format_exc()
             errorInfo = traceback.format_exc()
             print('查询数据库错误: %s' % errorInfo)
             print('查询数据库错误: %s' % errorInfo)
-            return response.json(500, {"details": repr(e)})
+            return ResponseFormal(500, {"details": repr(e)})
         else:
         else:
             if Master:
             if Master:
                 if Guest:
                 if Guest:
@@ -254,47 +262,46 @@ class shareUserEquipmentView(View):
 
 
                     if len(querysetList) == 0:
                     if len(querysetList) == 0:
                         if sharedAll:
                         if sharedAll:
-                            return response.json(160)
+                            return ResponseFormal(160)
                         else:
                         else:
                             if len(UID) > 0:
                             if len(UID) > 0:
-                                return response.json(160, {'error_UID': UID})
+                                return ResponseFormal(160,{'error_UID': UID})
                             else:
                             else:
-                                return response.json(160)
+                                return ResponseFormal(160)
                     else:
                     else:
                         try:
                         try:
                             equipmentCount = Device_Info.objects.bulk_create(querysetList)
                             equipmentCount = Device_Info.objects.bulk_create(querysetList)
                         except Exception as e:
                         except Exception as e:
                             errorInfo = traceback.format_exc()
                             errorInfo = traceback.format_exc()
                             print('添加数据库记录错误: %s' % errorInfo)
                             print('添加数据库记录错误: %s' % errorInfo)
-                            return response.json(500, {"details": repr(e)})
+                            return ResponseFormal(500, {"details": repr(e)})
                         else:
                         else:
                             if dictLen > 0:
                             if dictLen > 0:
-                                return response.json(0, {
-                                    'Shared': dictLen,
-                                    'Sharing': len(querysetList),
-                                    'errormsg': u'A part of the equipment has been shared!',
-                                })
+                                return ResponseFormal(0, {
+                                            'Shared': dictLen,
+                                            'Sharing': len(querysetList),
+                                            'errormsg': u'A part of the equipment has been shared!',
+                                        })
                             else:
                             else:
                                 if sharedAll:
                                 if sharedAll:
-                                    return response.json(0, {
+                                    return ResponseFormal(0, {
                                         'Sharing': len(querysetList)
                                         'Sharing': len(querysetList)
                                     })
                                     })
                                 else:
                                 else:
                                     if len(UID) > 0:
                                     if len(UID) > 0:
-                                        return response.json(0, {
+                                        return ResponseFormal(0, {
                                             'error_UID': UID,
                                             'error_UID': UID,
                                             'Sharing': len(querysetList),
                                             'Sharing': len(querysetList),
                                         })
                                         })
                                     else:
                                     else:
-                                        return response.json(0, {
+                                        return ResponseFormal(0, {
                                             'Sharing': len(querysetList),
                                             'Sharing': len(querysetList),
                                         })
                                         })
                 else:
                 else:
-                    return response.json(113)
+                    return ResponseFormal(113)
 
 
             else:
             else:
-                return response.json(172)
-
+                return ResponseFormal(172)
 
 
 class unsharedUserEquipmentView(View):
 class unsharedUserEquipmentView(View):
     @method_decorator(csrf_exempt)
     @method_decorator(csrf_exempt)
@@ -319,8 +326,6 @@ class unsharedUserEquipmentView(View):
         content = queryset.get('content', None)
         content = queryset.get('content', None)
         unsharedAll = queryset.get('unsharedAll', False)
         unsharedAll = queryset.get('unsharedAll', False)
 
 
-        response = ResponseObject()
-
         if unsharedAll in ('1', '0'):
         if unsharedAll in ('1', '0'):
             unsharedAll = bool(int(unsharedAll))
             unsharedAll = bool(int(unsharedAll))
         elif unsharedAll in ('true', 'false'):
         elif unsharedAll in ('true', 'false'):
@@ -330,34 +335,36 @@ class unsharedUserEquipmentView(View):
                 unsharedAll = 0
                 unsharedAll = 0
 
 
         if token != None and GuestID != None and len(GuestID) > 0:
         if token != None and GuestID != None and len(GuestID) > 0:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                MasterID = tko.userID()
+            tokenManager = JSONTokenManager()
+            error_code = tokenManager.verify_AToken(token)
+            if error_code == 0:
+                MasterID = tokenManager.accessDict.get('userID', None)
                 if unsharedAll and MasterID != None:
                 if unsharedAll and MasterID != None:
-                    return self.unsharedUserEquipmentSQL(MasterID, GuestID, True, response, args, kwargs)
+                    response = HttpResponse(self.unsharedUserEquipmentSQL(MasterID, GuestID, True, args, kwargs))
+                    return response
                 else:
                 else:
                     if content != None and MasterID != None:
                     if content != None and MasterID != None:
-                        return self.unsharedUserEquipmentSQL(MasterID, GuestID, False, response, args, content=content)
+                        response = HttpResponse(self.unsharedUserEquipmentSQL(MasterID, GuestID, False, args, content=content))
+                        return response
                     else:
                     else:
-                        return response.json(805)
+                        return ResponseJSON(805)
 
 
             else:
             else:
-                return response.json(tko.code)
+                response = HttpResponse(tokenManager.errorCodeInfo(error_code))
+                return response
         else:
         else:
-            return response.json(800)
+            return ResponseJSON(800)
 
 
-    def unsharedUserEquipmentSQL(self, MasterID, GuestID, unsharedAll, response, *args, **kwargs):
+    def unsharedUserEquipmentSQL(self, MasterID, GuestID, unsharedAll, *args, **kwargs):
         if unsharedAll:
         if unsharedAll:
             try:
             try:
                 equipmentCount = Device_Info.objects.filter(userID_id=GuestID, primaryUserID=MasterID).delete()
                 equipmentCount = Device_Info.objects.filter(userID_id=GuestID, primaryUserID=MasterID).delete()
             except Exception as e:
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 errorInfo = traceback.format_exc()
                 print('删除设备更新数据库错误: %s' % errorInfo)
                 print('删除设备更新数据库错误: %s' % errorInfo)
-                return response.json(171, {"details": repr(e)})
+                return ResponseFormal(171, {"details": repr(e)})
             else:
             else:
-                return response.json(0, {'removeCount': equipmentCount[0]})
+                return ResponseFormal(0, {'removeCount': equipmentCount[0]})
         else:
         else:
             content = kwargs.get('content', None)
             content = kwargs.get('content', None)
             if content != None:
             if content != None:
@@ -387,17 +394,17 @@ class unsharedUserEquipmentView(View):
                         removeCount += equipmentCount[0]
                         removeCount += equipmentCount[0]
 
 
                 if len(errorRemove) > 0:
                 if len(errorRemove) > 0:
-                    return response.json(171, {
-                        'removeCount': removeCount,
-                        'error_UID': errorRemove,
-                    })
+                    return ResponseFormal(171, {
+                                'removeCount': removeCount,
+                                'error_UID': errorRemove,
+                            })
                 else:
                 else:
-                    if len(errorUID) > 0:
-                        return response.json(173, {
+                    if len(errorUID) >0:
+                        return ResponseFormal(173, {
                             'removeCount': removeCount,
                             'removeCount': removeCount,
                             'error_UID': errorUID,
                             'error_UID': errorUID,
                         })
                         })
                     else:
                     else:
-                        return response.json(0, {
-                            'removeCount': removeCount
+                        return ResponseFormal(0, {
+                                     'removeCount': removeCount
                         })
                         })

+ 15 - 3
DB/data.json

@@ -1,5 +1,17 @@
 {
 {
-  "code": "200",
-  "res": {},
-  "msg":{}
+  "token": "",
+  "content": {
+    "View_Account": "admin",
+    "UID": "9M23R17PHD8TJDT8111A",
+    "NotificationMode": 1,
+    "EventNotification": 0,
+    "DebugMode": 0,
+    "NickName": "\ud83c\udf3a",
+    "qvgaLevel": 0,
+    "mMonitorIndex": 0,
+    "View_Password": "541034aaa",
+    "Online": 0,
+    "Type": 10,
+    "ChannelIndex": 0
+  }
 }
 }

+ 70 - 18
Model/models.py

@@ -1,16 +1,13 @@
-from itertools import chain
-
-from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
 from django.db import models
 from django.db import models
+from itertools import chain
 from django.utils import six
 from django.utils import six
-from django.utils.encoding import python_2_unicode_compatible
-from imagekit.models import ProcessedImageField
 from imagekit.processors import ResizeToFill
 from imagekit.processors import ResizeToFill
-
-from Ansjer.config import SERVER_DOMAIN
+from imagekit.models import ProcessedImageField
+import Ansjer.settings as api_settings
+from django.utils.encoding import python_2_unicode_compatible
+from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 
 
-
 class PermissionsManager(models.Manager):
 class PermissionsManager(models.Manager):
     use_in_migrations = True
     use_in_migrations = True
 
 
@@ -165,7 +162,7 @@ class Device_User(AbstractBaseUser):
                         verbose_name=u'头像',
                         verbose_name=u'头像',
                         # 图片将处理成85x85的尺寸
                         # 图片将处理成85x85的尺寸
                         processors=[ResizeToFill(85, 85)],)
                         processors=[ResizeToFill(85, 85)],)
-    userIconUrl = models.URLField(blank = True, max_length = 128, default=SERVER_DOMAIN
+    userIconUrl = models.URLField(blank = True, max_length = 128, default=api_settings.SERVER_DOMAIN
                                                                           + '/account/getAvatar/User/defaultUser.png')
                                                                           + '/account/getAvatar/User/defaultUser.png')
     NickName = models.CharField(blank=True, max_length=32, default='', verbose_name=u'用户昵称')
     NickName = models.CharField(blank=True, max_length=32, default='', verbose_name=u'用户昵称')
     is_superuser = models.IntegerField(blank=True, default=0, verbose_name=u'用户类型')
     is_superuser = models.IntegerField(blank=True, default=0, verbose_name=u'用户类型')
@@ -279,14 +276,42 @@ class Device_User(AbstractBaseUser):
             return permslist
             return permslist
     def has_module_perms(self, app_label):
     def has_module_perms(self, app_label):
         return True
         return True
+    '''
+
+    def toJSON(self, fields=None, exclude=None):
+        Fields = []
+        for field in self._meta.fields:
+            Fields.append(field.name)
+
+        data = {}
+        for attr in Fields:
+            if fields and attr not in fields:
+                continue
+            if exclude and attr in exclude:
+                continue
+
+            if isinstance(getattr(self, attr), datetime.datetime):
+                data[attr] = getattr(self, attr).strftime('%Y-%m-%d %H:%M:%S')
+            elif isinstance(getattr(self, attr), datetime.date):
+                data[attr] = getattr(self, attr).strftime('%Y-%m-%d')
+            elif isinstance(getattr(self, attr), ProcessedImageFieldFile):
+                data[attr] = str(getattr(self, attr))
+            else:
+                data[attr] = getattr(self, attr)
+
+        import simplejson as json
+        return json.dumps(data, ensure_ascii=False)
+    '''
     @property
     @property
     def is_staff(self):
     def is_staff(self):
         return self.is_superuser
         return self.is_superuser
 
 
 class Device_Info(models.Model):
 class Device_Info(models.Model):
     id = models.CharField(blank=True, max_length=32, primary_key=True)
     id = models.CharField(blank=True, max_length=32, primary_key=True)
+    # to_field 指定当前关系与被关联对象中的哪个字段关联。默认情况下,to_field 指向被关联对象的主键
     userID = models.ForeignKey(Device_User, blank=True, to_field='userID',
     userID = models.ForeignKey(Device_User, blank=True, to_field='userID',
                                    on_delete=models.CASCADE)
                                    on_delete=models.CASCADE)
+
     NickName = models.CharField(blank=True, max_length=32, verbose_name=u'设备名称')
     NickName = models.CharField(blank=True, max_length=32, verbose_name=u'设备名称')
     UID = models.CharField(blank=True, max_length=32, verbose_name=u'设备UID')
     UID = models.CharField(blank=True, max_length=32, verbose_name=u'设备UID')
     SID = models.CharField(blank=True, max_length=32, verbose_name=u'服务器ID')
     SID = models.CharField(blank=True, max_length=32, verbose_name=u'服务器ID')
@@ -316,6 +341,32 @@ class Device_Info(models.Model):
 
 
     def __str__(self):
     def __str__(self):
         return self.NickName
         return self.NickName
+    '''
+    def toJSON(self, fields=None, exclude=None):
+        Fields = []
+        for field in self._meta.fields:
+            Fields.append(field.name)
+
+        data = {}
+        for attr in Fields:
+            if fields and attr not in fields:
+                continue
+            if exclude and attr in exclude:
+                continue
+
+            if isinstance(getattr(self, attr), datetime.datetime):
+                data[attr] = getattr(self, attr).strftime('%Y-%m-%d %H:%M:%S')
+            elif isinstance(getattr(self, attr), datetime.date):
+                data[attr] = getattr(self, attr).strftime('%Y-%m-%d')
+            elif isinstance(getattr(self, attr), Device_User):
+                data[attr] = getattr(self, attr).userID
+            else:
+                data[attr] = getattr(self, attr)
+
+        import simplejson as json
+        return json.dumps(data,ensure_ascii=False)
+    
+    '''
     def model_to_dict(self, fields=None, exclude=None):
     def model_to_dict(self, fields=None, exclude=None):
         opts = self._meta
         opts = self._meta
         data = {}
         data = {}
@@ -391,7 +442,7 @@ class Auth_Captcha(models.Model):
 class Access_Log(models.Model):
 class Access_Log(models.Model):
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     user = models.CharField(max_length=100,null=True,blank=True,verbose_name=u'用户')
     user = models.CharField(max_length=100,null=True,blank=True,verbose_name=u'用户')
-    operation = models.CharField(max_length=100,db_index=True,null=True,blank=True,verbose_name=u'操作')
+    operation = models.CharField(max_length=100,null=True,blank=True,verbose_name=u'操作')
     ip = models.CharField(max_length=100,null=True,blank=True,verbose_name=u'访问ip地址')
     ip = models.CharField(max_length=100,null=True,blank=True,verbose_name=u'访问ip地址')
     url = models.CharField(max_length=150,null=True,blank=True,verbose_name=u'访问路径')
     url = models.CharField(max_length=150,null=True,blank=True,verbose_name=u'访问路径')
     status = models.IntegerField(null=True,blank=True,verbose_name=u'状态')
     status = models.IntegerField(null=True,blank=True,verbose_name=u'状态')
@@ -440,7 +491,7 @@ class Equipment_Sensor(models.Model):
 class Equipment_Info(models.Model):
 class Equipment_Info(models.Model):
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     devUid = models.CharField(null=True, blank=True,max_length=32, verbose_name=u'设备ID')
     devUid = models.CharField(null=True, blank=True,max_length=32, verbose_name=u'设备ID')
-    devNickName = models.CharField(blank=True, max_length=32, default='',verbose_name=u'设备昵称')
+    devNickName = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
     Channel = models.IntegerField(null=True, blank=True, verbose_name=u'设备通道')
     Channel = models.IntegerField(null=True, blank=True, verbose_name=u'设备通道')
     eventType = models.IntegerField(null=True, blank=True, verbose_name=u'事件类型')
     eventType = models.IntegerField(null=True, blank=True, verbose_name=u'事件类型')
     viewAccont = models.CharField(blank=True,null=True, max_length=32, verbose_name=u'设备账户')
     viewAccont = models.CharField(blank=True,null=True, max_length=32, verbose_name=u'设备账户')
@@ -449,8 +500,7 @@ class Equipment_Info(models.Model):
     alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
     alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
     eventTime = models.CharField(blank=True,null=True, max_length=16, verbose_name=u'设备报警时间')
     eventTime = models.CharField(blank=True,null=True, max_length=16, verbose_name=u'设备报警时间')
     receiveTime = models.CharField(blank=True,null=True, max_length=16, verbose_name=u'接收到报警时间')
     receiveTime = models.CharField(blank=True,null=True, max_length=16, verbose_name=u'接收到报警时间')
-    userID = models.ForeignKey(Device_User, null=True,blank=True, to_field='userID',
-                                   on_delete=models.CASCADE)
+
     def __str__(self):
     def __str__(self):
         return self.id
         return self.id
 
 
@@ -458,7 +508,7 @@ class Equipment_Info(models.Model):
         db_table = 'equipment_info'
         db_table = 'equipment_info'
         verbose_name = u'设备信息推送表'
         verbose_name = u'设备信息推送表'
         verbose_name_plural=verbose_name
         verbose_name_plural=verbose_name
-        ordering = ('-id',)
+        ordering = ('id',)
 
 
 class Feedback_Info(models.Model):
 class Feedback_Info(models.Model):
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
@@ -540,8 +590,9 @@ class Equipment_Version(models.Model):
         ordering = ('-data_joined',)
         ordering = ('-data_joined',)
         db_table = 'equipment_version'
         db_table = 'equipment_version'
 
 
-class App_Info(models.Model):
 
 
+class App_Info(models.Model):
+    
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
     appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
     appName = models.CharField(blank=True, max_length=32, verbose_name=u'app名称')
     appName = models.CharField(blank=True, max_length=32, verbose_name=u'app名称')
@@ -564,13 +615,13 @@ class App_Info(models.Model):
         verbose_name_plural=verbose_name
         verbose_name_plural=verbose_name
         ordering = ('id',)
         ordering = ('id',)
 
 
+
+'''
 class oauth_user(models.Model):
 class oauth_user(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     oid = models.CharField(max_length=36,unique=True,null=True,blank=True)
     oid = models.CharField(max_length=36,unique=True,null=True,blank=True)
     userID = models.OneToOneField("Device_User",verbose_name="用户表userID",to_field='userID',on_delete=models.CASCADE)
     userID = models.OneToOneField("Device_User",verbose_name="用户表userID",to_field='userID',on_delete=models.CASCADE)
-    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)
-
+    
     def __str__(self):
     def __str__(self):
         return self.oid
         return self.oid
 
 
@@ -579,3 +630,4 @@ class oauth_user(models.Model):
         verbose_name = u'认证用户关联表'
         verbose_name = u'认证用户关联表'
         verbose_name_plural=verbose_name
         verbose_name_plural=verbose_name
         ordering = ('id',)
         ordering = ('id',)
+'''

+ 1 - 1
Object/AWS/SesClassObject.py

@@ -1,4 +1,4 @@
-from Ansjer.config import AWS_ACCESS_ID,AWS_ACCESS_SECRET,AWS_ACCESS_REGION,COMPANY_EMAIL
+from Ansjer.config import *
 from boto3.session import Session
 from boto3.session import Session
 import traceback
 import traceback
 
 

+ 45 - 0
README.md

@@ -0,0 +1,45 @@
+### 软件版本:V1.0.3.218-7-23
+更新内容:
+    1.增加报警推送信息
+    2.增加设备操作日志
+    3.设备昵称支持emoji
+    4.支持多设备多终端进行登录
+    5.更改邮件发送为亚马逊aws
+    6.修改邮件模板,发件人
+    7.设备第一次添加为绑定人(其他人只能通过解绑,或者分享,或者通过密码添加获得,暂时未更新到正式)
+    8.增加操作文档
+    9.增加p2p定时发送邮件脚本
+### 软件版本:V1.0.1.218-5-15  
+更新内容:
+超级管理员账号:
+    1.用户管理下的反馈问题界面(分页,显示,编辑,删除),排序功能(反馈时间排序,状态排序,更新时间排序)     
+	2.版本管理下的APP界面(分页,显示,编辑,删除,添加,重置) 
+	3.帮助管理下的访问日志界面(分页,显示),搜索功能(用户名搜索,ip地址搜索,访问状态搜索,访问路径搜索,访问参数搜索)排序功能(时间排序) 
+	4.用户管理下的用户信息(显示,分页),要求用安卓APP与IOS测试注册的功能。注意:(尽量进行极限测试,比如国外手机是否有非11位的,邮箱长度是否有50位以上的) 
+	管理员账号: 
+	1.用户管理下的反馈问题界面(分页,显示),排序功能(反馈时间排序,状态排序,更新时间排序) 
+	2.版本管理下的APP界面(分页,显示)  
+	3.帮助管理下的访问日志界面(分页,显示),搜索功能(用户名搜索,ip地址搜索,访问状态搜索,访问路径搜索,访问参数搜索)  排序功能(时间排序) 
+	版本上传管理员: 
+	1.没有该功能 
+### 软件版本:V1.0.0.2018-4-23
+更新内容: 
+	超级管理员账号:         
+	1.登录功能,权限,角色添加,权限控制功能          
+	2.用户列表添加,删除,编辑(是否激活),显示功能,分页功能 
+	3.设备列表搜索(设备名称搜索),显示,传感器功能(修改,删除,显示的操作)         
+	4.版本列表上传版本,添加版本的信息,显示功能 
+	5.帮助管理的更新日志显示,数据统计显示,分页功能        
+	6.导航栏的全屏,修改密码,退出登录功能,显示账户资料,编辑用户的邮箱,昵称,是否在线      
+	管理员账号:         
+	1.登录功能          
+	2.用户列表显示功能        
+	3.设备列表搜索(设备名称搜索),显示功能,分页功能          
+	4.版本列表上传版本显示功能  
+	5.帮助管理的更新日志显示,数据统计显示,分页功能         
+	6.导航栏的全屏,显示账户资料,编辑用户的邮箱,昵称,是否在线,修改密码,退出登录功能 
+	版本上传管理员: 
+	1.登录功能   
+	2.版本列表上传版本,添加版本信息功能  
+	3.帮助管理的更新日志显示,数据统计显示,分页功能 
+	4.导航栏的全屏,修改密码,退出登录功能,显示账户资料,编辑用户的邮箱,昵称,是否在线

+ 2 - 31
Service/CommonService.py

@@ -7,9 +7,7 @@ from pathlib import Path
 from django.utils import timezone
 from django.utils import timezone
 from Ansjer.settings import SERVER_HOST
 from Ansjer.settings import SERVER_HOST
 from django_global_request.middleware import get_request
 from django_global_request.middleware import get_request
-from Ansjer.settings import BASE_DIR
-from random import Random
-
+from Ansjer.config import BASE_DIR
 
 
 # 复用性且公用较高封装代码在这
 # 复用性且公用较高封装代码在这
 class CommonService:
 class CommonService:
@@ -38,7 +36,7 @@ class CommonService:
     # 定义静态方法
     # 定义静态方法
     # 格式化query_set转dict
     # 格式化query_set转dict
     @staticmethod
     @staticmethod
-    def qs_to_dict(query_set):
+    def query_set_to_dict(query_set):
         sqlJSON = serializers.serialize('json', query_set)
         sqlJSON = serializers.serialize('json', query_set)
         sqlList = json.loads(sqlJSON)
         sqlList = json.loads(sqlJSON)
         sqlDict = dict(zip(["datas"], [sqlList]))
         sqlDict = dict(zip(["datas"], [sqlList]))
@@ -249,30 +247,3 @@ class CommonService:
             return None
             return None
         else:
         else:
             return userID
             return userID
-
-    @staticmethod
-    def req_path(request, ssl=False):
-        get_host = request.get_host()  # 获取请求地址
-        if ssl is True:
-            tran_p = "https://"
-        else:
-            tran_p = "http://"
-        url_all = tran_p + get_host
-        return url_all
-
-    # 生成随机数
-    @staticmethod
-    def RandomStr(randomlength=8, number=True):
-        str = ''
-        if number == False:
-            characterSet = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsT' \
-                           'tUuVvWwXxYyZz0123456789'
-        else:
-            characterSet = '0123456789'
-
-        length = len(characterSet) - 1
-
-        random = Random()
-        for index in range(randomlength):
-            str += characterSet[random.randint(0, length)]
-        return str

+ 32 - 27
Service/MiscellService.py

@@ -1,22 +1,18 @@
-import datetime
-import time
-import traceback
-
-import requests
-import simplejson as json
-from django.utils.timezone import utc
-
-from Ansjer.config import SERVER_DOMAIN
-from Ansjer.settings import SECRET_KEY
-from Controller.CheckUserData import getRandom, TokenLink
 from Object.AWS.SesClassObject import SesClassObject
 from Object.AWS.SesClassObject import SesClassObject
-from Object.TokenObject import TokenObject
-from Object.mongodb import mongodb
+from Ansjer.settings import SERVER_DOMAIN
+from Ansjer.config import SECRET_KEY
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
+import time, traceback
+from Controller.CheckUserData import getRandom, TokenLink
+import simplejson as json
+from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
+import datetime
+from django.utils.timezone import utc
+import requests
+from Object.mongodb import mongodb
 from Service.TemplateService import TemplateService
 from Service.TemplateService import TemplateService
-
-
+from Model.models import Device_User
 # 杂项类,共用行不高,但有些地方需求
 # 杂项类,共用行不高,但有些地方需求
 
 
 
 
@@ -65,28 +61,37 @@ class MiscellService():
 
 
     # 获取访问用户名称
     # 获取访问用户名称
     @staticmethod
     @staticmethod
-    def get_access_name(request_dict):
+    def get_access_name(request):
+        if request.method == 'GET':
+            request_dict = request.GET
+        if request.method == 'POST':
+            request_dict = request.POST
         token = request_dict.get('token', None)
         token = request_dict.get('token', None)
-        user = None
-        if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            if tko.code == 0:
-                userID = ModelService.get_userID_by_oid(tko.oid)
-                user = ModelService.get_user_name(userID)
-        return user
+        userName = request_dict.get('userName', None)
+        userEmail = request_dict.get('userEmail', None)
+        if userName is not None:
+            return userName
+        elif userEmail is not None:
+            return userEmail
+        elif token is not None:
+            tM = JSONTokenManager()
+            tM.verify_AToken(token)
+            userID = tM.accessDict.get('userID', None)
+            username = ModelService.get_user_name(userID=userID)
+            return username
+        else:
+            return None
 
 
     @staticmethod
     @staticmethod
     def add_access_log(request, status_code):
     def add_access_log(request, status_code):
-        request.encoding = 'utf-8'
         if request.method == 'GET':
         if request.method == 'GET':
             request_dict = request.GET
             request_dict = request.GET
         if request.method == 'POST':
         if request.method == 'POST':
+            # request.encoding = 'utf-8'
             request_dict = request.POST
             request_dict = request.POST
         api_list = TemplateService.log_api()
         api_list = TemplateService.log_api()
         request_path = request.path.strip().strip('/')
         request_path = request.path.strip().strip('/')
         if request_path in api_list:
         if request_path in api_list:
-            user = MiscellService.get_access_name(request_dict=request_dict)
             clientIP = CommonService.get_ip_address(request)
             clientIP = CommonService.get_ip_address(request)
             now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
             now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
             password = request_dict.get('userPwd', None)
             password = request_dict.get('userPwd', None)
@@ -95,7 +100,7 @@ class MiscellService():
                 request_dict.pop('userPwd')
                 request_dict.pop('userPwd')
             content = json.dumps(request_dict)
             content = json.dumps(request_dict)
             add_data = {
             add_data = {
-                'user': user,
+                'user': MiscellService.get_access_name(request=request),
                 'ip': clientIP,
                 'ip': clientIP,
                 'status': status_code,
                 'status': status_code,
                 'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,
                 'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,

+ 4 - 13
Service/ModelService.py

@@ -14,7 +14,7 @@ class ModelService:
     def getValidateMember(userID):
     def getValidateMember(userID):
         device_user_query_set = Device_User.objects.get(userID=userID)
         device_user_query_set = Device_User.objects.get(userID=userID)
         role_query_set = device_user_query_set.role.all()
         role_query_set = device_user_query_set.role.all()
-        role_dict = CommonService.qs_to_dict(role_query_set)
+        role_dict = CommonService.query_set_to_dict(role_query_set)
         permission = role_dict["datas"][0]["fields"]["permission"]
         permission = role_dict["datas"][0]["fields"]["permission"]
         if len(permission):
         if len(permission):
             if 92 in permission:
             if 92 in permission:
@@ -27,7 +27,7 @@ class ModelService:
         device_user_query_set = Device_User.objects.get(userID=userID)
         device_user_query_set = Device_User.objects.get(userID=userID)
         role_query_set = device_user_query_set.role.all()
         role_query_set = device_user_query_set.role.all()
         if role_query_set.exists():
         if role_query_set.exists():
-            role_dict = CommonService.qs_to_dict(role_query_set)
+            role_dict = CommonService.query_set_to_dict(role_query_set)
             permission = role_dict["datas"][0]["fields"]["permission"]
             permission = role_dict["datas"][0]["fields"]["permission"]
             if len(permission):
             if len(permission):
                 return permission
                 return permission
@@ -50,7 +50,7 @@ class ModelService:
             if device_user_query_set:
             if device_user_query_set:
                 role_query_set = device_user_query_set.role.all()
                 role_query_set = device_user_query_set.role.all()
                 if role_query_set:
                 if role_query_set:
-                    role_dict = CommonService.qs_to_dict(role_query_set)
+                    role_dict = CommonService.query_set_to_dict(role_query_set)
                     permission = role_dict["datas"][0]["fields"]["permission"]
                     permission = role_dict["datas"][0]["fields"]["permission"]
                     print(permission)
                     print(permission)
                     if len(permission) > 0:
                     if len(permission) > 0:
@@ -123,13 +123,4 @@ class ModelService:
                                                           View_Password=View_Password, ChannelIndex=ChannelIndex)
                                                           View_Password=View_Password, ChannelIndex=ChannelIndex)
         if device_info_queryset.exists():
         if device_info_queryset.exists():
             return True
             return True
-        return False
-
-    # 根据oid获取userID
-    @staticmethod
-    def get_userID_by_oid(oid):
-        if oid is not None:
-            oauth_user_qs = oauth_user.objects.filter(oid=oid)
-            if oauth_user_qs.exists():
-                return oauth_user_qs[0].userID.userID
-        return None
+        return False

+ 338 - 0
Service/ResponseService.py

@@ -0,0 +1,338 @@
+from django.shortcuts import HttpResponse
+import simplejson as json
+from Service.CommonService import CommonService
+from Model.models import Device_User
+from var_dump import var_dump
+
+
+def ResponseData(code, res={},*args, **kwargs):
+    token = CommonService.get_request_val('token')
+    language = kwargs.get('language', None)
+    if language is not None:
+        LANGUAGE = language
+    else:
+        LANGUAGE = 'en'
+    if token is not None:
+        # var_dump(token)
+        userID = CommonService.get_userID_byT(token)
+
+        if userID is not None:
+            dn = Device_User.objects.filter(userID=userID).values('language')
+            if dn.exists():
+                if dn[0]['language']:
+                    LANGUAGE = dn[0]['language']
+    data_en = {
+        0: 'Success',
+        4: 'Operation failed',
+        5: 'Please try again one minute later!',
+        10: res,
+        13: 'This device does not exist !',
+        14: 'This device does not belong to the user',
+        15: 'You have not opened this service',
+        44: 'System error! Can not send email',
+        48: 'System object error!',
+        54: 'Data is already exist!',
+        55: 'Data is not exist!',
+        60: 'The app info has already exist',
+        89: 'You have already obtained the verification code, please check it or get it again after 5 minutes.',
+        90: 'If you have too many times to log in, please try it in 10 seconds.',
+        101: 'The user account of the mobile phone has already existed!',
+        102: 'The user account of the mobile phone does not exist!',
+        103: 'The mailbox user account has already existed!',
+        104: 'The mailbox user account does not exist!',
+        105: 'The input username is empty!',
+        106: 'Create User Error',
+        107: 'The username format does not conform to the rules!',
+        108: 'The mailbox format does not conform to the rules! ',
+        109: 'The password format does not conform to the rules!',
+        110: 'Because the user is not activated, the user is an invalid user!',
+        111: 'The password you entered is incorrect!',
+        112: 'Unknown error can not update the password!',
+        113: 'This userID does not exist!',
+        114: 'Delete user failure error',
+        115: 'The userID of the user to delete does not exist!',
+        116: 'Update User information failed',
+        117: 'The userID you provide does not exist!',
+        118: 'You do not enter the password two times!',
+        120: 'The verification code has expired, please get the verification code again!',
+        121: 'The verification code is wrong!',
+        122: 'Please get the verification code first!',
+        140: 'Unable to Logout',
+        150: 'The superID is None or superID is equal to userID',
+        160: 'The All Equipment has been shared by the User!',
+        170: 'A part of the equipment has been shared!',
+        171: 'Delete Equipment sharing failed',
+        172: 'There is no Equipment for this User!',
+        173: 'The UID does not exist!',
+        174: 'The user equipment has already existed!',
+        175: 'The user equipment has already binding!',
+        176: 'Delete equipment error',
+        177: 'Update equipment error',
+        178: 'ADD equipment error',
+        179: 'Device name cannot be repeated',
+        190: 'The rid does not exist!',
+        191: 'The roleName does not exist!',
+        192: 'Delete role error',
+        193: 'An unknown error causes the role can not be deleted!',
+        194: 'Update role error',
+        195: 'An unknown error causes the role can not be updated!',
+        196: 'The User already has this role!',
+        197: 'The user failed to add a new role',
+        198: 'The user does not have this role!',
+        199: 'The user can not delete this role',
+        200: 'The role assigns new permissions to failure',
+        201: 'Some of the permissions you have provided do not exist!',
+        202: 'Delete user rights failure',
+        203: 'Delete role permissions fail',
+        204: 'Failure to clear all users Rights',
+        205: 'All permissions to clear the role fail',
+        206: 'Some of the permissions you have provided have already existed!',
+        207: 'Some of the permissions you provide have already existed, and some of the permissions do not exist!',
+        300: 'Unable to get Token!',
+        301: 'Add Token to database error!',
+        302: 'Update Token to database error',
+        303: 'There is a problem in the Token format!',
+        305: 'The Token format is wrong and the related parameter is None!',
+        304: 'The token base64 Decode Error',
+        306: 'The signature in the token is invalid!',
+        307: 'The Token has expired!',
+        308: 'The Refresh Token has expired.',
+        309: 'This token is not valid because there is no token in the database!',
+        310: 'The userID in the token is None!',
+        311: 'The token is None!',
+        312: 'tokenID_id is None!',
+        313: 'If the user landed on someone else, if not, please login and modify the password.',
+        403: 'API ERROR!',
+        404: 'You don not have permission to access this!',
+        414: 'Client error ! Please confirm the request path!',
+        424: 'Database Error !',
+        444: 'Please confirm the correctness of the parameters!',
+        500: 'Query Database Error:',
+        501: 'Update database error!',
+        502: 'In the database, the parameter fields do not exist!',
+        600: 'You do not have permission to query all user information!',
+        601: 'You have no permission to delete user!',
+        602: 'You have no permission to modify the user information!',
+        603: 'The User account does not have permission to do this!',
+        604: 'You do not have permission to query all user equipmnet information!',
+        605: 'You have no permission to upload OTA files!',
+        606: 'The user has not assigned the role!',
+        607: 'The user does not have permission to add a new role!',
+        608: 'You have no rights to assign roles to users!',
+        609: 'You have no authority to delete the user\'s role!',
+        610: 'You have no permissions to query the roles of all users!',
+        611: 'You have no permissions to add a new permission!',
+        612: 'You have no permissions to query the perms of all users!',
+        613: 'You have no permissions to query the permissions of all roles!',
+        614: 'You do not have the authority to delete the user\'s rights!',
+        615: 'The superAdmin(userID) account does not exist!',
+        616: 'The User(userID) account does not exist!',
+        800: 'Request KEY is None!',
+        801: 'Wrong request KEY!',
+        802: 'The content parameter contains an non - modifiable field!',
+        803: 'The content parameter format is wrong',
+        804: 'One of the parameters of content or sharedAll must be provided!',
+        805: 'One of the parameters of content or unsharedAll must be provided!',
+        806: 'The content parameter is incomplete!',
+        807: 'The role has already existed!',
+        808: 'Add a new role to the wrong',
+        815: 'The permissions have already existed!',
+        816: 'Add a new permissions error',
+        817: 'The permissions do not exist!',
+        818: 'The deletion of the permissions failed',
+        700: 'Upload file error',
+        701: 'The file does not exist!',
+        702: 'Open the file error',
+        704: 'The Execl file contains n tables!',
+        705: 'The Execl file or TXT file contains some error data!',
+        706: 'The file content format is wrong!',
+        707: 'Other unknown errors',
+        900: 'There is no information about this version!',
+        901: 'Getting URL failure!',
+        902: 'The code does not exist!',
+        903: 'The name of the file does not meet the conditions!',
+        904: 'The equipment version information has already existed.',
+        905: 'Add equipment version information failed',
+        906: 'Cause of file operation error',
+        907: 'The download file does not exist!',
+        908: 'CRC32 Error',
+        910: 'There are too many downloads. Please wait a moment...',
+        1000: 'Sorry, the link has expired!',
+        1001: 'The link is wrong!',
+        1002: 'Send mail Fail!',
+        1003: 'The link content format does not conform to the rules!',
+        1004: 'You have applied for reset password operation, please confirm it by mail.',
+        1021: 'Sending SMS verification code error',
+        1022: 'Network error occurs when the authentication code is sent',
+        1023: 'Send phone voice verification code error',
+        10002: 'The user landed else where before, if not, please modify the user account and password!',
+    }
+    data_cn = {
+        0: '成功',
+        4: '操作失败',
+        5: '请一分钟后再尝试',
+        10: res,
+        13: '该设备不存在',
+        14: '该设备不属于您',
+        15: '您尚未打开此服务',
+        44: '系统错误!无法发送电子邮件',
+        48: '系统对象错误',
+        54: '数据已存在!',
+        55: '数据不存在!',
+        60: 'APP信息已经存在',
+        89: '您已经获得了验证码,请在5分钟后检查或再次确认。',
+        90: '登录次数过多,请在10秒内尝试。',
+        101: '手机的用户账号已经存在!',
+        102: '手机的用户账号不存在!',
+        103: '邮箱用户帐户已经存在!',
+        104: '邮箱用户帐户不存在!',
+        105: '输入用户名为空!',
+        106: '创建用户错误',
+        107: '用户名格式不符合规则!',
+        108: '邮箱格式不符合规则!',
+        109: '密码格式不符合规则!',
+        110: '因为用户未激活,用户是无效用户!',
+        111: '您输入的密码不正确!',
+        112: '未知错误不能更新密码!',
+        113: '此用户标识不存在!',
+        114: '删除用户失败错误',
+        115: '删除用户的用户名不存在!',
+        116: '更新用户信息失败',
+        117: '您提供的用户标识不存在!',
+        118: '你不输入密码两次!',
+        120: '验证码已经过期,请再次获得验证码!',
+        121: '验证码错了!',
+        122: '请先拿到验证码!',
+        140: '无法注销',
+        150: '超级用户不存在或者用户id错误',
+        160: '所有设备已被用户共享!',
+        170: '部分设备已经共享!',
+        171: '删除设备共享失败',
+        172: '这个用户没有设备!',
+        173: '设备UID不存在!',
+        174: '用户设备已经存在!',
+        175: '用户设备已经绑定了!',
+        176: '删除设备错误',
+        177: '更新设备错误',
+        178: '添加设备错误',
+        179: '设备名称不能重复',
+        190: '角色rid不存在!',
+        191: '角色名不存在!',
+        192: '删除角色错误',
+        193: '未知的错误导致角色不能被删除!',
+        194: '更新角色错误',
+        195: '未知的错误导致角色无法更新!',
+        196: '该用户已经拥有这个角色!',
+        197: '该用户未能添加新角色。',
+        198: '该用户没有这个角色!',
+        199: '该用户不能删除此角色',
+        200: '为角色分配新权限失败。',
+        201: '您提供的某些权限不存在!',
+        202: '删除用户权限失败',
+        203: '删除角色权限失败',
+        204: '未能清除所有用户权限',
+        205: '清除角色所有的权限失败',
+        206: '您提供的某些权限已经存在!',
+        207: '您提供的某些权限已经存在,并且某些权限不存在!',
+        300: '无法获取令牌!',
+        301: '添加令牌到数据库错误!',
+        302: '更新令牌到数据库错误',
+        303: '令牌格式有问题!',
+        305: '令牌格式是错误的,相关参数是不存在的!',
+        304: '令牌Base64解码错误',
+        306: '令牌中的签名无效!',
+        307: '令牌已经过期!',
+        308: '刷新令牌已过期。',
+        309: '此令牌无效,因为数据库中没有标记!',
+        310: '令牌中的用户名不存在!',
+        311: '令牌为空!',
+        312: '令牌id为空!',
+        313: '账号在其它地方进行过登录,如果不是本人操作,请登录并修改密码。',
+        403: 'API错误!',
+        404: '您没有访问的权限!',
+        414: '客户端错误!请确认请求路径!',
+        424: '数据库错误!',
+        444: '请确认参数的正确性!',
+        500: '查询数据库错误!',
+        501: '更新数据库错误!',
+        502: '在数据库中,参数字段不存在!',
+        600: '您没有权限查询所有用户信息!',
+        601: '您没有权限删除用户!',
+        602: '您没有修改用户信息的权限!',
+        603: '用户帐户没有权限执行此操作!',
+        604: '您没有权限查询所有用户设备信息!',
+        605: '你没有上传OTA文件的权限!',
+        606: '用户没有分配角色!',
+        607: '用户没有添加新角色的权限!',
+        608: '您无权分配角色给用户!',
+        609: '您没有权限删除用户的角色!',
+        610: '您没有权限查询所有用户的角色!',
+        611: '您没有添加新权限的权限!',
+        612: '您没有查询所有用户的权限的权限!',
+        613: '您没有权限查询所有角色的权限!',
+        614: '您没有权限删除用户的权限!',
+        615: '超级管理员(USEID)帐户不存在!',
+        616: '用户(USERID)帐户不存在!',
+        800: '请求参数不存在!',
+        801: '错误的请求参数!',
+        802: 'content参数错误!',
+        803: 'content参数格式错误',
+        804: 'content或sharedAll参数没有传递',
+        805: 'content或unsharedAll参数没有传递',
+        806: 'content参数不完整!',
+        807: '角色已经存在!',
+        808: '添加新角色错误',
+        815: '权限已经存在!',
+        816: '新增权限错误',
+        817: '权限不存在',
+        818: '删除权限错误',
+        700: '上传文件错误',
+        701: '文件不存在',
+        702: '打开文件错误',
+        704: 'Excel文件包含n个表!',
+        705: 'Excel文件或TXT文件包含一些错误数据!',
+        706: '文件内容格式错误!',
+        707: '其他未知错误',
+        900: '版本信息不存在',
+        901: '获取链接失败',
+        902: 'code不存在!',
+        903: '文件名不符合条件!',
+        904: '设备版本信息已经存在。',
+        905: '添加设备版本信息失败',
+        906: '文件操作错误',
+        907: '下载文件不存在!',
+        908: 'CRC32 错误',
+        910: '下载太多了。请稍等…',
+        1000: '对不起,链接已经过期!',
+        1001: '链接错误!',
+        1002: '发送邮件失败!',
+        1003: '链接内容格式不符合规则!',
+        1004: '您已申请重置密码操作,请通过邮件确认。',
+        1021: '发送短信验证码错误',
+        1022: '当发送验证码时发生网络错误',
+        1023: '发送电话语音验证码错误',
+        10002: '用户登陆之前的其他地方,如果没有,请修改用户帐号和密码!',
+    }
+    if LANGUAGE == 'en':
+        data = data_en
+    elif LANGUAGE == 'cn':
+        data = data_cn
+    else:
+        data = data_en
+    return {'code': code, 'reason': data[code], 'result': res}
+
+
+def ResponseFormal(code, res={},*args, **kwargs):
+    data = ResponseData(code, res,*args, **kwargs)
+    resJSON = json.dumps(
+        {
+            "result_code": data['code'],
+            "reason": data['reason'],
+            "result": data['result'],
+            "error_code": data['code'],
+        }, ensure_ascii=False)
+    return resJSON
+
+
+def ResponseJSON(code, res={},*args, **kwargs):
+    return HttpResponse(ResponseFormal(code, res,*args, **kwargs))

+ 40 - 4
Service/TemplateService.py

@@ -16,6 +16,17 @@ class TemplateService:
     @staticmethod
     @staticmethod
     def log_api():
     def log_api():
         apiList = [
         apiList = [
+            'account/login',
+            # 'account/logout',
+            'account/authcode',
+            'account/register',
+            'account/changePwd',
+            'account/active',
+            'account/forget',
+            'account/activate',
+            'account/password/edit',
+            'account/password/mobiletoResetPwd',
+            'account/modifyPwd',
             'account/showUserMore',
             'account/showUserMore',
             'account/perfectUserInfo',
             'account/perfectUserInfo',
             'account/getAvatar',
             'account/getAvatar',
@@ -32,6 +43,7 @@ class TemplateService:
             'equipment/modifyUserEquipment',
             'equipment/modifyUserEquipment',
             'equipment/showAllUserEquipment',
             'equipment/showAllUserEquipment',
             'accessLog/findEquipmentInfo',
             'accessLog/findEquipmentInfo',
+            'accessLog/testApi',
             'OTA/uploads',
             'OTA/uploads',
             'OTA/download',
             'OTA/download',
             'OTA/downloads',
             'OTA/downloads',
@@ -41,6 +53,8 @@ class TemplateService:
             'OTA/showAllEquipmentVersion',
             'OTA/showAllEquipmentVersion',
             'OTA/getUpdataFileUrl',
             'OTA/getUpdataFileUrl',
             'mobile/uploadlogFile',
             'mobile/uploadlogFile',
+            # 'toekn/refreshToken',
+            'import/batchAddEquipment',
             'roles/addNewRole',
             'roles/addNewRole',
             'roles/queryRole',
             'roles/queryRole',
             'roles/delRole',
             'roles/delRole',
@@ -50,16 +64,37 @@ class TemplateService:
             'perms/queryPerms',
             'perms/queryPerms',
             'perms/modifyPerms',
             'perms/modifyPerms',
             'permsManager/queryRolePerms',
             'permsManager/queryRolePerms',
+            'api-token-auth',
+            'api-token-refresh',
+            'api-token-verify',
+
             'uploads/upgrade',
             'uploads/upgrade',
             'upgrade/download',
             'upgrade/download',
             'downloads/upgrade',
             'downloads/upgrade',
             'getOTAurl/getUpdataFileUrl',
             'getOTAurl/getUpdataFileUrl',
+
+            # 'media/stream',
+            # 'media/auth_stream',
+            # 'media/send_video_s3',
+            # 'media/auth_live',
+
             'equipment/sensor',
             'equipment/sensor',
             'equipment/info',
             'equipment/info',
+
             'adminManage/manage',
             'adminManage/manage',
+
             'equipment/OTA',
             'equipment/OTA',
+
             'feedbackInfo',
             'feedbackInfo',
+
             'appInfo',
             'appInfo',
+            'meal/manage',
+            'device/meal',
+            'HlsManage',
+            'device/manage',
+            # 'device/online',
+            # 'device/offline',
+            # 'device/updateIP',
         ]
         ]
         return apiList
         return apiList
 
 
@@ -71,6 +106,7 @@ class TemplateService:
             data = {
             data = {
                 'cn': {
                 'cn': {
                     'title': '注册码获取邮件',
                     'title': '注册码获取邮件',
+                    # 'body': '恭喜你来到安士佳公司物联网系统,您获取的注册码为:',
                     'body': """
                     'body': """
                         <!DOCTYPE html>
                         <!DOCTYPE html>
     <html>
     <html>
@@ -207,7 +243,7 @@ class TemplateService:
                     <div class="xboxcontent">
                     <div class="xboxcontent">
                         <div class="neirong">
                         <div class="neirong">
                             <p><b>请核对你的用户名:</b><span id="userName" class="font_darkblue">{username}</span></p>
                             <p><b>请核对你的用户名:</b><span id="userName" class="font_darkblue">{username}</span></p>
-                            <p><b>验证码:</b><span class="font_lightblue"><span id="yzm" data="{captcha}" onclick="return false;" t="7" style="border-bottom: 1px dashed rgb(204, 204, 204); z-index: 1; position: static;">{captcha}</span></span><br><span class="font_gray">(请输入该验证码完成验证,验证码10分钟内有效!)</span></p>
+                            <p><b>验证码:</b><span class="font_lightblue"><span id="yzm" data="{captcha}" onclick="return false;" t="7" style="border-bottom: 1px dashed rgb(204, 204, 204); z-index: 1; position: static;">{captcha}</span></span><br><span class="font_gray">(请输入该验证码完成验证,验证码5分钟内有效!)</span></p>
                             <div class="line">如果你未申请注册服务,请忽略该邮件。</div>
                             <div class="line">如果你未申请注册服务,请忽略该邮件。</div>
                         </div>
                         </div>
                     </div>
                     </div>
@@ -363,7 +399,7 @@ class TemplateService:
                     <div class="xboxcontent">
                     <div class="xboxcontent">
                         <div class="neirong">
                         <div class="neirong">
                             <p><b>Please check your username:</b><span id="userName" class="font_darkblue">{username}</span></p>
                             <p><b>Please check your username:</b><span id="userName" class="font_darkblue">{username}</span></p>
-                            <p><b>Your validation code:</b><span class="font_lightblue"><span id="yzm" data="{captcha}" onclick="return false;" t="7" style="border-bottom: 1px dashed rgb(204, 204, 204); z-index: 1; position: static;">{captcha}</span></span><br><span class="font_gray">(Please input the verification code to complete the verification. The verification code is valid in 10 minutes!)</span></p>
+                            <p><b>Your validation code:</b><span class="font_lightblue"><span id="yzm" data="{captcha}" onclick="return false;" t="7" style="border-bottom: 1px dashed rgb(204, 204, 204); z-index: 1; position: static;">{captcha}</span></span><br><span class="font_gray">(Please input the verification code to complete the verification. The verification code is valid in 5 minutes!)</span></p>
                             <div class="line">If you have not applied for registration, please ignore the email.</div>
                             <div class="line">If you have not applied for registration, please ignore the email.</div>
                         </div>
                         </div>
                     </div>
                     </div>
@@ -402,11 +438,11 @@ class TemplateService:
             data = {
             data = {
                 'cn': {
                 'cn': {
                     'title': '重置密码信息',
                     'title': '重置密码信息',
-                    'body': '您好{username}\n' + '您已经请求了重置密码,可以点击下面的链接来重置密码\n' + '<p><a href="{reset_link}">{reset_link}</a></p>\n' + '更改后的密码为: {reset_pwd}\n如果你没有请求重置密码,请忽略这封邮件.\n在你点击上面链接修改密码之前,你的密码将会保持不变\n'
+                    'body': '您好{username}\n' + '您已经请求了重置密码,可以点击下面的链接来重置密码\n' + '<p><a href="{domain}/account/password/edit?reset_password_token={token}&reset_pwd_val={redis_val}">{domain}/account/password/edit?reset_password_token={token}&reset_pwd_val={redis_val}</a></p>\n' + '更改后的密码为:.{userPwd}\n如果你没有请求重置密码,请忽略这封邮件.\n在你点击上面链接修改密码之前,你的密码将会保持不变\n'
                 },
                 },
                 'en': {
                 'en': {
                     'title': 'Reset the password information',
                     'title': 'Reset the password information',
-                    'body': 'Hello! Dear {username}.<br>You have asked to reset the password, and you can click the link below to reset the password.<br>' + '<p><a href="{reset_link}">{reset_link}</a></p><br>' + 'The new password is: {reset_pwd}<br>If you do not request to reset the password, please ignore this mail.',
+                    'body': 'Hello! Dear {username}.<br>You have asked to reset the password, and you can click the link below to reset the password.<br>' + '<p><a href="{domain}/account/password/edit?reset_password_token={token}&reset_pwd_val={redis_val}">{domain}/account/password/edit?reset_password_token={token}&reset_pwd_val={redis_val}</a></p><br>' + 'The new password is: {userPwd}<br>If you do not request to reset the password, please ignore this mail.',
                 }
                 }
             }
             }
         return data[language]
         return data[language]

+ 270 - 0
Service/TokenManager.py

@@ -0,0 +1,270 @@
+# -*- coding: utf-8 -*-
+from datetime import datetime
+from calendar import timegm
+from Model.models import AuthToken_Token, Device_User
+import time, base64, hmac, random, string,simplejson as json
+import traceback
+from django.utils.timezone import utc
+import datetime as utdatetime
+from Service.ResponseService import ResponseFormal
+from Ansjer.config import EXPIRATION_DELTA,REFRESH_EXPIRATION_DELTA
+
+
+def SQLManager(content):
+    tokenID_id = content.get('tokenID_id', None)
+    if tokenID_id != None:
+        tokenIDValid = AuthToken_Token.objects.filter(tokenID_id=tokenID_id)
+        if tokenIDValid:
+            try:
+                content.pop('tokenID_id')
+                tokenIDValid.update(**content)
+                tokenIDValid.update(last_update=utdatetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc))
+            except Exception as e:
+                errorInfo = traceback.format_exc()
+                print('更新Token错误: %s ' % errorInfo)
+                return ResponseFormal(302,{'details':repr(e)})
+            else:
+                return ResponseFormal(0)
+        else:
+            try:
+                authToken = AuthToken_Token(**content)
+                authToken.save()
+            except Exception as e:
+                errorInfo = traceback.format_exc()
+                print('添加Token错误: %s ' % errorInfo)
+                return ResponseFormal(301,{'details':repr(e)})
+            else:
+                return ResponseFormal(0)
+    else:
+        return ResponseFormal(312)
+
+class JSONTokenManager:
+    def __init__(self):
+        self.iCode = ''
+        self.errormsg = ''
+        self.accessDict = {}
+        self. refreshDict = {}
+
+    def getSalt(self, strLen = 6):
+        """
+        获取指定长度strLen的字符串
+        :param strLen:
+        :return: 返回获取到指定长度的字符串
+        """
+        salt = ''.join(random.sample(string.ascii_letters + string.digits, strLen))
+        return salt
+
+    def generate_AToken(self, JSON , iCode):
+        """
+
+        :param JSON:
+        :param iCode:
+        :return:
+        """
+        orig_iat = datetime.utcnow().utctimetuple()
+        exp_at = (datetime.utcnow() + EXPIRATION_DELTA).utctimetuple()
+        exp_rt = (datetime.utcnow() + REFRESH_EXPIRATION_DELTA).utctimetuple()
+
+
+        userJSON = json.loads(JSON)
+        expDict = {'orig_iat': timegm(orig_iat), 'exp_at': timegm(exp_at), 'exp_rt': timegm(exp_rt)}
+        userJSON.update(expDict)
+        exp_rtJSON = json.dumps(userJSON, ensure_ascii=False)
+        userJSON.pop('exp_rt')
+        exp_atJSON = json.dumps(userJSON, ensure_ascii=False)
+        print(exp_rtJSON, exp_atJSON)
+
+        hmac_at = hmac.new(exp_atJSON.encode('utf-8'), iCode.encode('utf-8')).hexdigest()
+        hmac_rt = hmac.new(exp_rtJSON.encode('utf-8'), iCode.encode('utf-8')).hexdigest()
+        access_token = exp_atJSON + '&' + hmac_at
+        refresh_token = exp_rtJSON + '&' + hmac_rt
+
+        b64_access_token = base64.urlsafe_b64encode(access_token.encode("utf-8"))
+        b64_refresh_token = base64.urlsafe_b64encode(refresh_token.encode("utf-8"))
+
+        tokenDict = {'access_token': b64_access_token.decode('utf-8'), 'refresh_token': b64_refresh_token.decode('utf-8'), \
+                     'iCode': iCode, 'mCode': userJSON.get('mCode', '')}
+        tokenDict['tokenID_id'] = userJSON.get('userID', None)
+        print(tokenDict)
+
+        sqlJSON = SQLManager(content=tokenDict)
+        sqlDict = json.loads(sqlJSON)
+        error_code = sqlDict.get('error_code', None)
+        if error_code != None and error_code == 0:
+            b64_alist = list(b64_access_token.decode('utf-8'))
+            b64_alist.insert(12, self.getSalt(strLen=6))
+            b64_atoken = ''.join(b64_alist)
+            b64_rflist = list(b64_refresh_token.decode('utf-8'))
+            b64_rflist.insert(12, self.getSalt(strLen=6))
+            b64_rftoken = ''.join(b64_rflist)
+            token = {'access_token': b64_atoken[::-1], 'refresh_token': b64_rftoken[::-1]}
+            dictJSON = {'result_code': 0,  'reason': 'Success', 'result': token, 'error_code': 0}
+            return json.dumps(dictJSON, ensure_ascii=False)
+        else:
+            return sqlJSON
+
+    def verify_AToken(self, token, isAToken = True):
+        if token == 'stest':
+            self.accessDict['userID'] = '151547867345163613800138001'
+            return 0
+        if token == 'sformal':
+            self.accessDict['userID'] = '151564262337939513800138001'
+            return 0
+        """
+        :param token:
+        :param isAToken:
+        :return:
+        """
+        access_token = token[::-1]
+        if len(access_token) < 18:
+            return 303
+        atoken = access_token[:12] + access_token[18:]
+        print(atoken)
+        try:
+            token_str = base64.urlsafe_b64decode(atoken).decode('utf-8')
+        except Exception as e:
+            errorInfo = traceback.format_exc()
+            print('base64 decode error: %s' % errorInfo)
+
+            self.errormsg = 'base64 decode error: %s' % repr(e)
+            return 304
+
+        token_list = token_str.split('&')
+        if len(token_list) != 2:
+            return 303
+
+        ts_str = token_list[0]
+        jsonDict = json.loads(ts_str)
+        print(jsonDict)
+
+        userID = jsonDict.get('userID', None)
+
+        mCode = jsonDict.get('mCode', None)
+        if userID == None or mCode == None:
+            return 303
+
+        try:
+            if isAToken:
+                authToken = AuthToken_Token.objects.filter(tokenID_id=userID, access_token=atoken)
+            else:
+                authToken = AuthToken_Token.objects.filter(tokenID_id=userID, refresh_token=atoken)
+        except Exception as e:
+            errorInfo = traceback.format_exc()
+            print('Database Query error: %s' % errorInfo)
+
+            self.errormsg = 'Database Query error: %s' % repr(e)
+            return 500
+
+        if authToken:
+            self.iCode = authToken[0].iCode
+            hmac_token = token_list[1]
+            hmac_at = hmac.new(ts_str.encode('utf-8'), self.iCode.encode('utf-8')).hexdigest()
+            if hmac_at != hmac_token:
+                return 306
+        else:
+            try:
+                mCodeToken = AuthToken_Token.objects.filter(tokenID_id=userID)
+            except Exception as e:
+                errorInfo = traceback.format_exc()
+                print('Database Query error: %s' % errorInfo)
+
+                self.errormsg = 'Database Query error: %s' % repr(e)
+                return 500
+
+            if mCodeToken:
+                '''
+                if mCodeToken[0].mCode != mCode:
+                    return 313
+                else:
+                    return 309
+                '''
+                pass
+            else:
+                return 309
+
+        if isAToken:
+            self.accessDict = jsonDict
+            exp_at = jsonDict.get('exp_at', None)
+            if exp_at == None:
+                return 305
+            if time.time() - float(exp_at) > 0:
+                return 309
+        else:
+            self.refreshDict = jsonDict
+            exp_rt = jsonDict.get('exp_rt', None)
+            if exp_rt == None:
+                return 305
+            if time.time() - float(exp_rt) > 0:
+                try:
+                    Device_User.objects.filter(userID = userID).update(online = False)
+                except Exception as e:
+                    errorInfo = traceback.format_exc()
+                    print('Database Query error: %s' % errorInfo)
+
+                    self.errormsg = 'Database Query error: %s' % repr(e)
+                    return 500
+
+                return 308
+        try:
+            device_user = Device_User.objects.get(userID=userID)
+            device_user.online=True
+            device_user.save()
+        except Exception as e:
+            pass
+        return 0
+
+    def refresh_AToken(self, Token):
+        """
+
+        :param Token:
+        :return:
+        """
+        print('refresh_AToken')
+        error_code = self.verify_AToken(token = Token, isAToken = False)
+        if error_code == 0:
+            refreshDict = self.refreshDict
+            if refreshDict.get('exp_at', None) != None:
+                exp_at = (datetime.utcnow() + EXPIRATION_DELTA).utctimetuple()
+                refreshDict['exp_at'] = timegm(exp_at)
+                refreshDict.pop('exp_rt')
+                JSON = json.dumps(refreshDict, ensure_ascii=False)
+                hmac_at = hmac.new(JSON.encode('utf-8'), self.iCode.encode('utf-8')).hexdigest()
+                access_token = JSON + '&' + hmac_at
+                b64_at = base64.urlsafe_b64encode(access_token.encode("utf-8"))
+                userID = refreshDict.get('userID', None)
+                tokenDict = {'access_token': b64_at.decode('utf-8')}
+                tokenDict['tokenID_id'] = userID
+                sqlJSON = SQLManager(content=tokenDict)
+                sqlDict = json.loads(sqlJSON)
+                error_code = sqlDict.get('error_code', None)
+                if error_code != None and error_code == 0:
+                    b64_alist = list(b64_at.decode('utf-8'))
+                    b64_alist.insert(12, self.getSalt(strLen=6))
+                    b64_atoken = ''.join(b64_alist)
+                    token = {'access_token': b64_atoken[::-1], }
+                    dictJSON = {'result_code': 0, 'reason': 'Success', 'result': token, 'error_code': 0}
+                    return json.dumps(dictJSON, ensure_ascii=False)
+                else:
+                    return sqlJSON
+        else:
+            return self.errorCodeInfo(error_code)
+
+    def deToken(self,token):
+        try:
+            b64_alist = list(token)
+            b64_alist.insert(12, self.getSalt(strLen=6))
+            b64_atoken = ''.join(b64_alist)
+            res_token = b64_atoken[::-1]
+            code = self.verify_AToken(res_token)
+            if code == 0:
+                return res_token
+            else:
+                return False
+        except Exception as e:
+            return False
+
+    def errorCodeInfo(self, error_code):
+        print(error_code)
+
+        return ResponseFormal(error_code)
+

+ 12 - 7
Service/middleware.py

@@ -1,12 +1,17 @@
 #!/usr/bin/env python
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
-from django.utils.deprecation import MiddlewareMixin
-
 from Ansjer import settings as api_settings
 from Ansjer import settings as api_settings
-from Object.ResponseObject import ResponseObject
 from Service.MiscellService import MiscellService
 from Service.MiscellService import MiscellService
-
-
+from Service.ResponseService import ResponseJSON
+from django.utils.deprecation import MiddlewareMixin
+'''
+try:
+    from django.utils.deprecation import MiddlewareMixin
+except ImportError:  # pragma: no cover
+    # Not required for Django <= 1.9, see:
+    # https://docs.djangoproject.com/en/1.10/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware
+    MiddlewareMixin = object  # pragma: no cover
+'''
 class StatisticsUrlMiddleware(MiddlewareMixin):
 class StatisticsUrlMiddleware(MiddlewareMixin):
     def _https_statistics_to_reverse(self, request):
     def _https_statistics_to_reverse(self, request):
         '''
         '''
@@ -52,8 +57,7 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
             print('process_request', request)
             print('process_request', request)
         result = self._https_statistics_to_reverse(request)
         result = self._https_statistics_to_reverse(request)
         if result == -1:
         if result == -1:
-            response = ResponseObject()
-            return response.json(910)
+            return ResponseJSON(910)
         return None
         return None
 
 
     def process_view(self, request, callback, callback_args, callback_kwargs):
     def process_view(self, request, callback, callback_args, callback_kwargs):
@@ -71,6 +75,7 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
         :return: 必须返回 HttpResponse 对象. 这个 response 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
         :return: 必须返回 HttpResponse 对象. 这个 response 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
             该处理器能修改 response 的内容;一个常见的用途是内容压缩,如 gzip 所请求的 HTML 页面。
             该处理器能修改 response 的内容;一个常见的用途是内容压缩,如 gzip 所请求的 HTML 页面。
         '''
         '''
+
         self._https_statistics_to_close(request)
         self._https_statistics_to_close(request)
         ########记录访问日志
         ########记录访问日志
         if request.path !='/favicon.ico':
         if request.path !='/favicon.ico':

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä