Jelajahi Sumber

修改后台列表

qiuzijian 4 tahun lalu
induk
melakukan
a79f79dbf5
50 mengubah file dengan 1550 tambahan dan 292 penghapusan
  1. 6 0
      .idea/vcs.xml
  2. 267 260
      .idea/workspace.xml
  3. 20 0
      Modules/Admin/Enum/AdminEnum.php
  4. 0 6
      Modules/Admin/Enum/UserEnum.php
  5. 5 3
      Modules/Admin/Http/Controllers/UsersController.php
  6. 3 3
      Modules/Admin/Routes/web.php
  7. 13 12
      Modules/Admin/Services/UsersService.php
  8. 258 0
      Modules/Admin/Traits/ClassifyMethod.php
  9. 0 0
      Modules/Camera/Config/.gitkeep
  10. 5 0
      Modules/Camera/Config/config.php
  11. 0 0
      Modules/Camera/Console/.gitkeep
  12. 0 0
      Modules/Camera/Database/Migrations/.gitkeep
  13. 33 0
      Modules/Camera/Database/Migrations/2021_04_20_071702_create_camera_field_list.php
  14. 34 0
      Modules/Camera/Database/Migrations/2021_04_20_082221_create_camera_list_table.php
  15. 0 0
      Modules/Camera/Database/Seeders/.gitkeep
  16. 21 0
      Modules/Camera/Database/Seeders/CameraDatabaseSeeder.php
  17. 0 0
      Modules/Camera/Database/factories/.gitkeep
  18. 0 0
      Modules/Camera/Entities/.gitkeep
  19. 15 0
      Modules/Camera/Entities/CameraFieldList.php
  20. 14 0
      Modules/Camera/Entities/CameraList.php
  21. 0 0
      Modules/Camera/Http/Controllers/.gitkeep
  22. 208 0
      Modules/Camera/Http/Controllers/CameraController.php
  23. 0 0
      Modules/Camera/Http/Middleware/.gitkeep
  24. 0 0
      Modules/Camera/Http/Requests/.gitkeep
  25. 0 0
      Modules/Camera/Providers/.gitkeep
  26. 125 0
      Modules/Camera/Providers/CameraServiceProvider.php
  27. 69 0
      Modules/Camera/Providers/RouteServiceProvider.php
  28. 0 0
      Modules/Camera/Resources/assets/.gitkeep
  29. 0 0
      Modules/Camera/Resources/assets/js/app.js
  30. 0 0
      Modules/Camera/Resources/assets/sass/app.scss
  31. 0 0
      Modules/Camera/Resources/lang/.gitkeep
  32. 0 0
      Modules/Camera/Resources/views/.gitkeep
  33. 9 0
      Modules/Camera/Resources/views/index.blade.php
  34. 19 0
      Modules/Camera/Resources/views/layouts/master.blade.php
  35. 0 0
      Modules/Camera/Routes/.gitkeep
  36. 18 0
      Modules/Camera/Routes/api.php
  37. 34 0
      Modules/Camera/Routes/web.php
  38. 139 0
      Modules/Camera/Services/CameraServices.php
  39. 0 0
      Modules/Camera/Tests/Feature/.gitkeep
  40. 0 0
      Modules/Camera/Tests/Unit/.gitkeep
  41. 23 0
      Modules/Camera/composer.json
  42. 13 0
      Modules/Camera/module.json
  43. 17 0
      Modules/Camera/package.json
  44. 14 0
      Modules/Camera/webpack.mix.js
  45. 10 1
      Modules/Mine/Database/Migrations/2021_04_16_083654_create_mine_list_table.php
  46. 13 0
      Modules/Mine/Entities/MineList.php
  47. 103 3
      Modules/Mine/Http/Controllers/MineController.php
  48. 9 3
      Modules/Mine/Routes/web.php
  49. 31 0
      Modules/Mine/Services/MineServices.php
  50. 2 1
      modules_statuses.json

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 267 - 260
.idea/workspace.xml

@@ -1,7 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ChangeListManager">
-    <list default="true" id="b5beace6-e4f4-419b-8299-c67e17af5998" name="Default Changelist" comment="" />
+    <list default="true" id="b5beace6-e4f4-419b-8299-c67e17af5998" name="Default Changelist" comment="">
+      <change afterPath="$PROJECT_DIR$/Modules/Admin/Enum/AdminEnum.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Modules/Admin/Traits/ClassifyMethod.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Modules/Camera/Entities/CameraFieldList.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Modules/Camera/Entities/CameraList.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Modules/Mine/Entities/MineList.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/Modules/Mine/Services/MineServices.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Admin/Enum/UserEnum.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Admin/Enum/UserEnum.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Admin/Http/Controllers/UsersController.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Admin/Http/Controllers/UsersController.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Admin/Routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Admin/Routes/web.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Admin/Services/UsersService.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Admin/Services/UsersService.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Mine/Database/Migrations/2021_04_16_083654_create_mine_list_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Mine/Database/Migrations/2021_04_16_083654_create_mine_list_table.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Mine/Http/Controllers/MineController.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Mine/Http/Controllers/MineController.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Modules/Mine/Routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/Modules/Mine/Routes/web.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules_statuses.json" beforeDir="false" afterPath="$PROJECT_DIR$/modules_statuses.json" afterDir="false" />
+    </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -14,89 +31,35 @@
   <component name="FileEditorManager">
     <leaf>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/AdminController.php">
+        <entry file="file://$PROJECT_DIR$/Modules/Camera/Routes/web.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="277">
-              <caret line="29" column="30" selection-start-line="29" selection-start-column="30" selection-end-line="29" selection-end-column="30" />
-              <folding>
-                <element signature="e#50#94#0#PHP" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Modules/Admin/Services/UsersService.php">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="214">
-              <caret line="107" column="33" selection-start-line="107" selection-start-column="33" selection-end-line="107" selection-end-column="33" />
-              <folding>
-                <element signature="e#128#141#0#PHP" expanded="true" />
-              </folding>
+            <state relative-caret-position="273">
+              <caret line="22" column="35" selection-start-line="22" selection-start-column="29" selection-end-line="22" selection-end-column="35" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/UsersController.php">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/Modules/Camera/Http/Controllers/CameraController.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="254">
-              <caret line="28" column="42" selection-start-line="28" selection-start-column="26" selection-end-line="28" selection-end-column="42" />
+            <state relative-caret-position="424">
+              <caret line="105" column="37" selection-start-line="105" selection-start-column="37" selection-end-line="105" selection-end-column="37" />
               <folding>
-                <element signature="e#136#149#0#PHP" expanded="true" />
+                <element signature="e#51#95#0#PHP" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Modules/Mine/Routes/web.php">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="126">
-              <caret line="15" column="44" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="44" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/Modules/Mine/Http/Controllers/MineController.php">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="378">
-              <caret line="20" column="42" selection-start-line="20" selection-start-column="42" selection-end-line="20" selection-end-column="42" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Modules/Admin/Routes/web.php">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="173">
-              <caret line="19" column="10" selection-start-line="19" selection-start-column="10" selection-end-line="19" selection-end-column="10" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/Modules/Admin/Enum/UserEnum.php">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="273">
-              <caret line="18" column="24" selection-start-line="18" selection-start-column="10" selection-end-line="18" selection-end-column="24" />
-            </state>
-          </provider>
+        <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-20.log">
+          <provider selected="true" editor-type-id="text-editor" />
         </entry>
       </file>
     </leaf>
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>requ</find>
-      <find>passport</find>
-      <find>Laravel\Passport\Passport</find>
-      <find>providers</find>
-      <find>loginView</find>
-      <find>home</find>
-      <find>Illuminate\Auth\RequestGuard::attempt</find>
-      <find>attempt</find>
       <find>url()</find>
       <find>Auth::guard('admin')</find>
       <find>sortMenu</find>
@@ -119,19 +82,22 @@
       <find>登录</find>
       <find>items</find>
       <find>permissionsList</find>
+      <find>增加</find>
+      <find>删除</find>
+      <find>$actionBtns</find>
+      <find>UserEnum</find>
+      <find>select</find>
+      <find>checkbox</find>
+      <find>CAMERA_FIELD_ALREADY_EXIST</find>
+      <find>CAMERA_FIELD_NOT_EXIST</find>
     </findStrings>
   </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/routes/web.php" />
-        <option value="$PROJECT_DIR$/public/css/admin/font.css" />
-        <option value="$PROJECT_DIR$/public/css/admin/weadmin.css" />
-        <option value="$PROJECT_DIR$/.env" />
-        <option value="$PROJECT_DIR$/Modules/Admin/Database/Migrations/2021_04_14_071806_create_admin_table.php" />
-        <option value="$PROJECT_DIR$/database/migrations/2021_04_14_073645_update_users_table.php" />
-        <option value="$PROJECT_DIR$/app/Http/Controllers/HomeController.php" />
-        <option value="$PROJECT_DIR$/app/Http/Controllers/Auth/ResetPasswordController.php" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/Auth/RegisterController.php" />
         <option value="$PROJECT_DIR$/app/Http/Middleware/Authenticate.php" />
         <option value="$PROJECT_DIR$/app/Http/Controllers/Auth/LoginController.php" />
@@ -163,12 +129,26 @@
         <option value="$PROJECT_DIR$/Modules/Enum/UserEnum.php" />
         <option value="$PROJECT_DIR$/storage/logs/laravel-2021-04-16.log" />
         <option value="$PROJECT_DIR$/Modules/Admin/Resources/views/layouts/master.blade.php" />
