瀏覽代碼

初版调试

chenjunkai 7 年之前
父節點
當前提交
f87e04f66b
共有 75 個文件被更改,包括 2576 次插入3523 次删除
  1. 135 91
      .idea/workspace.xml
  2. 二進制
      Ansjer/__pycache__/config.cpython-36.pyc
  3. 二進制
      Ansjer/__pycache__/settings.cpython-36.pyc
  4. 二進制
      Ansjer/__pycache__/urls.cpython-36.pyc
  5. 43 14
      Ansjer/config.py
  6. 11 17
      Ansjer/settings.py
  7. 9 4
      Ansjer/test/util/encryDownLoad.py
  8. 78 94
      Ansjer/urls.py
  9. 72 111
      Controller/AccessLog.py
  10. 78 75
      Controller/AdminManage.py
  11. 50 54
      Controller/AppInfo.py
  12. 40 85
      Controller/CheckUserData.py
  13. 23 23
      Controller/DeviceLog.py
  14. 44 43
      Controller/DeviceManage.py
  15. 66 67
      Controller/DeviceMeal.py
  16. 71 69
      Controller/EquipmentInfo.py
  17. 170 211
      Controller/EquipmentManager.py
  18. 55 50
      Controller/EquipmentOTA.py
  19. 55 50
      Controller/EquipmentSensor.py
  20. 14 11
      Controller/EquipmentStatus.py
  21. 54 49
      Controller/FeedBackInfo.py
  22. 94 91
      Controller/HlsManage.py
  23. 30 26
      Controller/LogAccess.py
  24. 39 83
      Controller/LogManager.py
  25. 65 65
      Controller/MealManage.py
  26. 247 349
      Controller/OTAEquipment.py
  27. 255 106
      Controller/OauthManage.py
  28. 182 474
      Controller/PermissionManager.py
  29. 149 145
      Controller/StreamMedia.py
  30. 15 12
      Controller/SysManage.py
  31. 18 10
      Controller/Test.py
  32. 145 747
      Controller/UserManger.py
  33. 二進制
      Controller/__pycache__/AccessLog.cpython-36.pyc
  34. 二進制
      Controller/__pycache__/AdminManage.cpython-36.pyc
  35. 二進制
      Controller/__pycache__/AppInfo.cpython-36.pyc
  36. 二進制
      Controller/__pycache__/CheckUserData.cpython-36.pyc
  37. 二進制
      Controller/__pycache__/DeviceLog.cpython-36.pyc
  38. 二進制
      Controller/__pycache__/DeviceManage.cpython-36.pyc
  39. 二進制
      Controller/__pycache__/DeviceMeal.cpython-36.pyc
  40. 二進制
      Controller/__pycache__/EquipmentInfo.cpython-36.pyc
  41. 二進制
      Controller/__pycache__/EquipmentManager.cpython-36.pyc
  42. 二進制
      Controller/__pycache__/EquipmentOTA.cpython-36.pyc
  43. 二進制
      Controller/__pycache__/EquipmentSensor.cpython-36.pyc
  44. 二進制
      Controller/__pycache__/EquipmentStatus.cpython-36.pyc
  45. 二進制
      Controller/__pycache__/FeedBackInfo.cpython-36.pyc
  46. 二進制
      Controller/__pycache__/HlsManage.cpython-36.pyc
  47. 二進制
      Controller/__pycache__/LogAccess.cpython-36.pyc
  48. 二進制
      Controller/__pycache__/LogManager.cpython-36.pyc
  49. 二進制
      Controller/__pycache__/MealManage.cpython-36.pyc
  50. 二進制
      Controller/__pycache__/OTAEquipment.cpython-36.pyc
  51. 二進制
      Controller/__pycache__/OauthManage.cpython-36.pyc
  52. 二進制
      Controller/__pycache__/PermissionManager.cpython-36.pyc
  53. 二進制
      Controller/__pycache__/StreamMedia.cpython-36.pyc
  54. 二進制
      Controller/__pycache__/SysManage.cpython-36.pyc
  55. 二進制
      Controller/__pycache__/Test.cpython-36.pyc
  56. 二進制
      Controller/__pycache__/UserController.cpython-36.pyc
  57. 二進制
      Controller/__pycache__/UserManger.cpython-36.pyc
  58. 二進制
      Controller/__pycache__/shareUserPermission.cpython-36.pyc
  59. 114 121
      Controller/shareUserPermission.py
  60. 3 15
      DB/data.json
  61. 二進制
      Model/__pycache__/models.cpython-36.pyc
  62. 18 70
      Model/models.py
  63. 1 1
      Object/AWS/SesClassObject.py
  64. 二進制
      Object/AWS/__pycache__/SesClassObject.cpython-36.pyc
  65. 51 0
      Object/TokenObject1.py
  66. 31 2
      Service/CommonService.py
  67. 27 32
      Service/MiscellService.py
  68. 13 4
      Service/ModelService.py
  69. 4 40
      Service/TemplateService.py
  70. 二進制
      Service/__pycache__/CommonService.cpython-36.pyc
  71. 二進制
      Service/__pycache__/MiscellService.cpython-36.pyc
  72. 二進制
      Service/__pycache__/ModelService.cpython-36.pyc
  73. 二進制
      Service/__pycache__/TemplateService.cpython-36.pyc
  74. 二進制
      Service/__pycache__/middleware.cpython-36.pyc
  75. 7 12
      Service/middleware.py

+ 135 - 91
.idea/workspace.xml

@@ -1,7 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ChangeListManager">
-    <list default="true" id="f832eaab-acfa-4d84-99b0-aa8cb529c6e4" name="Default" comment="" />
+    <list default="true" id="f832eaab-acfa-4d84-99b0-aa8cb529c6e4" name="Default" comment="">
+      <change afterPath="$PROJECT_DIR$/Object/TokenObject1.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Ansjer/config.py" beforeDir="false" afterPath="$PROJECT_DIR$/Ansjer/config.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Ansjer/settings.py" beforeDir="false" afterPath="$PROJECT_DIR$/Ansjer/settings.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Ansjer/test/util/encryDownLoad.py" beforeDir="false" afterPath="$PROJECT_DIR$/Ansjer/test/util/encryDownLoad.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Ansjer/urls.py" beforeDir="false" afterPath="$PROJECT_DIR$/Ansjer/urls.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/AccessLog.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/AccessLog.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/AdminManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/AdminManage.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/AppInfo.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/AppInfo.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/CheckUserData.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/CheckUserData.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/DeviceLog.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/DeviceLog.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/DeviceManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/DeviceManage.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/DeviceMeal.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/DeviceMeal.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/EquipmentInfo.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/EquipmentInfo.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/EquipmentManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/EquipmentManager.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/EquipmentOTA.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/EquipmentOTA.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/EquipmentSensor.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/EquipmentSensor.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/EquipmentStatus.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/EquipmentStatus.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/FeedBackInfo.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/FeedBackInfo.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/HlsManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/HlsManage.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/LogAccess.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/LogAccess.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/LogManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/LogManager.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/MealManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/MealManage.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/OTAEquipment.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/OTAEquipment.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/OauthManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/OauthManage.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/PermissionManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/PermissionManager.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/StreamMedia.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/StreamMedia.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/SysManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/SysManage.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/Test.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/Test.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/UserManger.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/UserManger.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Controller/shareUserPermission.py" beforeDir="false" afterPath="$PROJECT_DIR$/Controller/shareUserPermission.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/DB/data.json" beforeDir="false" afterPath="$PROJECT_DIR$/DB/data.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Model/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/Model/models.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Object/AWS/SesClassObject.py" beforeDir="false" afterPath="$PROJECT_DIR$/Object/AWS/SesClassObject.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Service/CommonService.py" beforeDir="false" afterPath="$PROJECT_DIR$/Service/CommonService.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Service/MiscellService.py" beforeDir="false" afterPath="$PROJECT_DIR$/Service/MiscellService.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Service/ModelService.py" beforeDir="false" afterPath="$PROJECT_DIR$/Service/ModelService.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Service/TemplateService.py" beforeDir="false" afterPath="$PROJECT_DIR$/Service/TemplateService.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Service/middleware.py" beforeDir="false" afterPath="$PROJECT_DIR$/Service/middleware.py" afterDir="false" />
+    </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="TRACKING_ENABLED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
@@ -14,11 +53,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="UserController.py" pinned="false" current-in-tab="true">
+      <file leaf-file-name="UserController.py" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Controller/UserController.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="320">
-              <caret line="553" column="28" selection-start-line="553" selection-start-column="28" selection-end-line="553" selection-end-column="28" />
+            <state relative-caret-position="232">
+              <caret line="546" column="30" selection-start-line="546" selection-start-column="30" selection-end-line="546" selection-end-column="30" />
               <folding>
                 <element signature="e#311#342#0" expanded="true" />
                 <element signature="e#3045#3912#0" />
@@ -29,41 +68,51 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="CommonService.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Service/CommonService.py">
+      <file leaf-file-name="AccessLog.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Controller/AccessLog.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="198">
-              <caret line="11" lean-forward="true" selection-start-line="11" selection-end-line="11" />
-              <folding>
-                <element signature="e#24#49#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="-282">
+              <caret line="136" selection-start-line="136" selection-end-line="136" />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="config.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Ansjer/config.py">
+      <file leaf-file-name="SyncdbTools.sh" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Ansjer/test/SyncdbTools.sh">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="169">
-              <caret line="32" column="52" lean-forward="true" selection-start-line="32" selection-start-column="52" selection-end-line="32" selection-end-column="52" />
+            <state relative-caret-position="108">
+              <caret line="6" column="26" selection-start-line="6" selection-start-column="26" selection-end-line="6" selection-end-column="26" />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="settings.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Ansjer/settings.py">
+      <file leaf-file-name="CloudfrontSignCookie.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Object/AWS/CloudfrontSignCookie.py">
+          <provider selected="true" editor-type-id="text-editor" />
+        </entry>
+      </file>
+      <file leaf-file-name="CloudfrontSignUrl.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Object/AWS/CloudfrontSignUrl.py">
+          <provider selected="true" editor-type-id="text-editor" />
+        </entry>
+      </file>
+      <file leaf-file-name="CommonService.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/Service/CommonService.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="72">
-              <caret line="4" column="20" lean-forward="true" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
+            <state relative-caret-position="216">
+              <caret line="12" selection-start-line="12" selection-end-line="12" />
+              <folding>
+                <element signature="e#24#49#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="TokenObject.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Object/TokenObject.py">
+      <file leaf-file-name="settings.py" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/Ansjer/settings.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="186">
-              <caret line="44" column="8" selection-start-line="44" selection-start-column="8" selection-end-line="44" selection-end-column="8" />
+            <state relative-caret-position="72">
+              <caret line="4" column="20" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
             </state>
           </provider>
         </entry>