-        <option value="$PROJECT_DIR$/Modules/Admin/Enum/UserEnum.php" />
-        <option value="$PROJECT_DIR$/Modules/Admin/Services/UsersService.php" />
-        <option value="$PROJECT_DIR$/Modules/Admin/Http/Controllers/UsersController.php" />
+        <option value="$PROJECT_DIR$/Modules/Mine/Database/Migrations/2021_04_16_083654_create_mine_list_table.php" />
         <option value="$PROJECT_DIR$/Modules/Admin/Routes/web.php" />
+        <option value="$PROJECT_DIR$/Modules/Admin/Http/Controllers/UsersController.php" />
+        <option value="$PROJECT_DIR$/Modules/Mine/Entities/MineList.php" />
+        <option value="$PROJECT_DIR$/Modules/Admin/Traits/ClassifyMethod.php" />
+        <option value="$PROJECT_DIR$/Modules/Mine/Services/MineServices.php" />
         <option value="$PROJECT_DIR$/Modules/Mine/Routes/web.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Entities/CameraFieldList.php" />
+        <option value="$PROJECT_DIR$/app/Enum/CommonEnum.php" />
+        <option value="$PROJECT_DIR$/Modules/Admin/Enum/UserEnum.php" />
+        <option value="$PROJECT_DIR$/Modules/Admin/Services/UsersService.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Database/Migrations/2021_04_20_071702_create_camera_field_list.php" />
         <option value="$PROJECT_DIR$/Modules/Mine/Http/Controllers/MineController.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Database/Migrations/2021_04_20_082221_create_camera_list_table.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Entities/CameraList.php" />
+        <option value="$PROJECT_DIR$/Modules/Admin/Enum/AdminEnum.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Routes/web.php" />
+        <option value="$PROJECT_DIR$/storage/logs/laravel-2021-04-20.log" />
+        <option value="$PROJECT_DIR$/Modules/Camera/Http/Controllers/CameraController.php" />
       </list>
     </option>
   </component>
@@ -288,6 +268,7 @@
     <option name="width" value="1440" />
     <option name="height" value="900" />
   </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
   <component name="ProjectView">
     <navigator proportions="" version="1">
       <foldersAlwaysOnTop value="true" />
@@ -322,6 +303,33 @@
               <item name="video_system" type="462c0819:PsiDirectoryNode" />
               <item name="Modules" type="462c0819:PsiDirectoryNode" />
               <item name="Admin" type="462c0819:PsiDirectoryNode" />
+              <item name="Enum" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="video_system" type="b2602c69:ProjectViewProjectNode" />
+              <item name="video_system" type="462c0819:PsiDirectoryNode" />
+              <item name="Modules" type="462c0819:PsiDirectoryNode" />
+              <item name="Admin" type="462c0819:PsiDirectoryNode" />
+              <item name="Routes" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="video_system" type="b2602c69:ProjectViewProjectNode" />
+              <item name="video_system" type="462c0819:PsiDirectoryNode" />
+              <item name="Modules" type="462c0819:PsiDirectoryNode" />
+              <item name="Camera" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="video_system" type="b2602c69:ProjectViewProjectNode" />
+              <item name="video_system" type="462c0819:PsiDirectoryNode" />
+              <item name="Modules" type="462c0819:PsiDirectoryNode" />
+              <item name="Camera" type="462c0819:PsiDirectoryNode" />
+              <item name="Entities" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="video_system" type="b2602c69:ProjectViewProjectNode" />
+              <item name="video_system" type="462c0819:PsiDirectoryNode" />
+              <item name="Modules" type="462c0819:PsiDirectoryNode" />
+              <item name="Camera" type="462c0819:PsiDirectoryNode" />
               <item name="Routes" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
@@ -340,6 +348,13 @@
             <path>
               <item name="video_system" type="b2602c69:ProjectViewProjectNode" />
               <item name="video_system" type="462c0819:PsiDirectoryNode" />
+              <item name="Modules" type="462c0819:PsiDirectoryNode" />
+              <item name="Mine" type="462c0819:PsiDirectoryNode" />
+              <item name="Services" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="video_system" type="b2602c69:ProjectViewProjectNode" />
+              <item name="video_system" type="462c0819:PsiDirectoryNode" />
               <item name="routes" type="462c0819:PsiDirectoryNode" />
             </path>
           </expand>
@@ -386,12 +401,12 @@
       <option name="presentableId" value="Default" />
       <updated>1618368322468</updated>
       <workItem from="1618368323697" duration="143000" />
-      <workItem from="1618368497550" duration="46972000" />
+      <workItem from="1618368497550" duration="73977000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="47115000" />
+    <option name="totallyTimeSpent" value="74120000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="0" width="1440" height="900" extended-state="0" />
@@ -422,316 +437,288 @@
     <option name="version" value="1" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/composer.json">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/layouts/sub.blade.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="214">
-          <caret line="15" column="41" selection-start-line="15" selection-start-column="41" selection-end-line="15" selection-end-column="41" />
+        <state relative-caret-position="840">
+          <caret line="40" column="9" lean-forward="true" selection-start-line="40" selection-start-column="9" selection-end-line="40" selection-end-column="9" />
+          <folding>
+            <element signature="n#style#0;n#a#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
+            <element signature="n#style#0;n#i#0;n#a#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/config/app.php">
+    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Http/Request.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="378">
-          <caret line="164" column="56" selection-start-line="164" selection-start-column="56" selection-end-line="164" selection-end-column="56" />
+        <state relative-caret-position="126">
+          <caret line="14" column="6" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/routes/web.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Requests/MenusRequest.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="210">
-          <caret line="19" column="35" selection-start-line="19" selection-start-column="21" selection-end-line="19" selection-end-column="35" />
+        <state relative-caret-position="147">
+          <caret line="12" column="6" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Middleware/Authenticate.php">
+    <entry file="file://$PROJECT_DIR$/vendor/overtrue/pinyin/src/const.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="126">
-          <caret line="6" column="6" selection-start-line="6" selection-start-column="6" selection-end-line="6" selection-end-column="6" />
+        <state relative-caret-position="84">
+          <caret line="11" column="8" selection-start-line="11" selection-start-column="8" selection-end-line="11" selection-end-column="8" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Http/Kernel.php">
+    <entry file="file://$PROJECT_DIR$/vendor/overtrue/pinyin/src/Pinyin.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="159">
-          <caret line="53" column="44" lean-forward="true" selection-start-line="53" selection-start-column="44" selection-end-line="53" selection-end-column="44" />
+        <state relative-caret-position="6342">
+          <caret line="309" lean-forward="true" selection-start-line="309" selection-end-line="309" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/resources/views/auth/login.blade.php">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Foundation/Auth/ThrottlesLogins.php">
+    <entry file="file://$PROJECT_DIR$/app/Helpers.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="260">
-          <caret line="65" column="23" selection-start-line="65" selection-start-column="23" selection-end-line="65" selection-end-column="23" />
+        <state relative-caret-position="445">
+          <caret line="48" column="5" selection-start-line="48" selection-start-column="5" selection-end-line="48" selection-end-column="5" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Providers/AppServiceProvider.php">
+    <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-15.log">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/User.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="504">
-          <caret line="24" column="23" lean-forward="true" selection-start-line="24" selection-start-column="23" selection-end-line="24" selection-end-column="23" />
+        <state relative-caret-position="208">
+          <caret line="10" column="19" lean-forward="true" selection-start-line="10" selection-start-column="19" selection-end-line="10" selection-end-column="19" />
           <folding>
-            <element signature="e#33#71#0#PHP" expanded="true" />
+            <element signature="e#23#63#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Auth/RequestGuard.php">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/laravel/passport/src/Passport.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Services/FilterService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="260">
-          <caret line="90" column="18" selection-start-line="90" selection-start-column="18" selection-end-line="90" selection-end-column="18" />
+        <state relative-caret-position="-269">
+          <caret line="13" column="27" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php">
+    <entry file="file://$PROJECT_DIR$/.env">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="509">
-          <caret line="120" column="30" lean-forward="true" selection-start-line="120" selection-start-column="30" selection-end-line="120" selection-end-column="30" />
-        </state>
+        <state relative-caret-position="-51" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/template_table_view.blade.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="343">
-          <caret line="96" column="27" lean-forward="true" selection-start-line="96" selection-start-column="27" selection-end-line="96" selection-end-column="27" />
+        <state relative-caret-position="210">
+          <caret line="10" column="27" lean-forward="true" selection-start-line="10" selection-start-column="27" selection-end-line="10" selection-end-column="27" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/config/auth.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/layouts/master.blade.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="141">
-          <caret line="38" column="12" selection-start-line="38" selection-start-column="9" selection-end-line="38" selection-end-column="12" />
+        <state relative-caret-position="559">
+          <caret line="120" column="26" lean-forward="true" selection-start-line="104" selection-start-column="14" selection-end-line="120" selection-end-column="26" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php">
+    <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-16.log">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="354">
-          <caret line="78" column="27" selection-start-line="78" selection-start-column="27" selection-end-line="78" selection-end-column="27" />
+        <state relative-caret-position="372">
+          <caret line="732" column="70" selection-start-line="732" selection-start-column="55" selection-end-line="732" selection-end-column="70" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/LoginController.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="312">
-          <caret line="78" column="15" selection-start-line="78" selection-start-column="15" selection-end-line="78" selection-end-column="15" />
-          <folding>
-            <element signature="e#50#100#0#PHP" expanded="true" />
-          </folding>
-        </state>
-      </provider>
+    <entry file="file://$PROJECT_DIR$/Modules/Mine/Routes/api.php">
+      <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Providers/AuthServiceProvider.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="571">
-          <caret line="38" column="16" selection-start-line="38" selection-start-column="16" selection-end-line="38" selection-end-column="16" />
-          <folding>
-            <element signature="e#33#116#0#PHP" expanded="true" />
-          </folding>
-        </state>
-      </provider>
+    <entry file="file://$PROJECT_DIR$/Modules/Mine/Database/Migrations/.gitkeep">
+      <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/login.blade.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Database/Migrations/2021_04_15_025757_create_menus_table.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="245">
-          <caret line="162" column="41" selection-start-line="162" selection-start-column="41" selection-end-line="162" selection-end-column="41" />
-          <folding>
-            <element signature="n#style#0;n#form#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
-          </folding>
+        <state relative-caret-position="441">
+          <caret line="23" column="45" selection-start-line="23" selection-start-column="45" selection-end-line="23" selection-end-column="45" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Database/Migrations/2021_04_15_025757_create_menus_table.php">
+    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="546">
-          <caret line="28" column="62" selection-start-line="28" selection-start-column="62" selection-end-line="28" selection-end-column="62" />
+        <state relative-caret-position="-2792">
+          <caret line="12" column="6" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/public/index.php">
+    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Database/Schema/ColumnDefinition.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-125" />
+        <state relative-caret-position="260">
+          <caret line="14" column="3" selection-start-line="14" selection-start-column="3" selection-end-line="14" selection-end-column="3" />
+        </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/index.blade.php">
+    <entry file="file://$PROJECT_DIR$/composer.json">
       <provider selected="true" editor-type-id="text-editor">
-        <state>
-          <caret column="27" selection-start-column="27" selection-end-column="27" />
-        </state>
+        <state relative-caret-position="-989" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/breadcrumb.blade.php">
+    <entry file="file://$PROJECT_DIR$/.idea/vcs.xml">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/side_menu.blade.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Mine/Database/Migrations/2021_04_16_083654_create_mine_list_table.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="21">
-          <caret line="1" column="42" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="42" />
+        <state relative-caret-position="379">
+          <caret line="22" column="27" selection-start-line="22" selection-start-column="27" selection-end-line="22" selection-end-column="27" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/symfony/console/Helper/Helper.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/MenusController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-1430" />
+        <state relative-caret-position="-833">
+          <caret line="24" column="45" selection-start-line="24" selection-start-column="33" selection-end-line="24" selection-end-column="45" />
+        </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/layouts/sub.blade.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Entities/Menu.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="840">
-          <caret line="40" column="9" lean-forward="true" selection-start-line="40" selection-start-column="9" selection-end-line="40" selection-end-column="9" />
-          <folding>
-            <element signature="n#style#0;n#a#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
-            <element signature="n#style#0;n#i#0;n#a#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
-          </folding>
+        <state relative-caret-position="210">
+          <caret line="10" lean-forward="true" selection-start-line="10" selection-end-line="10" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/template_tree_list.blade.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Mine/Entities/MineList.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="231">
-          <caret line="11" column="43" selection-start-line="11" selection-start-column="43" selection-end-line="11" selection-end-column="43" />
+        <state relative-caret-position="189">
+          <caret line="10" column="33" selection-start-line="10" selection-start-column="33" selection-end-line="10" selection-end-column="33" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Http/Request.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/AdminController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="126">
-          <caret line="14" column="6" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
+        <state relative-caret-position="256">
+          <caret line="28" column="32" selection-start-line="28" selection-start-column="32" selection-end-line="28" selection-end-column="32" />
+          <folding>
+            <element signature="e#50#94#0#PHP" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Requests/MenusRequest.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Services/MenusService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="147">
-          <caret line="12" column="6" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" />
+        <state relative-caret-position="-2975">
+          <caret line="32" column="32" selection-start-line="32" selection-start-column="20" selection-end-line="32" selection-end-column="32" />
+          <folding>
+            <element signature="e#128#165#0#PHP" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/overtrue/pinyin/src/const.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Mine/Services/MineServices.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="84">
-          <caret line="11" column="8" selection-start-line="11" selection-start-column="8" selection-end-line="11" selection-end-column="8" />
+        <state relative-caret-position="63">
+          <caret line="8" selection-start-line="8" selection-end-line="15" selection-end-column="19" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vendor/overtrue/pinyin/src/Pinyin.php">
+    <entry file="file://$PROJECT_DIR$/app/Enum/CommonEnum.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="6342">
-          <caret line="309" lean-forward="true" selection-start-line="309" selection-end-line="309" />
+        <state relative-caret-position="210">
+          <caret line="15" column="41" lean-forward="true" selection-start-line="11" selection-start-column="4" selection-end-line="15" selection-end-column="41" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/app/Helpers.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Enum/UserEnum.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="445">
-          <caret line="48" column="5" selection-start-line="48" selection-start-column="5" selection-end-line="48" selection-end-column="5" />
+        <state relative-caret-position="105">
+          <caret line="10" column="14" lean-forward="true" selection-start-line="10" selection-start-column="14" selection-end-line="10" selection-end-column="14" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-15.log">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/app/User.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Database/Migrations/2021_04_20_071702_create_camera_field_list.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="208">
-          <caret line="10" column="19" lean-forward="true" selection-start-line="10" selection-start-column="19" selection-end-line="10" selection-end-column="19" />
-          <folding>
-            <element signature="e#23#63#0#PHP" expanded="true" />
-          </folding>
+        <state relative-caret-position="315">
+          <caret line="17" column="32" selection-start-line="17" selection-start-column="32" selection-end-line="17" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Services/FilterService.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Mine/Routes/web.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-269">
-          <caret line="13" column="27" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
+        <state relative-caret-position="252">
+          <caret line="21" column="59" selection-start-line="21" selection-start-column="59" selection-end-line="21" selection-end-column="59" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Services/MenusService.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/template_tree_item.blade.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="42">
-          <caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="14" selection-end-column="19" />
-          <folding>
-            <element signature="e#128#165#0#PHP" expanded="true" />
-          </folding>
-        </state>
+        <state relative-caret-position="-57" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/.env">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/template_tree_list.blade.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-51" />
+        <state relative-caret-position="263">
+          <caret line="59" column="53" selection-start-line="59" selection-start-column="35" selection-end-line="59" selection-end-column="53" />
+        </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/template_table_view.blade.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Auxiliary/View/TreeAuxiliary.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="210">
-          <caret line="10" column="27" lean-forward="true" selection-start-line="10" selection-start-column="27" selection-end-line="10" selection-end-column="27" />
+        <state relative-caret-position="253">
+          <caret line="25" column="16" selection-start-line="25" selection-start-column="16" selection-end-line="25" selection-end-column="16" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Entities/Menu.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Auxiliary/View/TableAuxiliary.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="210">
-          <caret line="10" lean-forward="true" selection-start-line="10" selection-end-line="10" />
+        <state relative-caret-position="291">
+          <caret line="101" column="58" selection-start-line="101" selection-start-column="11" selection-end-line="101" selection-end-column="58" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Auxiliary/View/TableAuxiliary.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Database/Migrations/2021_04_20_082221_create_camera_list_table.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="302">
-          <caret line="112" column="30" lean-forward="true" selection-start-line="112" selection-start-column="30" selection-end-line="112" selection-end-column="30" />
+        <state relative-caret-position="273">
+          <caret line="15" column="35" selection-start-line="15" selection-start-column="24" selection-end-line="15" selection-end-column="35" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/template_from.blade.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Entities/CameraFieldList.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="245">
-          <caret line="68" column="8" lean-forward="true" selection-start-line="68" selection-start-column="8" selection-end-line="68" selection-end-column="8" />
-          <folding>
-            <element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
-            <element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
-            <element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
-          </folding>
+        <state relative-caret-position="42">
+          <caret line="2" selection-start-line="2" selection-end-line="14" selection-end-column="1" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/MenusController.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Entities/CameraList.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="140">
-          <caret line="24" column="45" selection-start-line="24" selection-start-column="33" selection-end-line="24" selection-end-column="45" />
+        <state relative-caret-position="105">
+          <caret line="6" column="16" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="16" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/layouts/master.blade.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Routes/web.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="559">
-          <caret line="120" column="26" lean-forward="true" selection-start-line="104" selection-start-column="14" selection-end-line="120" selection-end-column="26" />
+        <state relative-caret-position="488">
+          <caret line="34" column="55" selection-start-line="34" selection-start-column="47" selection-end-line="34" selection-end-column="55" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-16.log">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Auxiliary/View/FromAuxiliary.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="372">
-          <caret line="732" column="70" selection-start-line="732" selection-start-column="55" selection-end-line="732" selection-end-column="70" />
+        <state relative-caret-position="242">
+          <caret line="160" column="28" selection-start-line="160" selection-start-column="20" selection-end-line="160" selection-end-column="28" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Enum/UserEnum.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Traits/ClassifyMethod.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="273">
-          <caret line="18" column="24" selection-start-line="18" selection-start-column="10" selection-end-line="18" selection-end-column="24" />
+        <state relative-caret-position="172">
+          <caret line="113" column="20" selection-start-line="113" selection-start-column="20" selection-end-line="113" selection-end-column="20" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/BaseController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="151">
-          <caret line="224" column="23" selection-start-line="224" selection-start-column="23" selection-end-line="224" selection-end-column="23" />
+        <state relative-caret-position="491">
+          <caret line="192" column="58" selection-start-line="192" selection-start-column="45" selection-end-line="192" selection-end-column="58" />
           <folding>
             <element signature="e#136#193#0#PHP" expanded="true" />
           </folding>