@@ -71,8 +120,8 @@
       <file leaf-file-name="urls.py" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Ansjer/urls.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="252">
-              <caret line="12" column="26" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" />
+            <state relative-caret-position="270">
+              <caret line="15" column="7" lean-forward="true" selection-start-line="15" selection-start-column="7" selection-end-line="15" selection-end-column="7" />
               <folding>
                 <element signature="e#0#32#0" expanded="true" />
               </folding>
@@ -92,24 +141,6 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="SesClassObject.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Object/AWS/SesClassObject.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state>
-              <caret column="89" selection-start-column="89" selection-end-column="89" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="models.py" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Model/models.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="440">
-              <caret line="161" column="13" selection-start-line="161" selection-start-column="4" selection-end-line="161" selection-end-column="13" />
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file leaf-file-name="RedisObject.py" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/Object/RedisObject.py">
           <provider selected="true" editor-type-id="text-editor">
@@ -144,6 +175,9 @@
       <replace>request_dict</replace>
     </replaceStrings>
   </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
@@ -158,8 +192,8 @@
         <option value="$PROJECT_DIR$/Ansjer/urls.py" />
         <option value="$PROJECT_DIR$/Object/RedisObject.py" />
         <option value="$PROJECT_DIR$/Service/CommonService.py" />
-        <option value="$PROJECT_DIR$/Ansjer/settings.py" />
         <option value="$PROJECT_DIR$/Controller/UserController.py" />
+        <option value="$PROJECT_DIR$/Ansjer/settings.py" />
       </list>
     </option>
   </component>
@@ -177,6 +211,7 @@
     <option name="width" value="814" />
     <option name="height" value="877" />
   </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
   <component name="ProjectView">
     <navigator proportions="" version="1">
       <foldersAlwaysOnTop value="true" />
@@ -199,14 +234,13 @@
               <item name="AnsjerFormal" type="b2602c69:ProjectViewProjectNode" />
               <item name="AnsjerFormal" type="462c0819:PsiDirectoryNode" />
               <item name="Ansjer" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
+              <item name="file" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="AnsjerFormal" type="b2602c69:ProjectViewProjectNode" />
               <item name="AnsjerFormal" type="462c0819:PsiDirectoryNode" />
               <item name="Ansjer" type="462c0819:PsiDirectoryNode" />
               <item name="test" type="462c0819:PsiDirectoryNode" />
-              <item name="util" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="AnsjerFormal" type="b2602c69:ProjectViewProjectNode" />
@@ -342,14 +376,15 @@
       <window_info anchor="bottom" id="TODO" order="7" sideWeight="0.49485862" weight="0.32440946" />
       <window_info anchor="bottom" id="Event Log" order="9" sideWeight="0.4730077" side_tool="true" weight="0.1849315" />
       <window_info anchor="bottom" id="Database Changes" order="16" show_stripe_button="false" />
-      <window_info anchor="bottom" id="Version Control" order="13" show_stripe_button="false" sideWeight="0.49485862" weight="0.2109589" />
+      <window_info anchor="bottom" id="Version Control" order="13" sideWeight="0.49485862" weight="0.2109589" />
       <window_info anchor="bottom" id="Python Console" order="12" sideWeight="0.49485862" weight="0.16692914" />
-      <window_info anchor="bottom" id="Run" order="3" sideWeight="0.52699226" visible="true" weight="0.1630137" />
+      <window_info anchor="bottom" id="Run" order="3" sideWeight="0.52699226" visible="true" weight="0.16186556" />
       <window_info anchor="right" id="Mongo Explorer" order="8" />
       <window_info anchor="bottom" id="Terminal" order="11" sideWeight="0.55205655" weight="0.5284327" />
       <window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.493007" visible="true" weight="0.20951156" />
       <window_info anchor="bottom" id="Docker" order="14" show_stripe_button="false" />
       <window_info anchor="right" id="Database" order="7" weight="0.2689243" />
+      <window_info anchor="bottom" id="Find" order="2" weight="0.32784638" />
       <window_info anchor="right" id="SciView" order="6" weight="0.32969153" />
       <window_info anchor="bottom" id="Structure" order="8" sideWeight="0.39138818" side_tool="true" weight="0.2" />
       <window_info id="Favorites" order="1" sideWeight="0.506993" side_tool="true" weight="0.17771883" />
@@ -360,7 +395,6 @@
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
       <window_info anchor="right" id="R Graphics" order="4" />
       <window_info anchor="right" id="R Packages" order="3" />
-      <window_info anchor="bottom" id="Find" order="2" weight="0.32891247" />
       <window_info anchor="bottom" id="TeamCity" order="10" sideWeight="0.4969088" weight="0.32911393" />
       <window_info anchor="bottom" id="Inspection" order="6" weight="0.4" />
       <window_info anchor="bottom" id="Cvs" order="5" weight="0.25" />
@@ -411,23 +445,6 @@
     </breakpoint-manager>
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/Controller/OTAEquipment.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1494">
-          <caret line="83" column="31" selection-start-line="83" selection-start-column="31" selection-end-line="83" selection-end-column="31" />
-          <folding>
-            <element signature="e#0#22#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/Object/TokenObject.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="396">
-          <caret line="24" column="22" selection-start-line="24" selection-start-column="22" selection-end-line="24" selection-end-column="22" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/Controller/PermissionManager.py">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
@@ -650,9 +667,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Controller/AccessLog.py">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
     <entry file="file://$PROJECT_DIR$/Controller/DeviceManage.py">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
@@ -736,32 +750,22 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/Ansjer/config.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="169">
-          <caret line="32" column="52" lean-forward="true" selection-start-line="32" selection-start-column="52" selection-end-line="32" selection-end-column="52" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/Ansjer/urls.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="252">
-          <caret line="12" column="26" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" />
-          <folding>
-            <element signature="e#0#32#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="259">
+          <caret line="36" column="23" selection-start-line="36" selection-start-column="23" selection-end-line="36" selection-end-column="23" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/Object/AWS/SesClassObject.py">
       <provider selected="true" editor-type-id="text-editor">
         <state>
-          <caret column="89" selection-start-column="89" selection-end-column="89" />
+          <caret column="27" selection-start-column="27" selection-end-column="27" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/Model/models.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="440">
-          <caret line="161" column="13" selection-start-line="161" selection-start-column="4" selection-end-line="161" selection-end-column="13" />
+        <state relative-caret-position="566">
+          <caret line="158" column="13" selection-start-line="158" selection-start-column="13" selection-end-line="158" selection-end-column="13" />
         </state>
       </provider>
     </entry>
@@ -784,25 +788,31 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/Service/CommonService.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="198">
-          <caret line="11" lean-forward="true" selection-start-line="11" selection-end-line="11" />
+        <state relative-caret-position="216">
+          <caret line="12" selection-start-line="12" selection-end-line="12" />
           <folding>
             <element signature="e#24#49#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Ansjer/settings.py">
+    <entry file="file://$PROJECT_DIR$/Ansjer/test/cloudfront_sign_url.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="72">
-          <caret line="4" column="20" lean-forward="true" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
+        <state relative-caret-position="396">
+          <caret line="22" column="69" lean-forward="true" selection-start-line="22" selection-start-column="69" selection-end-line="22" selection-end-column="69" />
+          <folding>
+            <element signature="e#0#15#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/Object/AWS/CloudfrontSignUrl.py">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
     <entry file="file://$PROJECT_DIR$/Controller/UserController.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="320">
-          <caret line="553" column="28" selection-start-line="553" selection-start-column="28" selection-end-line="553" selection-end-column="28" />
+        <state relative-caret-position="232">
+          <caret line="546" column="30" selection-start-line="546" selection-start-column="30" selection-end-line="546" selection-end-column="30" />
           <folding>
             <element signature="e#311#342#0" expanded="true" />
             <element signature="e#3045#3912#0" />
@@ -812,5 +822,39 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/Controller/AccessLog.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-282">
+          <caret line="136" selection-start-line="136" selection-end-line="136" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Ansjer/test/SyncdbTools.sh">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="108">
+          <caret line="6" column="26" selection-start-line="6" selection-start-column="26" selection-end-line="6" selection-end-column="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Object/AWS/CloudfrontSignCookie.py">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Ansjer/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="15" column="7" lean-forward="true" selection-start-line="15" selection-start-column="7" selection-end-line="15" selection-end-column="7" />
+          <folding>
+            <element signature="e#0#32#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Ansjer/settings.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="72">
+          <caret line="4" column="20" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
+        </state>
+      </provider>
+    </entry>
   </component>
 </project>

二進制
Ansjer/__pycache__/config.cpython-36.pyc


二進制
Ansjer/__pycache__/settings.cpython-36.pyc


二進制
Ansjer/__pycache__/urls.cpython-36.pyc


+ 43 - 14
Ansjer/config.py

@@ -12,26 +12,55 @@
 @Contact: chanjunkai@163.com
 """
 #主要静态变量配置文件
-import os
 import datetime
-from var_dump import var_dump
+from Ansjer.settings import SERVER_TYPE
+
 
-# 根目录
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 # 发送邮件邮箱
 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_SECRET = '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'
 AWS_ACCESS_REGION = 'us-east-1'
 AWS_BUCKET = 'ansjertest'
 # 设定离线时间为5分钟
-OFF_LINE_TIME_DELTA = 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/'

+ 11 - 17
Ansjer/settings.py

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

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

@@ -55,12 +55,17 @@ def get_timestamp10():
     """获取当前时间长度为10位长度的时间戳"""
     return int(time.time())
 
-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'  # 下载文件
+
+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(url+path+'?' + 'st=' + str(md5) + '&e=' + str(expire))
+
+# 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))

+ 78 - 94
Ansjer/urls.py

@@ -1,140 +1,124 @@
 from django.contrib import admin
 from django.conf.urls import url
-from django.urls import path
-# from django.views.generic.base import RedirectView
+from django.urls import path,re_path
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
-    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,BatchProcessingDatabase,shareUserPermission,UserManger, CheckUserData
+    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,shareUserPermission,UserManger, CheckUserData, OauthManage,UserController
 
 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'^favicon.ico$', RedirectView.as_view(url=r'favicon.ico', permanent=True)),
     url(r'^favicon.ico$', UserManger.success, name=u'favicon.ico'),
-    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'^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'^response/success$', UserManger.success, name=u'success_info'),
+    url(r'^response/success$', UserManger.success),
     # http://13.56.215.252:82/equipment/queryUserEquipment?token=test
-    url(r'^equipment/queryUserEquipment$', EquipmentManager.queryUserEquipmentInterface, name='query_User_Equipment'),
+    url(r'^equipment/queryUserEquipment$', EquipmentManager.queryUserEquipmentInterface),
     url(r'^equipment/addNewUserEquipment$', EquipmentManager.addNewUserEquipmentInterface,
         name='add_New_User_Equipment'),
-    url(r'^equipment/delUserEquipment$', EquipmentManager.delUserEquipmentInterface, name='del_User_Equipment'),
+    url(r'^equipment/delUserEquipment$', EquipmentManager.delUserEquipmentInterface),
     url(r'^equipment/modifyUserEquipment$', EquipmentManager.modifyUserEquipmentInterface,
         name='modify_User_Equipment'),
     url(r'^equipment/showAllUserEquipment$', EquipmentManager.showAllUserEquipmentInterface,
         name='show_All_User_Equipment'),
-    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'^equipment/findEquipmentInfo$', EquipmentManager.findEquipmentInfoInterface),
 
-    url(r'^toekn/refreshToken$', UserManger.refreshTokenView.as_view(), name=u'refresh_token'),
+    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'^import/batchAddEquipment$', BatchProcessingDatabase.batchAddEquipmentView.as_view(),
-        name=u'batch_Add_Equipment'),
+    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'^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'^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'^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'^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'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view(), name=u'equiment_sensor'),
+    url(r'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view()),
     # 设备推送信息
-    url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view(), name=u'equiment_info'),
+    url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view()),
     # 管理员专属view
-    url(r'^adminManage/manage', AdminManage.AdminManage.as_view(), name=u'adminManage'),
+    url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),
     # OTA重构类
-    url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view(), name=u'equipmentOTA'),
+    url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),
     # 用户反馈信息
-    url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view(), name=u'feedbackInfoView'),
+    url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view()),
     # app版本信息
-    url(r'^appInfo', AppInfo.AppInfo.as_view(), name=u'AppInfo'),
+    url(r'^appInfo', AppInfo.AppInfo.as_view()),
     # 访问日志new
-    url(r'^accesslog', AccessLog.AccessLog.as_view(), name=u'AccessLog'),
-
+    url(r'^accesslog', AccessLog.AccessLog.as_view()),
     # 套餐信息管理
-    url(r'^meal/manage', MealManage.MealManage.as_view(), name=u'MealManage'),
+    url(r'^meal/manage', MealManage.MealManage.as_view()),
     # 设备套餐绑定
-    url(r'^device/meal$', DeviceMeal.DeviceMeal.as_view(), name=u'DeviceMeal'),
+    url(r'^device/meal$', DeviceMeal.DeviceMeal.as_view()),
     # hls put_object签名url
-    url(r'^HlsManage$', HlsManage.HlsManage.as_view(), name=u'get_sign_put_object'),
+    url(r'^HlsManage$', HlsManage.HlsManage.as_view()),
     # 设备管理
-    url(r'^device/manage$', DeviceManage.DeviceManage.as_view(), name=u'device_manage'),
+    url(r'^device/manage$', DeviceManage.DeviceManage.as_view()),
     # 设备在线
-    url(r'^device/online$', EquipmentStatus.EquipmentOnline, name=u'device_online'),
+    url(r'^device/online$', EquipmentStatus.EquipmentOnline),
     # 设备离线
-    url(r'^device/offline$', EquipmentStatus.EquipmentOffline, name=u'device_offline'),
+    url(r'^device/offline$', EquipmentStatus.EquipmentOffline),
     # 设备离线
-    url(r'^device/updateIP$', EquipmentStatus.updateIP, name=u'device_updateIP'),
+    url(r'^device/updateIP$', EquipmentStatus.updateIP),
     # 系统ctr
-    url(r'^sys/updateLog', SysManage.updateLog, name=u'sys_update_log'),
+    url(r'^sys/updateLog', SysManage.updateLog),
     # 设备日志
-    url(r'^devices/(\w+)/logs$', DeviceLog.DeviceLog, name=u'device_log'),
-    url(r'^devices/(\w+)$', DeviceManage.Devices, name=u'device_log'),
+    url(r'^devices/(\w+)/logs$', DeviceLog.DeviceLog),
+    url(r'^devices/(\w+)$', DeviceManage.Devices),
     # 访问日志 mongodb版
-    url(r'^LogAccess$', LogAccess.LogAccess, name=u'device_log'),
+    url(r'^LogAccess$', LogAccess.LogAccess),
     # 上传操作文档
-    url(r'^HelpCHM/upload$', LogManager.upload_help_chm, name=u'upload_help'),
-    url(r'^admin/userIDs$', AdminManage.getUserIds, name=u'getUserIds'),
-
-
-
-
+    url(r'^HelpCHM/upload$', LogManager.upload_help_chm),
+    url(r'^admin/userIDs$', AdminManage.getUserIds),
     # 统计访问日志路径
     path('access/staticPath/', AccessLog.statisticsPath),
     # 多条件搜索用户信息admin
     path('accounts', AdminManage.search_user_by_content),
     # 测试专用api
-    path('Test', Test.Test.as_view(), name=u'Test'),
+    path('Test', Test.Test.as_view()),
     # 路由加参数参考
     # url(r'^(?P<path>.*)/(?P<UID>.*)/lls$', Test.Test.as_view(), name=u'gg'),
-    # path('oauth/login',OauthManage.OauthManage.as_view()),
-    url(r'^(?P<path>.*)', LogManager.errorPath, name=u'error_path'),
+    # 认证服务器登陆成功,访问一次关联,并获取用户信息
+    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),
 ]

+ 72 - 111
Controller/AccessLog.py

@@ -1,23 +1,24 @@
-from django.views.generic.base import View
+import datetime
+import simplejson as json
+
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
-from Service.TokenManager import JSONTokenManager
+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.ModelService import ModelService
 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=truncateByAdmin&token=test
 http://192.168.136.40:8077/accesslog?operation=searchByAdmin&token=test&page=1&line=10&content={"status":20}&order=-id
-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
+
+http://192.168.136.40:8077/accesslog/staticPath/?token=stest
 '''
 
 
@@ -26,42 +27,39 @@ class AccessLog(View):
     def dispatch(self, *args, **kwargs):
         return super(AccessLog, self).dispatch(*args, **kwargs)
 
-    def get(self, request, *args, **kwargs):
+    def get(self, request):
+        response = ResponseObject()
         request.encoding = 'utf-8'
-        return self.validation(request_dict=request.GET)
+        return self.validation(request.GET, response)
 
-    def post(self, request, *args, **kwargs):
+    def post(self, request):
+        response = ResponseObject()
         request.encoding = 'utf-8'
-        return self.validation(request_dict=request.POST)
+        return self.validation(request.POST, response)
 
-    def validation(self, request_dict, *args, **kwargs):
+    def validation(self, request_dict, response):
         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)
+            tko = TokenObject(token)
+            tko.valid()
+            response.lang = tko.lang
+            if tko.code == 0:
+                userID = tko.userID()
                 operation = request_dict.get('operation', None)
-                param_flag = CommonService.get_param_flag(data=[userID, operation])
-                if param_flag is True:
+                if userID is not None and operation is not None:
                     if operation == 'queryByAdmin':
-                        return self.query_by_admin(request_dict=request_dict, userID=userID)
+                        return self.query_by_admin(request_dict, userID, response)
                     elif operation == 'searchByAdmin':
-                        return self.search_by_admin(request_dict=request_dict, userID=userID)
+                        return self.search_by_admin(request_dict, userID, response)
                     elif operation == 'truncateByAdmin':
-                        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)
+                        return self.truncate_by_admin(userID, response)
+                return response.json(444, 'token,operation')
             else:
-                return HttpResponse(tokenManager.errorCodeInfo(error_code))
+                return response.json(tko.code)
         else:
-            return ResponseJSON(311)
+            return response.json(311)
 
-    def query_by_admin(self, request_dict, userID):
+    def query_by_admin(self, request_dict, userID, response):
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
         order = request_dict.get('order', '-id')
@@ -75,32 +73,33 @@ class AccessLog(View):
                 if access_log_queryset.exists():
                     count = access_log_queryset.count()
                     res = access_log_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.query_set_to_dict(res)
+                    send_json = CommonService.qs_to_dict(res)
                     send_json['count'] = count
-                    return ResponseJSON(0,send_json)
-                return ResponseJSON(0, {'datas': [], 'count': 0})
+                    return response.json(0, send_json)
+                return response.json(0, {'datas': [], 'count': 0})
             else:
-                return ResponseJSON(404)
+                return response.json(404)
         else:
-            return ResponseJSON(444)
+            return response.json(444)
 
-    def truncate_by_admin(self, userID):
+    # 清空日志表
+    def truncate_by_admin(self, userID, response, ):
         check_perm = ModelService.check_permission(userID=userID, permID=10)
         if check_perm is True:
             from django.db import connection
             cursor = connection.cursor()
             cursor.execute("TRUNCATE TABLE `access_log`")
-        return ResponseJSON(0)
+        return response.json(0)
 
-    def search_by_admin(self, request_dict, userID):
+    # 搜索日志(多条件)
+    def search_by_admin(self, request_dict, userID, response):
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
         order = request_dict.get('order', '-id')
         content = request_dict.get('content', None)
         starttime = request_dict.get('starttime', None)
         endtime = request_dict.get('endtime', None)
-        param_flag = CommonService.get_param_flag(data=[page, line])
-        if param_flag is True:
+        if page is not None and line is not None:
             check_perm = ModelService.check_permission(userID=userID, permID=20)
             if check_perm is True:
                 try:
@@ -108,13 +107,12 @@ class AccessLog(View):
                     search_kwargs = CommonService.get_kwargs(data=content)
                     queryset = Access_Log.objects.filter(**search_kwargs).order_by(order)
                 except Exception as e:
-                    return ResponseJSON(444)
+                    return response.json(444)
                 if starttime is not None and starttime != '' and endtime is not None and endtime != '':
                     startt = datetime.datetime.fromtimestamp(int(starttime))
                     starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
                     endt = datetime.datetime.fromtimestamp(int(endtime))
                     endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
-                    # var_dump(starttime,endtime)
                     queryset = queryset.filter(time__range=(starttime, endtime))
                 elif starttime is not None and starttime != '':
                     startt = datetime.datetime.fromtimestamp(int(starttime))
@@ -127,62 +125,17 @@ class AccessLog(View):
                 if queryset.exists():
                     count = queryset.count()
                     res = queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.query_set_to_dict(res)
+                    send_json = CommonService.qs_to_dict(res)
                     send_json['count'] = count
-                    return ResponseJSON(0,send_json)
-                return ResponseJSON(0,{'datas': [], 'count': 0})
+                    return response.json(0, send_json)
+                return response.json(0, {'datas': [], 'count': 0})
             else:
-                return ResponseJSON(404)
+                return response.json(404)
         else:
-            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)
+            return response.json(444, 'page,line')
 
- # 获取所有用户登录的地区
-    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)
 
-@csrf_exempt
+@ratelimit(key='ip', rate='3/m')
 def statisticsPath(request):
     request.encoding = 'utf-8'
     if request.method == 'GET':
@@ -190,20 +143,28 @@ def statisticsPath(request):
     if request.method == 'POST':
         request_dict = request.POST
     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:
-        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})
+        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)
         else:
-            return HttpResponse(tokenManager.errorCodeInfo(error_code))
+            return response.json(tko.code)
     else:
-        return ResponseJSON(311)
-
+        return response.json(444, 'token')

+ 78 - 75
Controller/AdminManage.py

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

+ 50 - 54
Controller/AppInfo.py

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

+ 40 - 85
Controller/CheckUserData.py

@@ -4,18 +4,21 @@ from random import Random # 用于生成随机码
 from wsgiref.util import FileWrapper
 from django.utils.timezone import utc
 from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import TemplateView, View
+from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from django.contrib.auth.hashers import make_password
-from django.shortcuts import HttpResponseRedirect
 from itsdangerous import URLSafeTimedSerializer as utsr # itsdangerous序列化
 import re, base64, json, traceback, random, string
 from qcloudsms_py.httpclient import HTTPError
 from qcloudsms_py import SmsSingleSender
 from qcloudsms_py import SmsVoiceVerifyCodeSender, SmsVoicePromptSender
-from Ansjer.settings import *
-from Model.models import Email_Captcha, Device_User, Auth_Captcha
-from Service.ResponseService import *
+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
+
 
 #生成随机字符串
 def RandomStr(randomlength = 8, number = False):
@@ -34,22 +37,6 @@ def RandomStr(randomlength = 8, number = False):
 
     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):
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
@@ -73,11 +60,12 @@ class MobiletoResetPwdView(TemplateView):
         return self.ValidationError(userName, newPwd, authCode)
 
     def ValidationError(self, userName, newPwd, authCode):
+        response = ResponseObject()
         if userName != None and authCode != None and newPwd != None:
-            return self.MobiletoResetPwd(userName, authCode, newPwd)
+            return self.MobiletoResetPwd(userName, authCode, newPwd, response)
         else:
-            return ResponseJSON(800)
-    def MobiletoResetPwd(self, userName, authCode, newPwd):
+            return response.json(800)
+    def MobiletoResetPwd(self, userName, authCode, newPwd,response):
         UserValid = Device_User.objects.filter(username = userName).order_by('-data_joined')
         if UserValid:
             Users = Auth_Captcha.objects.filter(username = userName).order_by('-sendtime')
@@ -91,35 +79,17 @@ class MobiletoResetPwdView(TemplateView):
                         if timeValid < 300:
                             is_flag = UserValid.update(password=make_password(newPwd))
                             if is_flag:
-                                return ResponseJSON(0)
+                                return (0)
                             else:
-                                return ResponseJSON(405)
+                                return response.json(405)
                         else:
-                            return ResponseJSON(120)
+                            return response.json(120)
         else:
-            return ResponseJSON(102)
+            return response.json(102)
 
 def date_handler(obj):
-    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)
+    return obj.isoformat()
 
-        response = HttpResponseRedirect('/login/')
-        return response
 
 class TokenLink:
     '''
@@ -183,10 +153,11 @@ class ModifyPwdView(TemplateView):
         return self.ValidationError(userEmail, oldPwd, newPwd)
 
     def ValidationError(self, userEmail, oldPwd, newPwd):
+        response = ResponseObject()
         dataValid = DataValid()
         if dataValid.password_validate(newPwd):
             if oldPwd != newPwd:
-                return ResponseJSON(118)
+                return response.json(118)
             try:
                 User = Device_User.objects.get(userEmail = userEmail)
                 User.userPwd = make_password(newPwd)
@@ -194,11 +165,12 @@ class ModifyPwdView(TemplateView):
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 print('更新密码到数据库: %s' % errorInfo)
-                return ResponseJSON(501,{'msg':repr(e)})
+                return response.json(501,{'msg':repr(e)})
             else:
-                return ResponseJSON(0)
+                return response.json(0)
         else:
-            return ResponseJSON(109)
+            return response.json(109)
+
 
 class DataValid:
 
@@ -238,11 +210,12 @@ class DataValid:
             return False
 
 def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839):
-    appid = SDK_AppID
-    appkey = App_Key
+    appid = TX_PHONE_APP_ID
+    appkey = TX_PHONE_APP_KEY
 
     print(phoneNumbers, msg, sendModel, template_id)
     ssender = SmsSingleSender(appid, appkey)
+    response = ResponseObject()
     try:
         if sendType == 'register':
             result = ssender.send(0, "86", phoneNumbers, u"{authCode}为您的注册验证码,请于2分钟内填写。"
@@ -253,12 +226,12 @@ def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839)
     except HTTPError as e:
         errorInfo = traceback.format_exc()
         print('发送手机验证码出现网络错误: %s' % errorInfo)
-        return ResponseFormal(1022,{'msg':repr(e)})
+        return response.json(1022,{'msg':repr(e)})
 
     except Exception as e:
         errorInfo = traceback.format_exc()
         print('发送手机短信验证码错误: %s' % errorInfo)
-        return ResponseFormal(1021)
+        return response.json(1021)
     else:
         resultCode = result.get('result', None)
         if resultCode == 0:
@@ -270,13 +243,14 @@ def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839)
 
 class QCloudSms(object):
     def __init__(self, nationcode, msg, template_id):
-        self.appid = SDK_AppID
-        self.appkey = App_Key
+        self.appid = TX_PHONE_APP_ID
+        self.appkey = TX_PHONE_APP_KEY
         self.msg = msg # 验证码msg
         self.nationcode = nationcode # 国家码
         self.template_id = template_id # 模板ID
 
     def sms(self, mobiles, model, type = 'register'):
+        response = ResponseObject()
         ssender = SmsSingleSender(self.appid, self.appkey)
         try:
             if type == 'register':
@@ -288,11 +262,11 @@ class QCloudSms(object):
         except HTTPError as e:
             errorInfo = traceback.format_exc()
             print('发送手机短信验证码出现网络错误: %s' % errorInfo)
-            return ResponseFormal(1022,repr(e))
+            return response.json(1022,repr(e))
         except Exception as e:
             errorInfo = traceback.format_exc()
             print('发送手机验证码错误: %s' % errorInfo)
-            return ResponseFormal(1021,repr(e))
+            return response.formal(1021,repr(e))
         else:
             resultCode = result.get('result', None)
             if resultCode == 0:
@@ -304,6 +278,7 @@ class QCloudSms(object):
 
     def voice(self, mobiles, model, type = 'register'):
         # 语音验证码请求
+        response = ResponseObject()
         vvcsender = SmsVoiceVerifyCodeSender(appid = self.appid, appkey = self.appkey)
         try:
             result = vvcsender.send(nation_code=self.nationcode, phone_number = \
@@ -311,11 +286,11 @@ class QCloudSms(object):
         except HTTPError as e:
             errorInfo = traceback.format_exc()
             print('发送手机验证码出现网络错误: %s' % errorInfo)
-            return ResponseFormal(1022,repr(e))
+            return response.formal(1022,repr(e))
         except Exception as e:
             errorInfo = traceback.format_exc()
             print('发送手机语音验证码错误: %s' % errorInfo)
-            return ResponseFormal(1023,repr(e))
+            return response.formal(1023,repr(e))
         else:
             resultCode = result.get('result', None)
             if resultCode == 0:
@@ -348,25 +323,6 @@ class QCloudSms(object):
                 errorJSON = json.dumps(result, ensure_ascii=False)
                 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
 def download_file(request, Upgradename, *callback_args, **callback_kwargs):
     """