@@ -740,55 +727,75 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/Modules/Admin/Services/UsersService.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="214">
-          <caret line="107" column="33" selection-start-line="107" selection-start-column="33" selection-end-line="107" selection-end-column="33" />
+        <state relative-caret-position="463">
+          <caret line="104" column="23" selection-start-line="99" selection-start-column="8" selection-end-line="104" selection-end-column="23" />
           <folding>
             <element signature="e#128#141#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Mine/Routes/api.php">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/AdminController.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/UsersController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="277">
-          <caret line="29" column="30" selection-start-line="29" selection-start-column="30" selection-end-line="29" selection-end-column="30" />
+        <state relative-caret-position="1473">
+          <caret line="96" column="37" selection-start-line="96" selection-start-column="37" selection-end-line="96" selection-end-column="37" />
           <folding>
-            <element signature="e#50#94#0#PHP" expanded="true" />
+            <element signature="e#136#149#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Mine/Routes/web.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Resources/views/component/template_from.blade.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="126">
-          <caret line="15" column="44" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="44" />
+        <state relative-caret-position="-4022">
+          <caret line="146" column="48" lean-forward="true" selection-start-line="146" selection-start-column="48" selection-end-line="146" selection-end-column="48" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Routes/web.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Admin/Enum/AdminEnum.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="173">
-          <caret line="19" column="10" selection-start-line="19" selection-start-column="10" selection-end-line="19" selection-end-column="10" />
+        <state relative-caret-position="252">
+          <caret line="17" column="30" selection-start-line="17" selection-start-column="10" selection-end-line="17" selection-end-column="30" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Admin/Http/Controllers/UsersController.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Mine/Http/Controllers/MineController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="254">
-          <caret line="28" column="42" selection-start-line="28" selection-start-column="26" selection-end-line="28" selection-end-column="42" />
+        <state relative-caret-position="310">
+          <caret line="44" column="49" lean-forward="true" selection-start-line="42" selection-start-column="8" selection-end-line="44" selection-end-column="49" />
           <folding>
-            <element signature="e#136#149#0#PHP" expanded="true" />
+            <element signature="e#49#93#0#PHP" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/Modules/Mine/Http/Controllers/MineController.php">
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Services/CameraServices.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="164">
+          <caret line="19" column="40" selection-start-line="19" selection-start-column="27" selection-end-line="19" selection-end-column="40" />
+          <folding>
+            <element signature="e#129#166#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Routes/web.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="273">
+          <caret line="22" column="35" selection-start-line="22" selection-start-column="29" selection-end-line="22" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/storage/logs/laravel-2021-04-20.log">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Modules/Camera/Http/Controllers/CameraController.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="378">
-          <caret line="20" column="42" selection-start-line="20" selection-start-column="42" selection-end-line="20" selection-end-column="42" />
+        <state relative-caret-position="424">
+          <caret line="105" column="37" selection-start-line="105" selection-start-column="37" selection-end-line="105" selection-end-column="37" />
+          <folding>
+            <element signature="e#51#95#0#PHP" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>

+ 20 - 0
Modules/Admin/Enum/AdminEnum.php

@@ -0,0 +1,20 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: qiuzijian
+ * Date: 2021-04-20
+ * Time: 15:37
+ */
+
+namespace Modules\Admin\Enum;
+
+class AdminEnum
+{
+    //后台状态返回
+    const RETURN_SUCCESS       = '成功';
+    const USER_ALREADY_EXIST   = '该用户编码已存在';
+    const DATABASE_ERROR       = '数据库异常失败';
+    const USER_NOT_EXIST       = '后台用户不存在';
+    const RECORD_ALREADY_EXIST = '该记录已存在';
+    const RECORD_NOT_EXIST     = '记录不存在';
+}

+ 0 - 6
Modules/Admin/Enum/UserEnum.php

@@ -12,10 +12,4 @@ class UserEnum
 {
     //后台用户默认密码
     const ADMIN_USER_DETAULT_PASSWORD = 'Zhks123456+';
-
-    //后台状态返回
-    const RETURN_SUCCESS     = '成功';
-    const USER_ALREADY_EXIST = '该用户编码已存在';
-    const DATABASE_ERROR     = '数据库异常失败';
-    const USER_NOT_EXIST     = '后台用户不存在';
 }

+ 5 - 3
Modules/Admin/Http/Controllers/UsersController.php

@@ -22,12 +22,14 @@ class UsersController extends BaseController
     {
         parent::__construct();
         $this->menusActive[0] = 'adminUsers';
-        $this->menusActive[1] = 'adminUserslist';
+        $this->menusActive[1] = 'adminUsersList';
     }
 
     //用户列表