@@ -384,14 +340,13 @@ def download_file(request, Upgradename, *callback_args, **callback_kwargs):
     # 打印dict类型的不定长参数 args
     for key in callback_kwargs:
         print("dictargs:" + key + ":" + bytes(callback_kwargs[key]))
-    #received_json_data = json.loads(request.body)
     print(request.body)
     file_name = os.path.join(BASE_DIR, "static/Upgrade/DVR/").replace('\\', '/') + Upgradename
-
+    response = ResponseObject()
     if os.path.isfile(file_name):
         try:
             print(file_name)
-            JSON = ResponseFormal(0)
+            JSON = response.formal(0)
             wrapper = FileWrapper(open(file_name, 'rb'))
             response = HttpResponse(wrapper, content_type="application/octet-stream")
             response['Content-Length'] = os.path.getsize(file_name)
@@ -399,12 +354,12 @@ def download_file(request, Upgradename, *callback_args, **callback_kwargs):
             response['Content-Error'] = JSON
             return response
         except Exception as e:
-            errorJSON = ResponseFormal(10,'Wrong reason:' + repr(e))
+            errorJSON = response.formal(10,'Wrong reason:' + repr(e))
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response['Content-Error'] = errorJSON
             return response
     else:
-        errorJSON = ResponseFormal(907)
+        errorJSON = response.formal(907)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         return response

+ 23 - 23
Controller/DeviceLog.py

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

+ 44 - 43
Controller/DeviceManage.py

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

+ 66 - 67
Controller/DeviceMeal.py

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

+ 71 - 69
Controller/EquipmentInfo.py

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

+ 170 - 211
Controller/EquipmentManager.py

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

+ 55 - 50
Controller/EquipmentOTA.py

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

+ 55 - 50
Controller/EquipmentSensor.py

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

+ 14 - 11
Controller/EquipmentStatus.py

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

+ 54 - 49
Controller/FeedBackInfo.py

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

+ 94 - 91
Controller/HlsManage.py

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

+ 30 - 26
Controller/LogAccess.py

@@ -11,11 +11,12 @@
 @file: LogAccess.py
 @Contact: chanjunkai@163.com
 """
-from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Object.mongodb import mongodb
 from django.views.decorators.csrf import csrf_exempt
-from Service.ResponseService import *
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+
 
 @csrf_exempt
 def LogAccess(request):
@@ -29,32 +30,35 @@ def LogAccess(request):
         starttime = request.GET.get('starttime', None)
         # 结束时间
         endtime = request.GET.get('endtime', None)
+        response = ResponseObject()
         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, 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)
+            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)
                     else:
-                        return ResponseJSON(404)
+                        return response.json(444,'page,line')
                 else:
-                    return ResponseJSON(444)
+                    return response.json(310)
             else:
-                return HttpResponse(tokenManager.errorCodeInfo(error_code))
+                return response.json(tko.code)
         else:
-            return ResponseJSON(311)
+            return response.json(311)

+ 39 - 83
Controller/LogManager.py

@@ -4,10 +4,10 @@ from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 import Ansjer.settings as api_settings
 from Service.ModelService import ModelService
-import time
-from Service.ResponseService import *
-from Ansjer.config import *
-from Service.TokenManager import JSONTokenManager
+import time,os
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Ansjer.settings import BASE_DIR
 
 
 def StatisticsData(request):
@@ -113,6 +113,7 @@ def StatisticsData(request):
     print('HTTP_USER_AGENT', request.META.get('HTTP_USER_AGENT', 'unknown'))
     print('HTTP_AUTHORIZATION', request.META.get('HTTP_AUTHORIZATION', b'unknown'))
 
+
 class HelpView(TemplateView):
     '''
     帮助说明,包括版本信息,帮助文件等
@@ -133,48 +134,42 @@ class HelpView(TemplateView):
         return self.getRequestInfo(reInfoType,token)
 
     def getRequestInfo(self, reInfoType,token):
+        response = ResponseObject()
         if reInfoType is not None and token is not None:
-            tokenManager = JSONTokenManager()
-            error_code = tokenManager.verify_AToken(token)
-            if error_code == 0:
-                userID = tokenManager.accessDict.get('userID', None)
+            tko = TokenObject(token)
+            tko.valid()
+            response.lang = tko.lang
+            if tko.code == 0:
+                userID = tko.userID()
                 own_permission = ModelService.check_permission(userID=userID, permID=30)
                 if own_permission is True:
-                    vInfo = versionInfo()
                     if reInfoType == 'version':
-                        response = HttpResponse(vInfo.readInfo())
-                        return response
+                        return self.readInfo(response)
                     elif reInfoType == 'requirements':
-                        response = HttpResponse(vInfo.requirementsInfo())
-                        return response
+                        return self.requirementsInfo(response)
                     elif reInfoType == 'helpfile':
-                        response = vInfo.getHelpCHM()
-                        return response
+                        return self.getHelpCHM(response)
                     else:
-                        return ResponseJSON(801)
+                        return response.json(801)
                 else:
-                    return ResponseJSON(404)
+                    return response.json(404)
             else:
-                return HttpResponse(tokenManager.errorCodeInfo(error_code))
+                return response.json(tko.code)
         else:
-            return ResponseJSON(800)
-
-class versionInfo:
-    def __init__(self):
-        return
+            return response.json(800,'reInfoType','reInfoType')
 
-    def readInfo(self):
+    def readInfo(self,response):
         verfilePath = '/'.join((api_settings.BASE_DIR, 'static/Help/')).replace('\\', '/') + 'version.txt'
         if os.path.isfile(verfilePath):
             file = open(verfilePath, encoding='utf-8')
             versionStr = ''
             for line in file:
                 versionStr += line
-            return ResponseFormal(0,{'versioninfo':versionStr})
+            return response.json(0,{'versioninfo':versionStr})
         else:
-            return ResponseFormal(701)
+            return response.json(701)
 
-    def requirementsInfo(self):
+    def requirementsInfo(self,response):
         requirementsPath = '/'.join((api_settings.BASE_DIR, 'requirements.txt')).replace('\\', '/')
         print(requirementsPath)
         if os.path.isfile(requirementsPath):
@@ -182,68 +177,28 @@ class versionInfo:
             requirementsStr = ''
             for line in file:
                 requirementsStr += line
-            return ResponseFormal(0,{'requirementsinfo': requirementsStr})
+            return response.json(0,{'requirementsinfo': requirementsStr})
         else:
-            return ResponseFormal(701)
+            return response.json(701)
 
-    def getHelpCHM(self):
+    def getHelpCHM(self,response):
         verHelpCHM = '/'.join((api_settings.BASE_DIR, 'static/Help/')).replace('\\', '/') + 'AnsjerHelp.CHM'
         print(verHelpCHM)
         if os.path.isfile(verHelpCHM):
             return OTAEquipment.downloadUrl(fileType='CHM', fileCode='', fileVersion='', fileName=verHelpCHM)
         else:
-            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)
+            return response.json(code=701)
 
-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):
     token = request.POST.get('token', None)
+    response = ResponseObject()
     if token is not None:
-        tokenManager = JSONTokenManager()
-        error_code = tokenManager.verify_AToken(token)
-        if error_code == 0:
-            userID = tokenManager.accessDict.get('userID', None)
+        tko = TokenObject(token)
+        tko.valid()
+        response.lang = tko.lang
+        if tko.code == 0:
+            userID = tko.userID()
             own_permission = ModelService.check_permission(userID=userID, permID=30)
             if own_permission is True:
                 f = request.FILES.get('file', None)
@@ -256,15 +211,16 @@ def upload_help_chm(request):
                             destination.write(chunk)
                 except Exception as e:
                     print('error:' + repr(e))
-                    return ResponseJSON(700,{'details': repr(e)})
-                return ResponseJSON(0)
+                    return response.json(700,{'details': repr(e)})
+                return response.json(0)
             else:
-                return ResponseJSON(404)
+                return response.json(404)
         else:
-            return HttpResponse(tokenManager.errorCodeInfo(error_code))
+            return response.json(tko.code)
     else:
-        return ResponseJSON(311)
+        return response.json(311)
 
 @csrf_exempt
 def errorPath(request,**kwargs):
-    return ResponseFormal(414)
+    response = ResponseObject()
+    return response.json(414)

+ 65 - 65
Controller/MealManage.py

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

+ 247 - 349
Controller/OTAEquipment.py

@@ -1,46 +1,31 @@
 from zlib import crc32
-from Ansjer.settings import *
 from django.core import serializers
 from wsgiref.util import FileWrapper
 import traceback, hashlib
-from Ansjer.settings import SERVER_DOMAIN
+from Ansjer.config import SERVER_DOMAIN
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from Model.models import Equipment_Version
 from Model.models import Device_User
-from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Service.CommonService import CommonService
-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)
+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
 
 
-def getUrl(filePath,http_host):
+def getUrl(filePath, http_host):
     urls = []
-    server_dm = 'http://'+http_host
+    server_dm = 'http://' + http_host
     filePaths = filePath.split(',')
     if len(filePaths) > 0:
         for path in filePaths:
             if path.find('static/Upgrade/') != -1:
                 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)
             else:
                 url = SERVER_DOMAIN + 'OTA/downloads/' + filePath.replace('\\', '/')
@@ -49,33 +34,35 @@ def getUrl(filePath,http_host):
     else:
         return ''
 
-def getUpdataFileUrl(code,http_host):
+
+def getUpdataFileUrl(code, http_host, response):
     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:
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
-        return ResponseFormal(500,{'details':repr(e)})
+        return response.json(500, {'details': repr(e)})
     else:
         if equipmentValid:
             equipment = equipmentValid[0]
             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:
-                return ResponseFormal(0,{
+                return response.json(0, {
                     "urlCount": len(url),
                     "url": url,
-                    'https_url':https_url,
+                    'https_url': https_url,
                     "fileSize": equipment.fileSize,
                     "Description": equipment.Description,
                 })
             else:
-                return ResponseFormal(901)
+                return response.json(901)
         else:
-            return ResponseFormal(902)
+            return response.json(902)
+
 
-def getOTAHttps(filePath,http_host):
+def getOTAHttps(filePath, http_host):
     urls = ''
     server_dm = 'https://' + http_host
     if filePath.find('static/Upgrade/') != -1:
@@ -83,92 +70,56 @@ def getOTAHttps(filePath,http_host):
         urls = server_dm + '/OTA/downloads/' + path + '?time=' + str(time.time())
     return urls
 
-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):
+def addNewEquipmentVersion(deviceContent, token,response):
     """
     :param deviceContent:
     :return:
     """
-    if token is None:
-        return ResponseJSON(311)
-    tokenManager = JSONTokenManager()
-    error_code = tokenManager.verify_AToken(token)
-    if error_code == 0:
-        pass
-    else:
-        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)
+    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)
+
     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)
+        return response.json(311)
+
 
-            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):
     fullPath = os.path.join(BASE_DIR, "static/Upgrade").replace('\\', '/')
@@ -207,24 +158,59 @@ def downloadUrl(fileType, fileCode, fileVersion, fileName):
             return response
 
         except Exception as e:
-            errorJSON = ResponseFormal(906,{'details':repr(e)})
+            res =ResponseObject()
+            errorJSON = res.formal(906, {'details': repr(e)})
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response['Content-Error'] = errorJSON
             return response
     else:
-        errorJSON = ResponseFormal(907)
+        res = ResponseObject()
+        errorJSON = res.formal(907)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         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
-def downloadUpdataFileUrl(request, *callback_args, **callback_kwargs):
+def downloadUpdataFileUrl(request):
+    response = ResponseObject()
     if request.method == 'GET':
         request_dict = request.GET
     elif request.method == 'POST':
         request_dict = request.POST
     else:
-        errorJSON = ResponseFormal(801)
+        errorJSON = response.formal(801)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         return response
@@ -234,47 +220,51 @@ def downloadUpdataFileUrl(request, *callback_args, **callback_kwargs):
     fileName = request_dict.get('fileName', None)
     if fileType != None and fileCode != None and fileVersion != \
             None and fileName != None:
-        response = downloadUrl(fileType, fileCode, fileVersion, fileName)
-        return response
+        return downloadUrl(fileType, fileCode, fileVersion, fileName,response)
+
     else:
-        errorJSON = ResponseFormal(800)
+        errorJSON = response.formal(800)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         return response
 
+
 '''
 http://192.168.136.40:8077/OTA/getEquipmentVersion?31AX162001A
 '''
+
+
 @csrf_exempt
-def getEquipmentVersionInterface(request,
-                                 *callback_args, **callback_kwargs):
+def getEquipmentVersionInterface(request):
+    response = ResponseObject()
     if request.method == "POST":
-        request.encoding ='utf-8'
+        request.encoding = 'utf-8'
         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":
         request.encoding = 'gb2312'
         code = request.GET.get('code', None)
-
-        if code is not None:
-            response = HttpResponse(getEquipmentVersion(code))
-            return response
-
+    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)})
         else:
-            return ResponseJSON(800)
-
+            if equipmentValid:
+                equipment = equipmentValid[0]
+                return response.json(0, {'softwareVersion': equipment.softwareVersion})
+            else:
+                return response.json(900)
     else:
-        return ResponseJSON(801)
+        return response.json(800)
+
 
 @csrf_exempt
-def getUpdataFileUrlInterface(request,
-                              *callback_args, **callback_kwargs):
+def getUpdataFileUrlInterface(request):
+    response = ResponseObject()
     if request.method == "POST":
         request.encoding = 'utf-8'
         request_dict = request.POST
@@ -282,17 +272,19 @@ def getUpdataFileUrlInterface(request,
         request.encoding = 'utf-8'
         request_dict = request.GET
     else:
-        return ResponseJSON(801)
+        return response.json(801)
     code = request_dict.get('code', None)
     http_host = request.META.get('HTTP_HOST', None)
     if code is not None:
-        return HttpResponse(getUpdataFileUrl(code,http_host))
+        return getUpdataFileUrl(code, http_host, response)
     else:
-        return ResponseJSON(800)
+        return response.json(800)
+
 
 @csrf_exempt
 def downloadUpdataFileUrlInterface(request, fileType, fileName,
                                    *callback_args, **callback_kwargs):
+    res = ResponseObject()
     if fileType is not None and fileName is not None:
         fullPath = os.path.join(BASE_DIR, "static/Upgrade/").replace('\\', '/')
         if fileType == 'IPC':
@@ -318,14 +310,14 @@ def downloadUpdataFileUrlInterface(request, fileType, fileName,
         print(fullPath)
         if os.path.isfile(fullPath):
             try:
-                JSON = ResponseFormal(0)
+                JSON = res.formal(0)
                 if fileType != 'User':
                     wrapper = FileWrapper(open(fullPath, 'rb'))
                     response = HttpResponse(wrapper, content_type="application/octet-stream")
                     response['Content-Length'] = os.path.getsize(fullPath)
                     response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(fullPath)
                     response['Content-MD5'] = getMD5orSHA265(fullPath)
-                    #校验文件md5值
+                    # 校验文件md5值
                     response['Content-SHA265'] = getMD5orSHA265(fullPath, 'SHA265')
                     response['Content-CRC32'] = getMD5orSHA265(fullPath, 'CRC32')
                     response['Content-Error'] = JSON
@@ -335,22 +327,23 @@ def downloadUpdataFileUrlInterface(request, fileType, fileName,
                     response = HttpResponse(Imagedata, content_type="image/jpeg")
                     return response
             except Exception as e:
-                errorJSON = ResponseFormal(906)
+                errorJSON = res.formal(906)
                 response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
                 response['Content-Error'] = errorJSON
                 return response
         else:
-            errorJSON = ResponseFormal(907)
+            errorJSON = res.formal(907)
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response['Content-Error'] = errorJSON
             return response
 
     else:
-        errorJSON = ResponseFormal(800)
+        errorJSON = res.formal(800)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
         return response
 
+
 class getUploadFiletoDirView(TemplateView):
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
@@ -358,55 +351,45 @@ class getUploadFiletoDirView(TemplateView):
 
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
-
-        token = request.POST.get('token', None)
-        fileType = request.POST.get('fileType', None)
-        fileCode = request.POST.get('fileCode', None)
-        fileVersion = request.POST.get('fileVersion', None)
+        request_dict = request.POST
         fileName = request.FILES.get('fileName', None)
-
-        return self.ValidationError(token, fileType, fileName,
-                                     filefileCode=fileCode, fileVersion=fileVersion)
+        return self.ValidationError(request_dict,fileName)
 
     def get(self, request, *args, **kwargs):
         request.encoding = 'gb2312'
-
-        token = request.GET.get('token', None)
-        fileType = request.GET.get('fileType', None)
-        fileCode = request.GET.get('fileCode', None)
-        fileVersion = request.GET.get('fileVersion', None)
+        request_dict = request.GET
         fileName = request.FILES.get('fileName', None)
-        return self.ValidationError(token, fileType, fileName,filefileCode=fileCode, fileVersion=fileVersion)
-
-    def ValidationError(self, token, fileType, fileName, *args, **kwargs):
+        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)
         if fileName != None and fileType != None and token != None:
-            tM = JSONTokenManager()
-            error_code = tM.verify_AToken(token)
-            if error_code == 0:
-                userID = tM.accessDict.get('userID', None)
-                if userID:
+            tko = TokenObject(token)
+            tko.valid()
+            response.lang = tko.lang
+            if tko.code == 0:
+                userID = tko.userID()
+                if userID is not None:
                     own_permission = ModelService.check_permission(userID=userID, permID=210)
                     if own_permission is True:
-                        fileCode = kwargs.get('fileCode', None)
-                        fileVersion = kwargs.get('fileVersion', None)
                         if fileVersion != None and fileCode != None:
-                            response = HttpResponse(self.getUploadFiletoDir(userID, fileType, fileName,
-                                                                            fileCode, fileVersion=fileVersion))
-                            return response
+                            return self.getUploadFiletoDir(userID, fileType, fileName,response,fileCode, fileVersion=fileVersion)
                         else:
-                            response = HttpResponse(self.getUploadFiletoDir(userID, fileType, fileName))
-                            return response
+                            return self.getUploadFiletoDir(userID, fileType, fileName,response)
                     else:
-                        return ResponseJSON(404)
+                        return response.json(404)
                 else:
-                    return ResponseJSON(310)
+                    return response.json(310)
             else:
-                response = HttpResponse(tM.errorCodeInfo(error_code))
-                return response
+                return response.json(tko.code)
         else:
-            return ResponseJSON(800)
+            return response.json(800)
 
-    def getUploadFiletoDir(self, userID, fileType, fileName, *args, **kwargs):
+    def getUploadFiletoDir(self, userID, fileType, fileName,response, *args, **kwargs):
         """
         将上传的文件写入服务器对应目录下
         :param Type: equipment type