-    public function index(Request $request)
+    public function userList(Request $request)
     {
+        $this->menusActive[0] = 'adminUsers';
+        $this->menusActive[1] = 'adminUsersList';
         $query = User::where('id', '>', 0);
 
         if ($request->has('name_staffNum_mobile')) {
@@ -73,7 +75,7 @@ class UsersController extends BaseController
     }
 
     //查看用户详情
-    public function detail(Request $request)
+    public function userDetail(Request $request)
     {
         $staff_num = $request->input('staff_num');
         if (empty($staff_num)) {

+ 3 - 3
Modules/Admin/Routes/web.php

@@ -31,9 +31,9 @@ Route::prefix('admin')->group(function() {
     Route::post('/menus/del', 'MenusController@delPost');
 
     //用户管理
-    Route::get('/users');
-    Route::get('/users/list', 'UsersController@index');
-    Route::get('/users/list/view', 'UsersController@detail');
+    Route::get('/users', 'UsersController@index');
+    Route::get('/users/list', 'UsersController@userList');
+    Route::get('/users/list/view', 'UsersController@userDetail');
     Route::get('/users/list/add', 'UsersController@add');
     Route::post('/users/list/add', 'UsersController@addPost');
     Route::get('/users/list/edit', 'UsersController@edit');

+ 13 - 12
Modules/Admin/Services/UsersService.php

@@ -11,6 +11,7 @@ namespace Modules\Admin\Services;
 use App\User;
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Log;
+use Modules\Admin\Enum\AdminEnum;
 use Modules\Admin\Enum\UserEnum;
 
 class UsersService{
@@ -19,13 +20,13 @@ class UsersService{
     public static function addAdminUser($params)
     {
         $result['status'] = true;
-        $result['msg']    = UserEnum::RETURN_SUCCESS;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
 
         //判断该用户编码是否已存在
         $query = User::where('staff_num', $params['staff_num'])->first();
         if ($query) {
             $result['status'] = false;
-            $result['msg']    = UserEnum::USER_ALREADY_EXIST;
+            $result['msg']    = AdminEnum::USER_ALREADY_EXIST;
             return $result;
         }
 
@@ -43,7 +44,7 @@ class UsersService{
 
         if (!$res) {
             $result['status'] = false;
-            $result['msg']    = UserEnum::DATABASE_ERROR;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
         }
 
         return $result;
@@ -53,13 +54,13 @@ class UsersService{
     public static function editAdminUser($params)
     {
         $result['status'] = true;
-        $result['msg']    = UserEnum::RETURN_SUCCESS;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
 
         $query = User::where('staff_num', $params['staff_num'])->first();
 
         if (!$query) {
             $result['status'] = true;
-            $result['msg']    = UserEnum::USER_NOT_EXIST;
+            $result['msg']    = AdminEnum::USER_NOT_EXIST;
             return $result;
         }
 
@@ -74,7 +75,7 @@ class UsersService{
 
         if (!$res) {
             $result['status'] = false;
-            $result['msg']    = UserEnum::DATABASE_ERROR;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
         }
 
         return $result;
@@ -84,13 +85,13 @@ class UsersService{
     public static function delAdminUser($params)
     {
         $result['status'] = true;
-        $result['msg']    = UserEnum::RETURN_SUCCESS;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
 
         $query = User::where('staff_num', $params['staff_num'])->first();
 
         if (!$query) {
             $result['status'] = true;
-            $result['msg']    = UserEnum::USER_NOT_EXIST;
+            $result['msg']    = AdminEnum::USER_NOT_EXIST;
             return $result;
         }
 
@@ -98,7 +99,7 @@ class UsersService{
 
         if (!$res) {
             $result['status'] = false;
-            $result['msg']    = UserEnum::DATABASE_ERROR;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
         }
 
         return $result;
@@ -108,13 +109,13 @@ class UsersService{
     public static function resetPassword($params)
     {
         $result['status'] = true;
-        $result['msg']    = UserEnum::RETURN_SUCCESS;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
 
         $query = User::where('staff_num', $params['staff_num'])->first();
 
         if (!$query) {
             $result['status'] = true;
-            $result['msg']    = UserEnum::USER_NOT_EXIST;
+            $result['msg']    = AdminEnum::USER_NOT_EXIST;
             return $result;
         }
 
@@ -126,7 +127,7 @@ class UsersService{
 
         if (!$res) {
             $result['status'] = false;
-            $result['msg']    = UserEnum::DATABASE_ERROR;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
         }
 
         return $result;

+ 258 - 0
Modules/Admin/Traits/ClassifyMethod.php

@@ -0,0 +1,258 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: qiuzijian
+ * Date: 2021-04-17
+ * Time: 17:16
+ */
+
+namespace Modules\Admin\Traits;
+
+use Illuminate\Support\Arr;
+use Illuminate\Support\Facades\Cache;
+
+trait ClassifyMethod
+{
+    /**
+     * 模型对象
+     * @var
+     */
+    protected $classify;
+
+    /**
+     * 缓存名
+     * @var string
+     */
+    public $cacheTitle = 'Classify';
+
+    /**
+     * 排序方式
+     * @var string
+     */
+    public $sort = 'desc';
+
+    /**
+     * 删除
+     * @param $classifyInfo
+     * @return mixed
+     */
+    public function add($classifyInfo)
+    {
+        return $this->addOrEdit($classifyInfo);
+    }
+
+    /**
+     * 添加
+     * @param $classifyInfo
+     * @return bool
+     */
+    public function edit($classifyInfo)
+    {
+        if (!isset($classifyInfo['id'])) {
+            return false;
+        }
+        return $this->addOrEdit($classifyInfo);
+    }
+
+    /**
+     * 递归删除
+     * @param $classifyId
+     * @return bool
+     */
+    public function del($classifyId)
+    {
+        if (empty($classifyId)) {
+            return false;
+        }
+        $classify = $this->classify->find($classifyId);
+//        $subClassifys = $this->classify->where('parent_id', $classifyId)->get()->toArray();
+//        if (count($subClassifys) > 0) {  // 如果有子菜单将子菜单删除
+//            foreach ($subClassifys as $subClassify) {
+//                self::del($subClassify['id']);
+//            }
+//        }
+        if ($classify) {
+            $this->classify->where('degree', 'like', $classify->degree . '|%')->delete();
+            $classify->delete();
+        }
+        $this->sortClassifyAndddCache(1);
+        $this->sortClassifyAndddCache();
+        return true;
+    }
+
+    /**
+     * 获取单个信息
+     * @param $classifyId
+     * @return false
+     */
+    public function getOneInfo($classifyId)
+    {
+        if (!$classifyId) {
+            return false;
+        }
+        return $this->classify->find($classifyId);
+    }
+
+    /**
+     * 获取所有
+     * @return mixed
+     */
+    public function getAll($show = '')
+    {
+        if (!empty($show)) {
+            return $this->classify->where('show', $show)->all();
+        }
+        return $this->classify->all();
+    }
+
+    /**
+     * 获取层级列表
+     * @param string $show
+     * @param string $category
+     * @return array|mixed|string
+     */
+    public function getTierList($show = '', $degree = '')
+    {
+        // 判断并获取缓存
+        if (!empty($show)) {
+            if (Cache::has($this->cacheTitle . 'ShowList')) {
+                $classifyList = Cache::get($this->cacheTitle . 'ShowList');
+            } else {
+                $classifyList = $this->sortClassifyAndddCache(1);
+            }
+        } else {
+            if (Cache::has($this->cacheTitle . 'List')) {
+                $classifyList = Cache::get($this->cacheTitle . 'List');
+            } else {
+                $classifyList = $this->sortClassifyAndddCache();
+            }
+        }
+
+        $classifyList = empty($classifyList) ? [] : $classifyList;
+        if (empty($degree)) {
+            return $classifyList;
+        }
+
+        return Arr::get($classifyList, $degree);
+
+    }
+
+
+    /**
+     * 递归岗位数据
+     * @param     $classify
+     * @param int $pid
+     * @return array|string
+     */
+    public function sortClassify($classify, $pid = '0')
+    {
+        $arr = [];
+        if (empty($classify)) {
+            return '';
+        }
+        $num = 0;
+        foreach ($classify as $key => $value) {
+            if ($value['parent_id'] == $pid) {
+                $arr[$num]          = $value;
+                $arr[$num]['child'] = self::sortClassify($classify, $value['id']);
+                if (count($arr[$num]['child']) == 0) {
+                    unset($arr[$num]['child']);
+                }
+                $num++;
+            }
+        }
+        return $arr;
+    }
+
+    /**
+     * 排序子岗位并缓存
+     * ---------------------------------
+     * array_column($array,$name)
+     * $array => 要查询的数组
+     * $name  => 在数组中要返回的字段值
+     *----------------------------------
+     * array_multisort($array1,$rule,$array2)
+     * $array1 => 规定数组(规定以这个数组来排序)
+     * $rule   => 规定排列顺序。
+     * 可能的值:
+     *   SORT_ASC - 默认。按升序排列 (A-Z)。
+     *   SORT_DESC - 按降序排列 (Z-A)。
+     * $array2 => 要规定的数组。(要排序的数组)
+     */
+    public function sortClassifyAndddCache($show = '')
+    {
+        $classify = $this->classify;
+        if (!empty($show)) {
+            $classify = $classify->where('show', $show);
+        }
+        $classify = $classify->orderBy('sort', $this->sort)->get()->toArray();
+        if ($classify) {
+            $classifyList = $this->sortClassify($classify);
+            foreach ($classifyList as $key => $value) {
+                if (isset($value['child'])) {
+                    $sort = array_column($value['child'], 'sort');
+                    if ($this->sort == 'desc') {
+                        array_multisort($sort, SORT_ASC, $value['child']);
+                    } else {
+                        array_multisort($sort, SORT_DESC, $value['child']);
+                    }
+                }
+            }
+            if (!empty($show)) {
+                Cache::forever($this->cacheTitle . 'ShowList', $classifyList);
+            } else {
+                Cache::forever($this->cacheTitle . 'List', $classifyList);
+            }
+            return $classifyList;
+        }
+        Cache::forget($this->cacheTitle . 'List');
+        Cache::forget($this->cacheTitle . 'ShowList');
+        return '';
+    }
+
+    protected function addOrEdit($classifyInfo)
+    {
+        // 判断层级
+        $classifyInfo['parent_id'] = $classifyInfo['parent_id'] ?? 0;
+        if ($classifyInfo['parent_id'] == 0) {
+            $classifyInfo['tier'] = 1;
+            $degree               = '';
+        } else {
+            $classifyParent       = $this->classify->find($classifyInfo['parent_id']);
+            $classifyInfo['tier'] = $classifyParent->tier + 1;
+            $degree               = $classifyParent->degree . '|';
+        }
+        // 将标题转化成拼音作为标记
+        if (empty($classifyInfo['slug'])) {
+            $classifyInfo['slug'] = implode(array_map(function ($v) {
+                return ucfirst($v);
+            }, pinyin($classifyInfo['title'])));
+        }
+
+        if (isset($classifyInfo['id'])) {
+            $curClassifyInfo = $this->classify->find($classifyInfo['id']);
+        }
+
+        $classify         = $this->classify->updateOrCreate(['id' => $classifyInfo['id'] ?? ''], $classifyInfo);
+        $classify->degree = $degree . $classify->id;
+        $classify->save();
+
+        // 更新子集
+        if (isset($classifyInfo['id']) && $curClassifyInfo['degree'] != $classify['degree']) {  // 如果改变父级,联动改变其下属所有子集
+            $diffTier       = $curClassifyInfo['tier'] - $classifyInfo['tier'];
+            $childClassifys = $this->classify->where('degree', 'like', $curClassifyInfo['degree'] . '|%')->get();
+            foreach ($childClassifys as $childClassify) {
+                $degree            = str_replace($curClassifyInfo['degree'] . '|', $classify['degree'] . '|', $childClassify['degree']);
+                $_classify         = $this->classify->where('id', $childClassify['id'])->first();
+                $_classify->degree = $degree;
+                $_classify->tier   = $_classify->tier - $diffTier;
+                $_classify->save();
+            }
+        }
+
+        $this->sortClassifyAndddCache(1);
+        $this->sortClassifyAndddCache();
+
+        return $classify;
+    }
+}

+ 0 - 0
Modules/Camera/Config/.gitkeep


+ 5 - 0
Modules/Camera/Config/config.php

@@ -0,0 +1,5 @@
+<?php
+
+return [
+    'name' => 'Camera'
+];

+ 0 - 0
Modules/Camera/Console/.gitkeep


+ 0 - 0
Modules/Camera/Database/Migrations/.gitkeep


+ 33 - 0
Modules/Camera/Database/Migrations/2021_04_20_071702_create_camera_field_list.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateCameraFieldList extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('camera_field_list', function (Blueprint $table) {
+            $table->bigIncrements('id')->comment('摄像头链接生成字段列表');
+            $table->string('field_name', 20)->comment('字段名称');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('camera_field_list');
+    }
+}

+ 34 - 0
Modules/Camera/Database/Migrations/2021_04_20_082221_create_camera_list_table.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateCameraListTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('camera_list', function (Blueprint $table) {
+            $table->bigIncrements('id')->comment('摄像头管理表');
+            $table->integer('mine_id')->index()->comment('矿区id(mine_list表id)');
+            $table->string('camera_url')->comment('拼接完成的请求链接');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('camera_list');
+    }
+}

+ 0 - 0
Modules/Camera/Database/Seeders/.gitkeep


+ 21 - 0
Modules/Camera/Database/Seeders/CameraDatabaseSeeder.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace Modules\Camera\Database\Seeders;
+
+use Illuminate\Database\Seeder;
+use Illuminate\Database\Eloquent\Model;
+
+class CameraDatabaseSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        Model::unguard();
+
+        // $this->call("OthersTableSeeder");
+    }
+}

+ 0 - 0
Modules/Camera/Database/factories/.gitkeep


+ 0 - 0
Modules/Camera/Entities/.gitkeep


+ 15 - 0
Modules/Camera/Entities/CameraFieldList.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace Modules\Camera\Entities;
+
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class CameraFieldList extends Model
+{
+    use SoftDeletes;
+    protected $table        = 'camera_field_list';
+    public    $incrementing = false;
+    protected $keyType      = 'string';
+    protected $fillable     = [];
+}

+ 14 - 0
Modules/Camera/Entities/CameraList.php

@@ -0,0 +1,14 @@
+<?php
+namespace Modules\Camera\Entities;
+
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class CameraList extends Model
+{
+    use SoftDeletes;
+    protected $table        = 'camera_list';
+    public    $incrementing = false;
+    protected $keyType      = 'string';
+    protected $fillable     = [];
+}

+ 0 - 0
Modules/Camera/Http/Controllers/.gitkeep


+ 208 - 0
Modules/Camera/Http/Controllers/CameraController.php

@@ -0,0 +1,208 @@
+<?php
+
+namespace Modules\Camera\Http\Controllers;
+
+use Illuminate\Contracts\Support\Renderable;
+use Illuminate\Http\Request;
+use Illuminate\Routing\Controller;
+use Illuminate\Support\Facades\Log;
+use Modules\Admin\Auxiliary\View\FromAuxiliary;
+use Modules\Admin\Auxiliary\View\TableAuxiliary;
+use Modules\Admin\Auxiliary\View\TreeAuxiliary;
+use Modules\Admin\Http\Controllers\BaseController;
+use Modules\Camera\Entities\CameraFieldList;
+use Modules\Camera\Entities\CameraList;
+use Modules\Camera\Services\CameraServices;
+use Modules\Mine\Services\MineServices;
+
+class CameraController extends BaseController
+{
+    /**
+     * Display a listing of the resource.
+     * @return Renderable
+     */
+    public function index()
+    {
+        return view('camera::index');
+    }
+
+    //摄像头列表
+    public function cameraList(Request $request)
+    {
+        $this->menusActive[0] = 'adminCamera';
+        $this->menusActive[1] = 'adminCameraList';
+
+        $camera_list = CameraList::join(
+            'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
+        )->select(
+            'camera_list.id',
+            'camera_list.camera_url',
+            'mine_list.title'
+        )->get();
+
+        $tableObj             = new TableAuxiliary('camera/list', $camera_list);
+        $tableObj->topActions = ['export', 'import', 'importTemplate'];
+        $tableObj->column('title', '矿区名称');
+        $tableObj->column('camera_url', '链接');
+        return $this->tableList($tableObj);
+    }
+
+    //添加摄像头列表
+    public function cameraListAdd(Request $request)
+    {
+        $mineService = new MineServices();
+        $mineService->initMineList();
+        $titleList = $mineService->getTierList();
+
+//        $field_list = CameraFieldList::select(
+//            [
+//                'id',
+//                'field_name'
+//            ]
+//        )->get();
+//
+//        $field_arr = [];
+//        foreach ($field_list as $key => $val) {
+//            $field_arr[$val['id']] = $val['field_name'];
+//        }
+
+        $formObj = new FromAuxiliary('camera/list/add');
+        $formObj->tree_select('mine_id', '矿区单位', $titleList);
+        $formObj->input('camera_url', '请求链接');
+//        $formObj->checkbox('camera_field', '字段', $field_arr);
+        $formObj->title = '添加请求链接';
+        return $this->from($formObj);
+    }
+
+    //添加摄像头列表操作
+    public function cameraListAddPost(Request $request)
+    {
+        if (!$request->input('mine_id')) {
+            return $this->error(1, '请选择矿区单位');
+        }
+
+        if (!$request->input('camera_url')) {
+            return $this->error(1, '请输入请求链接');
+        }
+
+        $result = CameraServices::addCameraList($request->all());
+
+        if (!$result['status']) {
+            return $this->error(1, $result['msg']);
+        }
+
+        return $this->redirect('admin/camera/list');
+    }
+
+
+    //导入摄像头列表
+    public function cameraListImport(Request $request)
+    {
+        if (!$request->hasFile('excel')) {
+            return $this->error(9001, '缺少上传文件');
+        }
+        ini_set('memory_limit', '500M');
+        set_time_limit(300);
+        $reader = ReaderEntityFactory::createReaderFromFile($request->file('excel')->getClientOriginalName());
+        $reader->open($request->file('excel')->getRealPath());
+        $sheet = $reader->getSheetIterator();  // 获取sheet对象
+        $sheet->rewind();  // 指定当前sheet序数
+        $sheet = $sheet->current();  // 获取指定sheet
+        $arr   = [];
+        foreach ($sheet->getRowIterator() as $index => $row) {  // 读取每行记录
+            if ($index == 1) {
+                continue;
+            }
+            $arr[] = $row->toArray();
+        }
+        $reader->close();
+        MaterialsClassifyExcel::dispatch($arr);
+        return $this->success();
+    }
+
+    //字段列表
+    public function fieldList(Request $request)
+    {
+        $this->menusActive[0] = 'adminCamera';
+        $this->menusActive[1] = 'adminCameraFieldlist';
+
+        $field_list = CameraFieldList::get();
+
+        $tableObj             = new TableAuxiliary('camera/field_list', $field_list);
+        $tableObj->actionBtns = ['edit', 'del'];
+        $tableObj->column('field_name', '字段名称');
+        return $this->tableList($tableObj);
+    }
+
+    //添加字段
+    public function fieldListAdd(Request $request)
+    {
+        $formObj = new FromAuxiliary('camera/field_list/add');
+        $formObj->input('field_name', '字段名称');
+        $formObj->title = '添加字段';
+        return $this->from($formObj);
+    }
+
+    //添加字段操作
+    public function fieldListAddPost(Request $request)
+    {
+        if (!$request->input('field_name')) {
+            return $this->error(1, '请输入字段名称');
+        }
+
+        $result = CameraServices::addCameraFieldList($request->all());
+
+        if (!$result['status']) {
+            return $this->error(1, $result['msg']);
+        }
+
+        return $this->redirect('admin/camera/field_list');
+    }
+
+    //编辑字段
+    public function fieldListEdit(Request $request)
+    {
+        $field_list_id = $request->input('id');
+
+        if (empty($field_list_id)) {
+            return $this->redirect('admin/camera/field_list');
+        }
+
+        $field_list = CameraFieldList::find($field_list_id);
+
+        $fromObj = new FromAuxiliary('camera/field_list/edit', $field_list);
+        $fromObj->input("field_name", "字段名称", $field_list->field_name);
+        $fromObj->title = '修改字段';
+        return $this->from($fromObj);
+    }
+
+    //编辑字段操作
+    public function fieldListEditPost(Request $request)
+    {
+        if (!$request->input('field_name')) {
+            return $this->error(1, '请输入字段名称');
+        }
+
+        $result = CameraServices::editCameraFieldList($request->all());
+
+        if (!$result['status']) {
+            return $this->error(1, $result['msg']);
+        }
+
+        return $this->redirect('admin/camera/field_list');
+    }
+
+    //删除字段
+    public function fieldListDelPost(Request $request)
+    {
+        if (!$request->has('id')) {
+            return $this->error(1, '缺少必要参数');
+        }
+
+        $result = CameraServices::delCameraFieldList($request->all());
+        if (!$result['status']) {
+            return $this->error(1, $result['msg']);
+        }
+        return $this->success();
+    }
+}

+ 0 - 0
Modules/Camera/Http/Middleware/.gitkeep


+ 0 - 0
Modules/Camera/Http/Requests/.gitkeep


+ 0 - 0
Modules/Camera/Providers/.gitkeep


+ 125 - 0
Modules/Camera/Providers/CameraServiceProvider.php

@@ -0,0 +1,125 @@
+<?php
+
+namespace Modules\Camera\Providers;
+
+use Illuminate\Support\ServiceProvider;
+use Illuminate\Database\Eloquent\Factory;
+
+class CameraServiceProvider extends ServiceProvider
+{
+    /**
+     * @var string $moduleName
+     */
+    protected $moduleName = 'Camera';
+
+    /**
+     * @var string $moduleNameLower
+     */
+    protected $moduleNameLower = 'camera';
+
+    /**
+     * Boot the application events.
+     *
+     * @return void
+     */
+    public function boot()
+    {
+        $this->registerTranslations();
+        $this->registerConfig();
+        $this->registerViews();
+        $this->registerFactories();
+        $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations'));
+    }
+
+    /**
+     * Register the service provider.
+     *
+     * @return void
+     */
+    public function register()
+    {
+        $this->app->register(RouteServiceProvider::class);
+    }
+
+    /**
+     * Register config.
+     *
+     * @return void
+     */
+    protected function registerConfig()
+    {
+        $this->publishes([
+            module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'),
+        ], 'config');
+        $this->mergeConfigFrom(
+            module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower
+        );
+    }
+
+    /**
+     * Register views.
+     *
+     * @return void
+     */
+    public function registerViews()
+    {
+        $viewPath = resource_path('views/modules/' . $this->moduleNameLower);
+
+        $sourcePath = module_path($this->moduleName, 'Resources/views');
+
+        $this->publishes([
+            $sourcePath => $viewPath
+        ], ['views', $this->moduleNameLower . '-module-views']);
+
+        $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
+    }
+
+    /**
+     * Register translations.
+     *
+     * @return void
+     */
+    public function registerTranslations()
+    {
+        $langPath = resource_path('lang/modules/' . $this->moduleNameLower);
+
+        if (is_dir($langPath)) {
+            $this->loadTranslationsFrom($langPath, $this->moduleNameLower);
+        } else {
+            $this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower);
+        }
+    }
+
+    /**
+     * Register an additional directory of factories.
+     *
+     * @return void
+     */
+    public function registerFactories()
+    {
+        if (! app()->environment('production') && $this->app->runningInConsole()) {
+            app(Factory::class)->load(module_path($this->moduleName, 'Database/factories'));
+        }
+    }
+
+    /**
+     * Get the services provided by the provider.
+     *
+     * @return array
+     */
+    public function provides()
+    {
+        return [];
+    }
+
+    private function getPublishableViewPaths(): array
+    {
+        $paths = [];
+        foreach (\Config::get('view.paths') as $path) {
+            if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
+                $paths[] = $path . '/modules/' . $this->moduleNameLower;
+            }
+        }
+        return $paths;
+    }
+}

+ 69 - 0
Modules/Camera/Providers/RouteServiceProvider.php

@@ -0,0 +1,69 @@
+<?php
+
+namespace Modules\Camera\Providers;
+
+use Illuminate\Support\Facades\Route;
+use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
+
+class RouteServiceProvider extends ServiceProvider
+{
+    /**
+     * The module namespace to assume when generating URLs to actions.
+     *
+     * @var string
+     */
+    protected $moduleNamespace = 'Modules\Camera\Http\Controllers';
+
+    /**
+     * Called before routes are registered.
+     *
+     * Register any model bindings or pattern based filters.
+     *
+     * @return void
+     */
+    public function boot()
+    {
+        parent::boot();
+    }
+
+    /**
+     * Define the routes for the application.
+     *
+     * @return void
+     */
+    public function map()
+    {
+        $this->mapApiRoutes();
+
+        $this->mapWebRoutes();
+    }
+
+    /**
+     * Define the "web" routes for the application.
+     *
+     * These routes all receive session state, CSRF protection, etc.
+     *
+     * @return void
+     */
+    protected function mapWebRoutes()
+    {
+        Route::middleware('web')
+            ->namespace($this->moduleNamespace)
+            ->group(module_path('Camera', '/Routes/web.php'));
+    }
+
+    /**
+     * Define the "api" routes for the application.
+     *
+     * These routes are typically stateless.
+     *
+     * @return void
+     */
+    protected function mapApiRoutes()
+    {
+        Route::prefix('api')
+            ->middleware('api')
+            ->namespace($this->moduleNamespace)
+            ->group(module_path('Camera', '/Routes/api.php'));
+    }
+}

+ 0 - 0
Modules/Camera/Resources/assets/.gitkeep


+ 0 - 0
Modules/Camera/Resources/assets/js/app.js


+ 0 - 0
Modules/Camera/Resources/assets/sass/app.scss


+ 0 - 0
Modules/Camera/Resources/lang/.gitkeep


+ 0 - 0
Modules/Camera/Resources/views/.gitkeep


+ 9 - 0
Modules/Camera/Resources/views/index.blade.php

@@ -0,0 +1,9 @@
+@extends('camera::layouts.master')
+
+@section('content')
+    <h1>Hello World</h1>
+
+    <p>
+        This view is loaded from module: {!! config('camera.name') !!}
+    </p>
+@endsection

+ 19 - 0
Modules/Camera/Resources/views/layouts/master.blade.php

@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <title>Module Camera</title>
+
+       {{-- Laravel Mix - CSS File --}}
+       {{-- <link rel="stylesheet" href="{{ mix('css/camera.css') }}"> --}}
+
+    </head>
+    <body>
+        @yield('content')
+
+        {{-- Laravel Mix - JS File --}}
+        {{-- <script src="{{ mix('js/camera.js') }}"></script> --}}
+    </body>
+</html>

+ 0 - 0
Modules/Camera/Routes/.gitkeep


+ 18 - 0
Modules/Camera/Routes/api.php

@@ -0,0 +1,18 @@
+<?php
+
+use Illuminate\Http\Request;
+
+/*
+|--------------------------------------------------------------------------
+| API Routes
+|--------------------------------------------------------------------------
+|
+| Here is where you can register API routes for your application. These
+| routes are loaded by the RouteServiceProvider within a group which
+| is assigned the "api" middleware group. Enjoy building your API!
+|
+*/
+
+Route::middleware('auth:api')->get('/camera', function (Request $request) {
+    return $request->user();
+});

+ 34 - 0
Modules/Camera/Routes/web.php

@@ -0,0 +1,34 @@
+<?php
+
+/*
+|--------------------------------------------------------------------------
+| Web Routes
+|--------------------------------------------------------------------------
+|
+| Here is where you can register web routes for your application. These
+| routes are loaded by the RouteServiceProvider within a group which
+| contains the "web" middleware group. Now create something great!
+|
+*/
+
+Route::prefix('admin')->group(function() {
+    //摄像头管理
+    Route::get('/camera', 'CameraController@index');
+    Route::get('/camera/list', 'CameraController@cameraList');
+    Route::get('/camera/list/add', 'CameraController@cameraListAdd');
+    Route::post('/camera/list/add', 'CameraController@cameraListAddPost');
+    Route::get('/camera/list/edit', 'CameraController@cameraListEdit');
+    Route::post('/camera/list/edit', 'CameraController@cameraListEditPost');
+    Route::post('/camera/list/del', 'CameraController@cameraListDelPost');
+    Route::any('/camera/list/import', 'CameraController@cameraListImport');
+    Route::get('/camera/list/export', 'CameraController@cameraListExport');
+    Route::get('/camera/list/importTemplate', 'CameraController@cameraListTemplate');
+
+    //摄像头链接生成字段管理
+    Route::get('/camera/field_list', 'CameraController@fieldList');
+    Route::get('/camera/field_list/add', 'CameraController@fieldListAdd');
+    Route::post('/camera/field_list/add', 'CameraController@fieldListAddPost');
+    Route::get('/camera/field_list/edit', 'CameraController@fieldListEdit');
+    Route::post('/camera/field_list/edit', 'CameraController@fieldListEditPost');
+    Route::post('/camera/field_list/del', 'CameraController@fieldListDelPost');
+});

+ 139 - 0
Modules/Camera/Services/CameraServices.php

@@ -0,0 +1,139 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: qiuzijian
+ * Date: 2021-04-20
+ * Time: 15:33
+ */
+
+namespace Modules\Camera\Services;
+
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
+use Modules\Admin\Enum\AdminEnum;
+use Modules\Camera\Entities\CameraFieldList;
+use Modules\Camera\Entities\CameraList;
+
+class CameraServices
+{
+    //添加摄像头链接
+    public static function addCameraList($params)
+    {
+        $result['status'] = true;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
+
+        //判断字段是否已存在
+        $query = CameraList::where('mine_id', $params['mine_id'])->first();
+
+        if ($query) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::RECORD_ALREADY_EXIST;
+            return $result;
+        }
+
+        //入库动作
+        $res = CameraList::insert(
+            [
+                'mine_id'    => $params['mine_id'],
+                'camera_url' => $params['camera_url'],
+                'created_at' => date('Y-m-d H:i:s'),
+                'updated_at' => date('Y-m-d H:i:s'),
+            ]
+        );
+
+        if (!$res) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
+        }
+
+        return $result;
+    }
+
+
+    //添加摄像头链接生成字段
+    public static function addCameraFieldList($params)
+    {
+        $result['status'] = true;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
+
+        //判断字段是否已存在
+        $query = CameraFieldList::where('field_name', $params['field_name'])->first();
+
+        if ($query) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::RECORD_ALREADY_EXIST;
+            return $result;
+        }
+
+        //入库动作
+        $res = CameraFieldList::insert(
+            [
+                'field_name' => $params['field_name'],
+                'created_at' => date('Y-m-d H:i:s'),
+                'updated_at' => date('Y-m-d H:i:s'),
+            ]
+        );
+
+        if (!$res) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
+        }
+
+        return $result;
+    }
+
+    //编辑摄像头链接生成字段
+    public static function editCameraFieldList($params)
+    {
+        $result['status'] = true;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
+
+        //判断字段是否存在
+        $query = CameraFieldList::find($params['id']);
+
+        if (!$query) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::RECORD_NOT_EXIST;
+            return $result;
+        }
+
+        $res = CameraFieldList::where('id', $params['id'])->update(
+            [
+                'field_name' => $params['field_name'],
+                'updated_at' => date('Y-m-d H:i:s'),
+            ]
+        );
+
+        if (!$res) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
+        }
+
+        return $result;
+    }
+
+    //删除摄像头链接生成字段
+    public static function delCameraFieldList($params)
+    {
+        $result['status'] = true;
+        $result['msg']    = AdminEnum::RETURN_SUCCESS;
+
+        //判断字段是否存在
+        $query = CameraFieldList::find($params['id']);
+
+        if (!$query) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::RECORD_NOT_EXIST;
+            return $result;
+        }
+
+        $res = CameraFieldList::where('id', $params['id'])->delete();
+
+        if (!$res) {
+            $result['status'] = false;
+            $result['msg']    = AdminEnum::DATABASE_ERROR;
+        }
+
+        return $result;
+    }
+}

+ 0 - 0
Modules/Camera/Tests/Feature/.gitkeep


+ 0 - 0
Modules/Camera/Tests/Unit/.gitkeep


+ 23 - 0
Modules/Camera/composer.json

@@ -0,0 +1,23 @@
+{
+    "name": "nwidart/camera",
+    "description": "",
+    "authors": [
+        {
+            "name": "Nicolas Widart",
+            "email": "n.widart@gmail.com"
+        }
+    ],
+    "extra": {
+        "laravel": {
+            "providers": [],
+            "aliases": {
+
+            }
+        }
+    },
+    "autoload": {
+        "psr-4": {
+            "Modules\\Camera\\": ""
+        }
+    }
+}

+ 13 - 0
Modules/Camera/module.json

@@ -0,0 +1,13 @@
+{
+    "name": "Camera",
+    "alias": "camera",
+    "description": "",
+    "keywords": [],
+    "order": 0,
+    "providers": [
+        "Modules\\Camera\\Providers\\CameraServiceProvider"
+    ],
+    "aliases": {},
+    "files": [],
+    "requires": []
+}

+ 17 - 0
Modules/Camera/package.json

@@ -0,0 +1,17 @@
+{
+    "private": true,
+    "scripts": {
+        "dev": "npm run development",
+        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
+        "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
+        "watch-poll": "npm run watch -- --watch-poll",
+        "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
+        "prod": "npm run production",
+        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
+    },
+    "devDependencies": {
+        "cross-env": "^7.0",
+        "laravel-mix": "^5.0.1",
+        "laravel-mix-merge-manifest": "^0.1.2"
+    }
+}

+ 14 - 0
Modules/Camera/webpack.mix.js

@@ -0,0 +1,14 @@
+const dotenvExpand = require('dotenv-expand');
+dotenvExpand(require('dotenv').config({ path: '../../.env'/*, debug: true*/}));
+
+const mix = require('laravel-mix');
+require('laravel-mix-merge-manifest');
+
+mix.setPublicPath('../../public').mergeManifest();
+
+mix.js(__dirname + '/Resources/assets/js/app.js', 'js/camera.js')
+    .sass( __dirname + '/Resources/assets/sass/app.scss', 'css/camera.css');
+
+if (mix.inProduction()) {
+    mix.version();
+}

+ 10 - 1
Modules/Mine/Database/Migrations/2021_04_16_083654_create_mine_list_table.php

@@ -14,8 +14,17 @@ class CreateMineListTable extends Migration
     public function up()
     {
         Schema::create('mine_list', function (Blueprint $table) {
-            $table->bigIncrements('id');
+            $table->bigIncrements('id')->comment('矿区列表');
+            $table->integer('parent_id')->index()->comment('父级id');
+            $table->string('title', 100)->comment('矿区标题名称');
+            $table->string('slug')->comment('标识');
+            $table->integer('sort')->default(1)->comment('排序');
+            $table->tinyInteger('tier')->default(1)->comment('层级');
+            $table->string('degree', 30)->nullable()->comment('层级关联');
+            $table->tinyInteger('show')->default(1)->comment('是否显示 1:是 2:否');
+            $table->tinyInteger('can_del')->default(1)->comment('是否可以删除 1:是 2:否');
             $table->timestamps();
+            $table->softDeletes();
         });
     }
 

+ 13 - 0
Modules/Mine/Entities/MineList.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace Modules\Mine\Entities;
+
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class MineList extends Model
+{
+    use SoftDeletes;
+    protected $table = 'mine_list';
+    protected $fillable = ['parent_id', 'title', 'slug', 'sort', 'tier', 'degree', 'show', 'can_del'];
+}

+ 103 - 3
Modules/Mine/Http/Controllers/MineController.php

@@ -5,8 +5,13 @@ namespace Modules\Mine\Http\Controllers;
 use Illuminate\Contracts\Support\Renderable;
 use Illuminate\Http\Request;
 use Illuminate\Routing\Controller;
+use Modules\Admin\Auxiliary\View\FromAuxiliary;
+use Modules\Admin\Auxiliary\View\TreeAuxiliary;
+use Modules\Admin\Http\Controllers\BaseController;
+use Modules\Mine\Entities\MineList;
+use Modules\Mine\Services\MineServices;
 
-class MineController extends Controller
+class MineController extends BaseController
 {
     /**
      * Display a listing of the resource.
@@ -17,9 +22,104 @@ class MineController extends Controller
         return view('mine::index');
     }
 
-    //矿区列表
-    public function list(Request $request)
+    //矿区单位列表
+    public function mineList(Request $request)
     {
+        $this->menusActive[0] = 'adminMine';
+        $this->menusActive[1] = 'adminMineList';
 
+        $mineService = new MineServices();
+        $mineService->initMineList();
+        $list = $mineService->getTierList();
+
+        $tableObj = new TreeAuxiliary('mine/list', $list);
+        $tableObj->column('title', '矿区单位名称');
+        return $this->tree($tableObj);
+    }
+
+    //添加矿区单位
+    public function mineAdd(Request $request)
+    {
+        $mineService = new MineServices();
+        $mineService->initMineList();
+        $titleList = $mineService->getTierList();
+
+        $formObj = new FromAuxiliary('mine/list/add');
+        $formObj->tree_select('parent_id', '父级矿区单位', $titleList);
+        $formObj->input('title', '矿区单位名称');
+        $formObj->input('sort', '排序', 1);
+//        $formObj->radio('show', '是否显示', [1 => '是', 0 => '否'], 1);
+        $formObj->title = '添加矿区单位';
+        return $this->from($formObj);
+    }
+
+    //添加矿区单位操作
+    public function mineAddPost(Request $request)
+    {
+        if (!$request['title']) {
+            return $this->error(1, '请输入矿区单位名称');
+        }
+
+        $mineService = new MineServices();
+        $mineService->initMineList();
+        $mineService->add($request->all());
+        return $this->redirect('admin/mine/list');
+    }
+
+    //编辑矿区单位
+    public function mineEdit(Request $request)
+    {
+        if (!$request->id) {
+            return $this->error(1, '缺少必要参数');
+        }
+
+        $mineService = new MineServices();
+        $mineService->initMineList();
+        $titleList = $mineService->getTierList();
+        $titleOne  = $mineService->getOneInfo($request->id);
+
+        $formObj = new FromAuxiliary('mine/list/edit', $titleOne);
+        $formObj->tree_select('parent_id', '父级矿区单位', $titleList, $titleOne->parent_id);
+        $formObj->input('title', '矿区单位名称');
+        $formObj->input('sort', '排序', 10);
+        $formObj->title = '修改矿区单位';
+        return $this->from($formObj);
+    }
+
+    //编辑矿区单位操作
+    public function mineEditPost(Request $request)
+    {
+        if (!$request->id) {
+            return $this->error(1, '缺少必要参数');
+        }
+
+        $mineService = new MineServices();
+        $mineService->initMineList();
+
+        if ($request->input('id') == $request->input('parent_id')) {
+            return $this->error(1, '不能选择自己为父级标题');
+        }
+
+        $mineService->edit($request->all());
+        return $this->redirect('admin/mine/list');
+    }
+
+    //删除矿区单位操作
+    public function mineDelPost(Request $request)
+    {
+        if (!$request->has('id')) {
+            return $this->error(1, '缺少必要参数');
+        }
+
+        $one_title = MineList::find($request->input('id'));
+
+        if (!$one_title) {
+            return $this->error(1, '需删除的数据不存在');
+        }
+
+        $mineService = new MineServices();
+        $mineService->initMineList();
+        $mineService->del($request->input('id'));
+        return $this->success();
     }
 }

+ 9 - 3
Modules/Mine/Routes/web.php

@@ -11,7 +11,13 @@
 |
 */
 
-Route::prefix('mine')->group(function() {
-    Route::get('/', 'MineController@index');
-    Route::get('/list', 'MineController@list');
+Route::prefix('admin')->group(function() {
+    //矿区管理
+    Route::get('/mine', 'MineController@index');
+    Route::get('/mine/list', 'MineController@mineList');
+    Route::get('/mine/list/add', 'MineController@mineAdd');
+    Route::post('/mine/list/add', 'MineController@mineAddPost');
+    Route::get('/mine/list/edit', 'MineController@mineEdit');
+    Route::post('/mine/list/edit', 'MineController@mineEditPost');
+    Route::post('/mine/list/del', 'MineController@mineDelPost');
 });

+ 31 - 0
Modules/Mine/Services/MineServices.php

@@ -0,0 +1,31 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: qiuzijian
+ * Date: 2021-04-17
+ * Time: 16:56
+ */
+
+namespace Modules\Mine\Services;
+
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
+use Modules\Admin\Traits\ClassifyMethod;
+use Modules\Mine\Entities\MineList;
+
+class MineServices{
+
+    use ClassifyMethod;
+
+    public function __construct()
+    {
+
+    }
+
+    //初始化mine_list表
+    public function initMineList()
+    {
+        $this->classify   = new MineList();
+        $this->cacheTitle = 'MineManageList';
+    }
+}

+ 2 - 1
modules_statuses.json

@@ -1,5 +1,6 @@
 {
     "ModuleAdmin": true,
     "Admin": true,
-    "Mine": true
+    "Mine": true,
+    "Camera": true
 }