@@ -414,17 +397,17 @@ class getUploadFiletoDirView(TemplateView):
         :return: filePath
         """
         try:
-            User = Device_User.objects.filter(userID = userID)
+            User = Device_User.objects.filter(userID=userID)
         except Exception as e:
             errorInfo = traceback.format_exc()
             print('查询数据库错误: %s' % errorInfo)
-            return ResponseFormal(500,{'details':repr(e)})
+            return response.json(500, {'details': repr(e)})
         else:
             if not User:
-                return ResponseFormal(113)
-            own_perm = ModelService.check_permission(userID,permID=210)
+                return response.json(113)
+            own_perm = ModelService.check_permission(userID, permID=210)
             if own_perm is not True:
-                return ResponseFormal(605)
+                return response.json(605)
             updataFile = fileName.name
             updataFile = updataFile.replace(' ', '+')
             versionIndex = updataFile.find('.', updataFile.find('.', updataFile.find('.') + 1) + 1)
@@ -435,63 +418,88 @@ class getUploadFiletoDirView(TemplateView):
                 fileCode = len(updataFile[versionIndex + 1: codeIndex]) > 0 and \
                            updataFile[versionIndex + 1: codeIndex] or None
                 if fileCode is not None and fileVersion is not None:
-                    return getDir(fileType, fileName, fileCode, fileVersion)
+                    return self.getDir(fileType, fileName, fileCode, fileVersion)
                 else:
                     fileCode = kwargs.get('fileCode', None)
                     fileVersion = kwargs.get('fileVersion', None)
                     print(fileCode, fileVersion)
                     if fileCode != None and fileVersion != None:
-                        return getDir(fileType, fileName, fileCode, fileVersion)
+                        return self.getDir(fileType, fileName, fileCode, fileVersion)
                     else:
-                        return ResponseFormal(903)
+                        return response.json(903)
             else:
                 fileCode = kwargs.get('fileCode', None)
                 fileVersion = kwargs.get('fileVersion', None)
                 if fileCode != None and fileVersion != None:
-                    return getDir(fileType, fileName, fileCode, fileVersion)
+                    return self.getDir(fileType, fileName, fileCode, fileVersion,response)
                 else:
-                    return ResponseFormal(903)
+                    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})
+
 
 @csrf_exempt
-def addNewEquipmentVersionInterface(request, *callback_args,
-                                    **callback_kwargs):
+def addNewEquipmentVersionInterface(request):
+
+    response = ResponseObject()
     if request.method == "POST":
         request.encoding = 'utf-8'
-        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)
-
+        request_dict = request.POST
     elif request.method == "GET":
         request.encoding = 'gb2312'
-
-        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
-
-        else:
-            return ResponseJSON(800)
+        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 ResponseJSON(801)
+        return response.json(800)
 
-@csrf_exempt
-def showAllEquipmentVersion(userID):
+
+def showAllEquipmentVersion(userID,response):
     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:
         errorInfo = traceback.format_exc()
         print('查询数据库错误: %s' % errorInfo)
-        return ResponseFormal(500)
+        return response.json(500)
     else:
         if userValid:
             own_permission = ModelService.check_permission(userID=userID, permID=240)
@@ -500,143 +508,33 @@ def showAllEquipmentVersion(userID):
                 sqlList = json.loads(sqlJSON)
                 print(sqlList, sqlJSON)
                 sqlDict = dict(zip(["datas"], [sqlList]))
-                return ResponseFormal(0,sqlDict)
+                return response.json(0, sqlDict)
             else:
-                return ResponseFormal(604)
+                return response.json(604)
         else:
-            return ResponseFormal(113)
+            return response.json(113)
+
 
 @csrf_exempt
-def showAllEquipmentVersionInterface(request, *callback_args,
-                                 **callback_kwargs):
+def showAllEquipmentVersionInterface(request):
+    response = ResponseObject()
     if request.method == 'POST':
         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':
         token = request.GET.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)
-
+    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)
             else:
-                response = HttpResponse(tM.errorCodeInfo(error_code))
-                return response
+                return response.json(310)
         else:
-            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 ''
+            return response.json(tko.code)
     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()
+        return response.json(800)
 
-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
 

+ 255 - 106
Controller/OauthManage.py

@@ -11,127 +11,276 @@
 @file: OauthManage.py
 @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.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
-from Service.TokenManager import *
-from Model.models import oauth_user,Auth_Captcha
-from django.contrib import auth
-from django.http import HttpResponseRedirect
-import json
-from Service.ResponseService import *
-import requests
+from Model.models import oauth_user, Device_User
 from Service.ModelService import ModelService
-from django.middleware.csrf import get_token
-from django.http import JsonResponse
+from Object.TokenObject import TokenObject
+from Object.ResponseObject import ResponseObject
+from Service.CommonService import CommonService
+from Controller.CheckUserData import DataValid
+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
+'''
 
-class OauthManage(View):
+
+class OauthRelateView(View):
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
-        return super(OauthManage, self).dispatch(*args, **kwargs)
+        return super(OauthRelateView, self).dispatch(*args, **kwargs)
+
+    # 定义host
+    __http_host = None
+
     # 查询
-    def get(self, request, *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)
 
-        return
     # 认证登录
-    def post(self, request, *args, **kwargs):
+    def post(self, request):
+        self.__http_host = request.META.get('PATH_INFO', None)
+        response = ResponseObject()
         try:
             json_data = json.loads(request.body.decode("utf-8"))
         except Exception as e:
             print(repr(e))
-            return ResponseJSON(10,repr(e))
+            return response.json(10, repr(e))
         else:
-            access_token = json_data.get('access_token', None)
-            if access_token is not None:
+            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)
                 try:
-                    ser = requests.get(url='http://192.168.136.45:9898/accounts/user/',
-                                       data={'access_token': access_token})
-                    ser_data = json.loads(ser.content)
+                    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()
                 except Exception as e:
-                    print(repr(e))
-                    return ResponseJSON(10,repr(e))
+                    var_dump(repr(e))
+                    return response.json(106)
                 else:
-                    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)
+                    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)
+                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)

File diff suppressed because it is too large
+ 182 - 474
Controller/PermissionManager.py


+ 149 - 145
Controller/StreamMedia.py

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

+ 15 - 12
Controller/SysManage.py

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

+ 18 - 10
Controller/Test.py

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

File diff suppressed because it is too large
+ 145 - 747
Controller/UserManger.py


二進制
Controller/__pycache__/AccessLog.cpython-36.pyc


二進制
Controller/__pycache__/AdminManage.cpython-36.pyc


二進制
Controller/__pycache__/AppInfo.cpython-36.pyc


二進制
Controller/__pycache__/CheckUserData.cpython-36.pyc


二進制
Controller/__pycache__/DeviceLog.cpython-36.pyc


二進制
Controller/__pycache__/DeviceManage.cpython-36.pyc


二進制
Controller/__pycache__/DeviceMeal.cpython-36.pyc


二進制
Controller/__pycache__/EquipmentInfo.cpython-36.pyc


二進制
Controller/__pycache__/EquipmentManager.cpython-36.pyc


二進制
Controller/__pycache__/EquipmentOTA.cpython-36.pyc


二進制
Controller/__pycache__/EquipmentSensor.cpython-36.pyc


二進制
Controller/__pycache__/EquipmentStatus.cpython-36.pyc


二進制
Controller/__pycache__/FeedBackInfo.cpython-36.pyc


二進制
Controller/__pycache__/HlsManage.cpython-36.pyc


二進制
Controller/__pycache__/LogAccess.cpython-36.pyc


二進制
Controller/__pycache__/LogManager.cpython-36.pyc


二進制
Controller/__pycache__/MealManage.cpython-36.pyc


二進制
Controller/__pycache__/OTAEquipment.cpython-36.pyc


二進制
Controller/__pycache__/OauthManage.cpython-36.pyc


二進制
Controller/__pycache__/PermissionManager.cpython-36.pyc


二進制
Controller/__pycache__/StreamMedia.cpython-36.pyc


二進制
Controller/__pycache__/SysManage.cpython-36.pyc


二進制
Controller/__pycache__/Test.cpython-36.pyc


二進制
Controller/__pycache__/UserController.cpython-36.pyc


二進制
Controller/__pycache__/UserManger.cpython-36.pyc


二進制
Controller/__pycache__/shareUserPermission.cpython-36.pyc


+ 114 - 121
Controller/shareUserPermission.py

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

+ 3 - 15
DB/data.json

@@ -1,17 +1,5 @@
 {
-  "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
-  }
+  "code": "200",
+  "res": {},
+  "msg":{}
 }

二進制
Model/__pycache__/models.cpython-36.pyc


+ 18 - 70
Model/models.py

@@ -1,13 +1,16 @@
-from django.db import models
 from itertools import chain
+
+from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
+from django.db import models
 from django.utils import six
-from imagekit.processors import ResizeToFill
-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 imagekit.models import ProcessedImageField
+from imagekit.processors import ResizeToFill
+
+from Ansjer.config import SERVER_DOMAIN
 from Service.CommonService import CommonService
 
+
 class PermissionsManager(models.Manager):
     use_in_migrations = True
 
@@ -162,7 +165,7 @@ class Device_User(AbstractBaseUser):
                         verbose_name=u'头像',
                         # 图片将处理成85x85的尺寸
                         processors=[ResizeToFill(85, 85)],)
-    userIconUrl = models.URLField(blank = True, max_length = 128, default=api_settings.SERVER_DOMAIN
+    userIconUrl = models.URLField(blank = True, max_length = 128, default=SERVER_DOMAIN
                                                                           + '/account/getAvatar/User/defaultUser.png')
     NickName = models.CharField(blank=True, max_length=32, default='', verbose_name=u'用户昵称')
     is_superuser = models.IntegerField(blank=True, default=0, verbose_name=u'用户类型')
@@ -276,42 +279,14 @@ class Device_User(AbstractBaseUser):
             return permslist
     def has_module_perms(self, app_label):
         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
     def is_staff(self):
         return self.is_superuser
 
 class Device_Info(models.Model):
     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',
                                    on_delete=models.CASCADE)
-
     NickName = models.CharField(blank=True, max_length=32, verbose_name=u'设备名称')
     UID = models.CharField(blank=True, max_length=32, verbose_name=u'设备UID')
     SID = models.CharField(blank=True, max_length=32, verbose_name=u'服务器ID')
@@ -341,32 +316,6 @@ class Device_Info(models.Model):
 
     def __str__(self):
         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):
         opts = self._meta
         data = {}
@@ -442,7 +391,7 @@ class Auth_Captcha(models.Model):
 class Access_Log(models.Model):
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     user = models.CharField(max_length=100,null=True,blank=True,verbose_name=u'用户')
-    operation = 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'操作')
     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'访问路径')
     status = models.IntegerField(null=True,blank=True,verbose_name=u'状态')
@@ -491,7 +440,7 @@ class Equipment_Sensor(models.Model):
 class Equipment_Info(models.Model):
     id = models.AutoField(primary_key=True,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'设备通道')
     eventType = models.IntegerField(null=True, blank=True, verbose_name=u'事件类型')
     viewAccont = models.CharField(blank=True,null=True, max_length=32, verbose_name=u'设备账户')
@@ -500,7 +449,8 @@ class Equipment_Info(models.Model):
     alarm = models.CharField(blank=True, max_length=256, 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'接收到报警时间')
-
+    userID = models.ForeignKey(Device_User, null=True,blank=True, to_field='userID',
+                                   on_delete=models.CASCADE)
     def __str__(self):
         return self.id
 
@@ -508,7 +458,7 @@ class Equipment_Info(models.Model):
         db_table = 'equipment_info'
         verbose_name = u'设备信息推送表'
         verbose_name_plural=verbose_name
-        ordering = ('id',)
+        ordering = ('-id',)
 
 class Feedback_Info(models.Model):
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
@@ -590,9 +540,8 @@ class Equipment_Version(models.Model):
         ordering = ('-data_joined',)
         db_table = 'equipment_version'
 
-
 class App_Info(models.Model):
-    
+
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
     appName = models.CharField(blank=True, max_length=32, verbose_name=u'app名称')
@@ -615,13 +564,13 @@ class App_Info(models.Model):
         verbose_name_plural=verbose_name
         ordering = ('id',)
 
-
-'''
 class oauth_user(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     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)
-    
+    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):
         return self.oid
 
@@ -630,4 +579,3 @@ class oauth_user(models.Model):
         verbose_name = u'认证用户关联表'
         verbose_name_plural=verbose_name
         ordering = ('id',)
-'''

+ 1 - 1
Object/AWS/SesClassObject.py

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

二進制
Object/AWS/__pycache__/SesClassObject.cpython-36.pyc


+ 51 - 0
Object/TokenObject1.py

@@ -0,0 +1,51 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: AnsjerOA
+@software: PyCharm
+@DATE: 2018/8/13 15:36
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: TokenObject.py
+@Contact: chanjunkai@163.com
+"""
+from Ansjer.config import OAUTH_ACCESS_TOKEN_SECRET
+import jwt
+from Model.models import oauth_user
+
+class TokenObject:
+
+    def __init__(self, token=None):
+        if token == 'debug':
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvaWQiOiJhNDVmN2U3MC04NTAwLTRkOTItYWRkZS1mMmMxMDdkYzVkYzEiLCJsYW5nIjpudWxsLCJleHAiOjE1NzA5ODY4Mzl9.uDLfBjUQqWQB0pOMtXN17iikEbxztDhcus_UCH36XZw'
+        if token == 'test':
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvaWQiOiJhNDVmN2U3MC04NTAwLTRkOTItYWRkZS1mMmMxMDdkYzVkYzEiLCJsYW5nIjpudWxsLCJleHAiOjE1MzUwNzQ0Njl9.MW7iU_LMo_uqceYeoePVZiyJoYc1wZTJTxpxOa0aha8'
+        self.token = token
+        self.code = 0
+        self.userID = None
+        self.lang = None
+
+    def valid(self):
+        try:
+            res = jwt.decode(self.token, OAUTH_ACCESS_TOKEN_SECRET, algorithms='HS256')
+            self.userID = res.get('userID', None)
+            self.lang = res.get('lang', None)
+        except jwt.ExpiredSignatureError as e:
+            print('过期')
+            print(repr(e))
+            self.code = 307
+        except Exception as e:
+            print(repr(e))
+            self.code = 303
+
+    def userID(self):
+        oid = self.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

+ 31 - 2
Service/CommonService.py

@@ -7,7 +7,9 @@ from pathlib import Path
 from django.utils import timezone
 from Ansjer.settings import SERVER_HOST
 from django_global_request.middleware import get_request
-from Ansjer.config import BASE_DIR
+from Ansjer.settings import BASE_DIR
+from random import Random
+
 
 # 复用性且公用较高封装代码在这
 class CommonService:
@@ -36,7 +38,7 @@ class CommonService:
     # 定义静态方法
     # 格式化query_set转dict
     @staticmethod
-    def query_set_to_dict(query_set):
+    def qs_to_dict(query_set):
         sqlJSON = serializers.serialize('json', query_set)
         sqlList = json.loads(sqlJSON)
         sqlDict = dict(zip(["datas"], [sqlList]))
@@ -247,3 +249,30 @@ class CommonService:
             return None
         else:
             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

+ 27 - 32
Service/MiscellService.py

@@ -1,18 +1,22 @@
-from Object.AWS.SesClassObject import SesClassObject
-from Ansjer.settings import SERVER_DOMAIN
-from Ansjer.config import SECRET_KEY
-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
 import datetime
-from django.utils.timezone import utc
+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.TokenObject import TokenObject
 from Object.mongodb import mongodb
+from Service.CommonService import CommonService
+from Service.ModelService import ModelService
 from Service.TemplateService import TemplateService
-from Model.models import Device_User
+
+
 # 杂项类,共用行不高,但有些地方需求
 
 
@@ -61,37 +65,28 @@ class MiscellService():
 
     # 获取访问用户名称
     @staticmethod
-    def get_access_name(request):
-        if request.method == 'GET':
-            request_dict = request.GET
-        if request.method == 'POST':
-            request_dict = request.POST
+    def get_access_name(request_dict):
         token = request_dict.get('token', None)
-        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
+        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
 
     @staticmethod
     def add_access_log(request, status_code):
+        request.encoding = 'utf-8'
         if request.method == 'GET':
             request_dict = request.GET
         if request.method == 'POST':
-            # request.encoding = 'utf-8'
             request_dict = request.POST
         api_list = TemplateService.log_api()
         request_path = request.path.strip().strip('/')
         if request_path in api_list:
+            user = MiscellService.get_access_name(request_dict=request_dict)
             clientIP = CommonService.get_ip_address(request)
             now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
             password = request_dict.get('userPwd', None)
@@ -100,7 +95,7 @@ class MiscellService():
                 request_dict.pop('userPwd')
             content = json.dumps(request_dict)
             add_data = {
-                'user': MiscellService.get_access_name(request=request),
+                'user': user,
                 'ip': clientIP,
                 'status': status_code,
                 'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,

+ 13 - 4
Service/ModelService.py

@@ -14,7 +14,7 @@ class ModelService:
     def getValidateMember(userID):
         device_user_query_set = Device_User.objects.get(userID=userID)
         role_query_set = device_user_query_set.role.all()
-        role_dict = CommonService.query_set_to_dict(role_query_set)
+        role_dict = CommonService.qs_to_dict(role_query_set)
         permission = role_dict["datas"][0]["fields"]["permission"]
         if len(permission):
             if 92 in permission:
@@ -27,7 +27,7 @@ class ModelService:
         device_user_query_set = Device_User.objects.get(userID=userID)
         role_query_set = device_user_query_set.role.all()
         if role_query_set.exists():
-            role_dict = CommonService.query_set_to_dict(role_query_set)
+            role_dict = CommonService.qs_to_dict(role_query_set)
             permission = role_dict["datas"][0]["fields"]["permission"]
             if len(permission):
                 return permission
@@ -50,7 +50,7 @@ class ModelService:
             if device_user_query_set:
                 role_query_set = device_user_query_set.role.all()
                 if role_query_set:
-                    role_dict = CommonService.query_set_to_dict(role_query_set)
+                    role_dict = CommonService.qs_to_dict(role_query_set)
                     permission = role_dict["datas"][0]["fields"]["permission"]
                     print(permission)
                     if len(permission) > 0:
@@ -123,4 +123,13 @@ class ModelService:
                                                           View_Password=View_Password, ChannelIndex=ChannelIndex)
         if device_info_queryset.exists():
             return True
-        return False
+        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

+ 4 - 40
Service/TemplateService.py

@@ -16,17 +16,6 @@ class TemplateService:
     @staticmethod
     def log_api():
         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/perfectUserInfo',
             'account/getAvatar',
@@ -43,7 +32,6 @@ class TemplateService:
             'equipment/modifyUserEquipment',
             'equipment/showAllUserEquipment',
             'accessLog/findEquipmentInfo',
-            'accessLog/testApi',
             'OTA/uploads',
             'OTA/download',
             'OTA/downloads',
@@ -53,8 +41,6 @@ class TemplateService:
             'OTA/showAllEquipmentVersion',
             'OTA/getUpdataFileUrl',
             'mobile/uploadlogFile',
-            # 'toekn/refreshToken',
-            'import/batchAddEquipment',
             'roles/addNewRole',
             'roles/queryRole',
             'roles/delRole',
@@ -64,37 +50,16 @@ class TemplateService:
             'perms/queryPerms',
             'perms/modifyPerms',
             'permsManager/queryRolePerms',
-            'api-token-auth',
-            'api-token-refresh',
-            'api-token-verify',
-
             'uploads/upgrade',
             'upgrade/download',
             'downloads/upgrade',
             'getOTAurl/getUpdataFileUrl',
-
-            # 'media/stream',
-            # 'media/auth_stream',
-            # 'media/send_video_s3',
-            # 'media/auth_live',
-
             'equipment/sensor',
             'equipment/info',
-
             'adminManage/manage',
-
             'equipment/OTA',
-
             'feedbackInfo',
-
             'appInfo',
-            'meal/manage',
-            'device/meal',
-            'HlsManage',
-            'device/manage',
-            # 'device/online',
-            # 'device/offline',
-            # 'device/updateIP',
         ]
         return apiList
 
@@ -106,7 +71,6 @@ class TemplateService:
             data = {
                 'cn': {
                     'title': '注册码获取邮件',
-                    # 'body': '恭喜你来到安士佳公司物联网系统,您获取的注册码为:',
                     'body': """
                         <!DOCTYPE html>
     <html>
@@ -243,7 +207,7 @@ class TemplateService:
                     <div class="xboxcontent">
                         <div class="neirong">
                             <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">(请输入该验证码完成验证,验证码5分钟内有效!)</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>
                             <div class="line">如果你未申请注册服务,请忽略该邮件。</div>
                         </div>
                     </div>
@@ -399,7 +363,7 @@ class TemplateService:
                     <div class="xboxcontent">
                         <div class="neirong">
                             <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 5 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 10 minutes!)</span></p>
                             <div class="line">If you have not applied for registration, please ignore the email.</div>
                         </div>
                     </div>
@@ -438,11 +402,11 @@ class TemplateService:
             data = {
                 'cn': {
                     'title': '重置密码信息',
-                    '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'
+                    'body': '您好{username}\n' + '您已经请求了重置密码,可以点击下面的链接来重置密码\n' + '<p><a href="{reset_link}">{reset_link}</a></p>\n' + '更改后的密码为: {reset_pwd}\n如果你没有请求重置密码,请忽略这封邮件.\n在你点击上面链接修改密码之前,你的密码将会保持不变\n'
                 },
                 'en': {
                     '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="{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.',
+                    '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.',
                 }
             }
         return data[language]

二進制
Service/__pycache__/CommonService.cpython-36.pyc


二進制
Service/__pycache__/MiscellService.cpython-36.pyc


二進制
Service/__pycache__/ModelService.cpython-36.pyc


二進制
Service/__pycache__/TemplateService.cpython-36.pyc


二進制
Service/__pycache__/middleware.cpython-36.pyc


+ 7 - 12
Service/middleware.py

@@ -1,17 +1,12 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
+from django.utils.deprecation import MiddlewareMixin
+
 from Ansjer import settings as api_settings
+from Object.ResponseObject import ResponseObject
 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):
     def _https_statistics_to_reverse(self, request):
         '''
@@ -57,7 +52,8 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
             print('process_request', request)
         result = self._https_statistics_to_reverse(request)
         if result == -1:
-            return ResponseJSON(910)
+            response = ResponseObject()
+            return response.json(910)
         return None
 
     def process_view(self, request, callback, callback_args, callback_kwargs):
@@ -75,7 +71,6 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
         :return: 必须返回 HttpResponse 对象. 这个 response 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
             该处理器能修改 response 的内容;一个常见的用途是内容压缩,如 gzip 所请求的 HTML 页面。
         '''
-
         self._https_statistics_to_close(request)
         ########记录访问日志
         if request.path !='/favicon.ico':

Some files were not shown because too many files changed in this diff