Browse Source

first commit

唐金木 4 months ago
commit
07e2592bdb
100 changed files with 58800 additions and 0 deletions
  1. 1 0
      README.md
  2. 1 0
      php/.env
  3. 1 0
      php/.example.env
  4. 7 0
      php/.gitattributes
  5. 28 0
      php/.idea/deployment.xml
  6. 4 0
      php/.idea/encodings.xml
  7. 6 0
      php/.idea/misc.xml
  8. 8 0
      php/.idea/modules.xml
  9. 90 0
      php/.idea/php.iml
  10. 87 0
      php/.idea/php.xml
  11. 6 0
      php/.idea/vcs.xml
  12. 31 0
      php/.idea/webServers.xml
  13. 952 0
      php/.idea/workspace.xml
  14. 0 0
      php/.keep
  15. 42 0
      php/.travis.yml
  16. 56 0
      php/adddata.sql
  17. 18 0
      php/addons/text/config.php
  18. 63 0
      php/addons/text/controller/Pugin.php
  19. 15 0
      php/addons/text/controller/Text.php
  20. 10 0
      php/addons/text/view/pugin/info.html
  21. 25238 0
      php/any_college.sql
  22. 25250 0
      php/any_college2020-2-27.sql
  23. 1 0
      php/app/.htaccess
  24. 26 0
      php/app/404.html
  25. 213 0
      php/app/BaseController.php
  26. 68 0
      php/app/ExceptionHandle.php
  27. 17 0
      php/app/Request.php
  28. 77 0
      php/app/admin/controller/Adminlog.php
  29. 255 0
      php/app/admin/controller/Adv.php
  30. 247 0
      php/app/admin/controller/Article.php
  31. 552 0
      php/app/admin/controller/Auth.php
  32. 455 0
      php/app/admin/controller/Backup.php
  33. 150 0
      php/app/admin/controller/Contents.php
  34. 330 0
      php/app/admin/controller/Curriculum.php
  35. 116 0
      php/app/admin/controller/Database.php
  36. 27 0
      php/app/admin/controller/Error.php
  37. 393 0
      php/app/admin/controller/Friendship.php
  38. 89 0
      php/app/admin/controller/Index.php
  39. 135 0
      php/app/admin/controller/Login.php
  40. 110 0
      php/app/admin/controller/Menu.php
  41. 167 0
      php/app/admin/controller/Site.php
  42. 219 0
      php/app/admin/controller/System.php
  43. 166 0
      php/app/admin/controller/Training.php
  44. 235 0
      php/app/admin/controller/Uploads.php
  45. 232 0
      php/app/admin/controller/User.php
  46. 47 0
      php/app/admin/controller/UserAddress.php
  47. 153 0
      php/app/admin/lang/zh-cn.php
  48. 22 0
      php/app/admin/middleware.php
  49. 32 0
      php/app/admin/middleware/AdminLog.php
  50. 27 0
      php/app/admin/middleware/MajorLevel.php
  51. 20 0
      php/app/admin/model/Admin.php
  52. 93 0
      php/app/admin/model/AdminLog.php
  53. 21 0
      php/app/admin/model/AdminModel.php
  54. 23 0
      php/app/admin/model/AuthGroup.php
  55. 22 0
      php/app/admin/model/AuthRule.php
  56. 21 0
      php/app/admin/model/ListPage.php
  57. 39 0
      php/app/admin/model/MajorLevel.php
  58. 15 0
      php/app/admin/model/User.php
  59. 186 0
      php/app/admin/model/Video.php
  60. 84 0
      php/app/admin/model/Ztrees.php
  61. 32 0
      php/app/admin/validate/Admin.php
  62. 31 0
      php/app/admin/validate/Adv.php
  63. 27 0
      php/app/admin/validate/AdvPosition.php
  64. 26 0
      php/app/admin/validate/AuthGroup.php
  65. 30 0
      php/app/admin/validate/Field.php
  66. 30 0
      php/app/admin/validate/Link.php
  67. 41 0
      php/app/admin/validate/Module.php
  68. 34 0
      php/app/admin/validate/User.php
  69. 31 0
      php/app/admin/validate/UserLevel.php
  70. 56 0
      php/app/admin/validate/WxAccount.php
  71. 34 0
      php/app/admin/validate/WxTag.php
  72. 34 0
      php/app/ap/config/route.php
  73. 52 0
      php/app/ap/controller/Login.php
  74. 48 0
      php/app/ap/controller/v1/Index.php
  75. 91 0
      php/app/ap/controller/v1/User.php
  76. 22 0
      php/app/ap/middleware.php
  77. 26 0
      php/app/ap/route/api.php
  78. 24 0
      php/app/cert/apiclient_cert.pem
  79. 28 0
      php/app/cert/apiclient_key.pem
  80. 27 0
      php/app/cert/pri_key.pem
  81. 9 0
      php/app/cert/pub_key.pem
  82. 31 0
      php/app/command/Hello.php
  83. 70 0
      php/app/command/Timer.php
  84. 371 0
      php/app/common.php
  85. 84 0
      php/app/common/controller/Aliyunoss.php
  86. 184 0
      php/app/common/controller/Backend.php
  87. 45 0
      php/app/common/controller/Base.php
  88. 29 0
      php/app/common/controller/Frontend.php
  89. 18 0
      php/app/common/controller/Token.php
  90. 47 0
      php/app/common/controller/Wxs.php
  91. 44 0
      php/app/common/model/BaseModel.php
  92. 14 0
      php/app/common/model/Common.php
  93. 11 0
      php/app/common/model/Config.php
  94. 23 0
      php/app/common/model/ConfigGroup.php
  95. 19 0
      php/app/common/model/FieldType.php
  96. 23 0
      php/app/common/model/User.php
  97. 19 0
      php/app/error/controller/Error.php
  98. 18 0
      php/app/event.php
  99. 18 0
      php/app/middleware.php
  100. 0 0
      php/app/middleware/Notken.php

+ 1 - 0
README.md

@@ -0,0 +1 @@
+"# bts" 

File diff suppressed because it is too large
+ 1 - 0
php/.env


+ 1 - 0
php/.example.env

@@ -0,0 +1 @@
+APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = lemocms
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
CHARSET = utf8mb4
DEBUG = true

[LANG]
default_lang = zh-cn

+ 7 - 0
php/.gitattributes

@@ -0,0 +1,7 @@
+*.js linguist-language=php
+*.css linguist-language=php
+<<<<<<< HEAD
+*.html linguist-language=php
+=======
+*.html linguist-language=php
+>>>>>>> 8f2e737c7b356d47fc1f979eb488a24e224e8faf

+ 28 - 0
php/.idea/deployment.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PublishConfigData" serverName="案例">
+    <serverData>
+      <paths name="医疗">
+        <serverdata>
+          <mappings>
+            <mapping deploy="/" local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
+      <paths name="客户">
+        <serverdata>
+          <mappings>
+            <mapping deploy="/" local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
+      <paths name="案例">
+        <serverdata>
+          <mappings>
+            <mapping deploy="/" local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
+    </serverData>
+  </component>
+</project>

+ 4 - 0
php/.idea/encodings.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" addBOMForNewFiles="with NO BOM" />
+</project>

+ 6 - 0
php/.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>

+ 8 - 0
php/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/php.iml" filepath="$PROJECT_DIR$/.idea/php.iml" />
+    </modules>
+  </component>
+</project>

+ 90 - 0
php/.idea/php.iml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/extend" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/app" isTestSource="false" packagePrefix="app\" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/adbario/php-dot-notation" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/alchemy/binary-driver" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/alibabacloud/client" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/aliyuncs/oss-sdk-php" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/bacon/bacon-qr-code" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/clagiordano/weblibs-configmanager" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/danielstjules/stringy" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/dasprid/enum" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/cache" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/easywechat-composer/easywechat-composer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/endroid/qr-code" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/evenement/evenement" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/khanamiryan/qrcode-detector-decoder" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/league/flysystem" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/league/flysystem-cached-adapter" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/mtdowling/jmespath.php" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/php-enum" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/neutron/temporary-filesystem" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/opis/closure" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/overtrue/socialite" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/overtrue/wechat" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/paragonie/random_compat" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/php-ffmpeg/php-ffmpeg" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/pimple/pimple" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/simple-cache" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/ramsey/uuid" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/cache" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/cache-contracts" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher-contracts" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/filesystem" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-foundation" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/inflector" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/mime" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/options-resolver" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-idn" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php72" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/process" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/property-access" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/psr-http-message-bridge" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/service-contracts" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation-contracts" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/var-dumper" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/var-exporter" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/framework" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-captcha" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-factory" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-helper" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-image" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-multi-app" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-orm" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-queue" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-template" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-throttle" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-view" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/topthink/think-worker" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/workerman/gateway-worker" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/workerman/gateway-worker-for-win" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/workerman/workerman" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/workerman/workerman-for-win" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/xaboy/form-builder" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/yuege/think-addons" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 87 - 0
php/.idea/php.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PhpIncludePathManager">
+    <include_path>
+      <path value="$PROJECT_DIR$/vendor/pimple/pimple" />
+      <path value="$PROJECT_DIR$/vendor/paragonie/random_compat" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-template" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-throttle" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-view" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-multi-app" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-image" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-queue" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-factory" />
+      <path value="$PROJECT_DIR$/vendor/topthink/framework" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-orm" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-helper" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-captcha" />
+      <path value="$PROJECT_DIR$/vendor/workerman/gateway-worker" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-worker" />
+      <path value="$PROJECT_DIR$/vendor/composer" />
+      <path value="$PROJECT_DIR$/vendor/workerman/workerman" />
+      <path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
+      <path value="$PROJECT_DIR$/vendor/psr/container" />
+      <path value="$PROJECT_DIR$/vendor/psr/http-message" />
+      <path value="$PROJECT_DIR$/vendor/psr/cache" />
+      <path value="$PROJECT_DIR$/vendor/psr/log" />
+      <path value="$PROJECT_DIR$/vendor/psr/simple-cache" />
+      <path value="$PROJECT_DIR$/vendor/league/flysystem" />
+      <path value="$PROJECT_DIR$/vendor/league/flysystem-cached-adapter" />
+      <path value="$PROJECT_DIR$/vendor/opis/closure" />
+      <path value="$PROJECT_DIR$/vendor/ramsey/uuid" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
+      <path value="$PROJECT_DIR$/vendor/symfony/cache" />
+      <path value="$PROJECT_DIR$/vendor/symfony/process" />
+      <path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
+      <path value="$PROJECT_DIR$/vendor/symfony/mime" />
+      <path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
+      <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
+      <path value="$PROJECT_DIR$/vendor/easywechat-composer/easywechat-composer" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
+      <path value="$PROJECT_DIR$/vendor/symfony/translation" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
+      <path value="$PROJECT_DIR$/vendor/symfony/cache-contracts" />
+      <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
+      <path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
+      <path value="$PROJECT_DIR$/vendor/symfony/psr-http-message-bridge" />
+      <path value="$PROJECT_DIR$/vendor/overtrue/socialite" />
+      <path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
+      <path value="$PROJECT_DIR$/vendor/overtrue/wechat" />
+      <path value="$PROJECT_DIR$/vendor/monolog/monolog" />
+      <path value="$PROJECT_DIR$/vendor/symfony/var-exporter" />
+      <path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
+      <path value="$PROJECT_DIR$/vendor/yuege/think-addons" />
+      <path value="$PROJECT_DIR$/vendor/dasprid/enum" />
+      <path value="$PROJECT_DIR$/vendor/endroid/qr-code" />
+      <path value="$PROJECT_DIR$/vendor/bacon/bacon-qr-code" />
+      <path value="$PROJECT_DIR$/vendor/alchemy/binary-driver" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/cache" />
+      <path value="$PROJECT_DIR$/vendor/evenement/evenement" />
+      <path value="$PROJECT_DIR$/vendor/myclabs/php-enum" />
+      <path value="$PROJECT_DIR$/vendor/neutron/temporary-filesystem" />
+      <path value="$PROJECT_DIR$/vendor/php-ffmpeg/php-ffmpeg" />
+      <path value="$PROJECT_DIR$/vendor/khanamiryan/qrcode-detector-decoder" />
+      <path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
+      <path value="$PROJECT_DIR$/vendor/symfony/inflector" />
+      <path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
+      <path value="$PROJECT_DIR$/vendor/symfony/property-access" />
+      <path value="$PROJECT_DIR$/vendor/clagiordano/weblibs-configmanager" />
+      <path value="$PROJECT_DIR$/vendor/alibabacloud/client" />
+      <path value="$PROJECT_DIR$/vendor/adbario/php-dot-notation" />
+      <path value="$PROJECT_DIR$/vendor/mtdowling/jmespath.php" />
+      <path value="$PROJECT_DIR$/vendor/danielstjules/stringy" />
+      <path value="$PROJECT_DIR$/vendor/workerman/workerman-for-win" />
+      <path value="$PROJECT_DIR$/vendor/workerman/gateway-worker-for-win" />
+      <path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
+      <path value="$PROJECT_DIR$/vendor/xaboy/form-builder" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
+      <path value="$PROJECT_DIR$/vendor/aliyuncs/oss-sdk-php" />
+    </include_path>
+  </component>
+  <component name="PhpProjectSharedConfiguration" php_language_level="7.1" />
+</project>

+ 6 - 0
php/.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>

+ 31 - 0
php/.idea/webServers.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="WebServers">
+    <option name="servers">
+      <webServer id="4fcf34b1-c072-460a-a0fb-6ff10e7cab5e" name="医疗" url="http://47.93.235.183">
+        <fileTransfer host="47.93.235.183" port="22" rootFolder="/www/anyluck/yixueyuan" accessType="SFTP">
+          <advancedOptions>
+            <advancedOptions dataProtectionLevel="Private" passiveMode="true" shareSSLContext="true" />
+          </advancedOptions>
+          <option name="port" value="22" />
+        </fileTransfer>
+      </webServer>
+      <webServer id="19dd7cac-5737-4b7b-8a11-33b60c030086" name="客户" url="http://59.46.59.72">
+        <fileTransfer host="59.46.59.72" port="21">
+          <advancedOptions>
+            <advancedOptions dataProtectionLevel="Private" passiveMode="true" shareSSLContext="true" />
+          </advancedOptions>
+          <option name="port" value="21" />
+        </fileTransfer>
+      </webServer>
+      <webServer id="a17252f6-8812-48c8-a0c7-2c577aaad637" name="案例" url="http://47.105.140.108">
+        <fileTransfer host="47.105.140.108" port="22" rootFolder="/www/wwwroot/guanwang/any_admin/any_admin" accessType="SFTP">
+          <advancedOptions>
+            <advancedOptions dataProtectionLevel="Private" passiveMode="true" shareSSLContext="true" />
+          </advancedOptions>
+          <option name="port" value="22" />
+        </fileTransfer>
+      </webServer>
+    </option>
+  </component>
+</project>

+ 952 - 0
php/.idea/workspace.xml

@@ -0,0 +1,952 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="BookmarkManager">
+    <bookmark url="file://$PROJECT_DIR$/app/admin/controller/Contents.php" line="25" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="52cc2ceb-e100-4a5f-a9e2-bb6b61bdbebd" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/.env" beforeDir="false" afterPath="$PROJECT_DIR$/.env" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/admin/controller/Index.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/admin/controller/Index.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/api/config/route.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/api/controller/v1/Token.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/api/controller/v1/User.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/api/middleware.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/api/route/api.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/common.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/About.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/Adv.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/AdvPosition.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/Article.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/ArticleCate.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/Common.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/Examination.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/ExaminationApply.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/Feedback.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/Laboratory.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/MajorLevel.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/StudentAchievement.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/StudentExam.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/Subject.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/UserLevel.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxAccount.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxFans.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxMaterial.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxMaterialInfo.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxMenu.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxMsgHistory.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxReply.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/common/model/WxTag.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/web/controller/Index.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/config/database.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/database.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/lemocms2020-3-24.sql" beforeDir="false" afterPath="$PROJECT_DIR$/lemocms2020-3-24.sql" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/favicon.ico" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/index.html" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/css/app.3923214e.css" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/css/chunk-vendors.56b28f4e.css" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/css/home.aa2e59b3.css" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/fonts/element-icons.535877f5.woff" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/fonts/element-icons.732389de.ttf" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/a889af7e-226d-42c9-ae87-c0d4a1eabc0d.fb3a43a6.jpg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/banner2@2x.f9b7729b.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/banner@2x.ac15f717.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/bg.1444b65e.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_diy@2x.477f05dd.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_hy@2x.b5bea374.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_kc@2x(1).2d1cb158.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_kc@2x.2d1cb158.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_kj@2x.f19dbc1d.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_logo.f3733667.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_ms@2x.33f75f26.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_qd@2x.253f25b9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_tg@2x.f47e24c0.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/icon_yj@2x.32ee214b.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_1@2x.089aa8b6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_2@2x.e3ca62f1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_3@2x.fefa2cfa.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_4@2x.597aa81a.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_anli@2x.15392499.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_dhy1@2x.99e9cef2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_dhy2@2x.6aa4fcd1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/img_dhy3@2x.9126b3c2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/img/logo.125a8805.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/js/app.38019ab9.js" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/js/chunk-vendors.947778ee.js" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/dist/static/js/home.1cae7556.js" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/runtime/admin/log/202005/29.log" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/runtime/admin/temp/c5d116d0b0fba4a743db108afcfc6dd9.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/runtime/cache/b5/0db2208db974a3bc060e4d7255aa98.php" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/runtime/session/sess_e073e8c24261b8fb84910f1bf455d29f" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/view/admin/index/main.html" beforeDir="false" afterPath="$PROJECT_DIR$/view/admin/index/main.html" afterDir="false" />
+    </list>
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ComposerSettings" doNotAsk="true" synchronizationState="SYNCHRONIZE">
+    <pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>
+  </component>
+  <component name="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/common/model/User.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="276">
+              <caret line="22" column="1" lean-forward="true" selection-start-line="22" selection-start-column="1" selection-end-line="22" selection-end-column="1" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/ap/controller/Login.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="413">
+              <caret line="46" column="28" lean-forward="true" selection-start-line="46" selection-start-column="28" selection-end-line="46" selection-end-column="28" />
+              <folding>
+                <element signature="e#99#125#0#PHP" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/adddata.sql">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="547">
+              <caret line="53" column="43" selection-start-line="53" selection-start-column="43" selection-end-line="53" selection-end-column="43" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/common.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="345">
+              <caret line="197" column="7" lean-forward="true" selection-start-line="197" selection-start-column="7" selection-end-line="197" selection-end-column="7" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/ap/route/api.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="414">
+              <caret line="21" column="44" lean-forward="true" selection-start-line="21" selection-start-column="44" selection-end-line="21" selection-end-column="44" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/app/middleware/Token.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="138">
+              <caret line="11" column="25" lean-forward="true" selection-start-line="11" selection-start-column="25" selection-end-line="11" selection-end-column="25" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="JavaScript File" />
+        <option value="HTML File" />
+      </list>
+    </option>
+  </component>
+  <component name="FindInProjectRecents">
+    <findStrings>
+      <find>signup</find>
+      <find>Laboratorylist</find>
+      <find>my_exam</find>
+      <find>Wx</find>
+      <find>outvodeo</find>
+      <find>delAll</find>
+      <find>all_reject</find>
+      <find>switch</find>
+      <find>status</find>
+      <find>reject</find>
+      <find>all_agree</find>
+      <find>cancel_sign</find>
+      <find>$system</find>
+      <find>video</find>
+      <find>submit</find>
+      <find>student_id</find>
+      <find>aliyuncs/oss-sdk-php</find>
+      <find>userLevel</find>
+      <find>lay-skin</find>
+      <find>auth_open</find>
+      <find>lay-filter</find>
+      <find>search</find>
+      <find>UploadedFile</find>
+      <find>addBtn</find>
+      <find>factory</find>
+      <find>init</find>
+      <find>echarts</find>
+      <find>api</find>
+      <find>Invalid authorization credentials</find>
+      <find>resultset_type</find>
+    </findStrings>
+    <dirStrings>
+      <dir>D:\phpstudy_pro\WWW\small\syyxy\php</dir>
+    </dirStrings>
+  </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$/app/admin/controller/Laboratory.php" />
+        <option value="$PROJECT_DIR$/view/admin/examination/exam.html" />
+        <option value="$PROJECT_DIR$/app/admin/controller/Curriculum.php" />
+        <option value="$PROJECT_DIR$/app/admin/controller/Examination.php" />
+        <option value="$PROJECT_DIR$/view/admin/examination/index.html" />
+        <option value="$PROJECT_DIR$/app/index/controller/Login.php" />
+        <option value="$PROJECT_DIR$/view/admin/parameter/index.html" />
+        <option value="$PROJECT_DIR$/app/index/controller/Examinations.php" />
+        <option value="$PROJECT_DIR$/app/index/controller/Home.php" />
+        <option value="$PROJECT_DIR$/app/admin/model/Video.php" />
+        <option value="$PROJECT_DIR$/view/admin/auth/admin_add.html" />
+        <option value="$PROJECT_DIR$/view/admin/auth/admin_list.html" />
+        <option value="$PROJECT_DIR$/app/admin/controller/Auth.php" />
+        <option value="$PROJECT_DIR$/app/admin/controller/Login.php" />
+        <option value="$PROJECT_DIR$/app/common/controller/Backend.php" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/addLinks.html" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/add_links.html" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/links.html" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/add_dh.html" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/dh_list.html" />
+        <option value="$PROJECT_DIR$/app/common/controller/Aliyunoss.php" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/banner.html" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/add_banner.html" />
+        <option value="$PROJECT_DIR$/public/static/plugins/layui/extend/echarts/echarts.js" />
+        <option value="$PROJECT_DIR$/public/static/plugins/jquery-3.4.1/jquery-3.4.1.min.js" />
+        <option value="$PROJECT_DIR$/public/static/plugins/layui/extend/echarts/echarts.min.js" />
+        <option value="$PROJECT_DIR$/lemocmsss.sql" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/statistics.html" />
+        <option value="$PROJECT_DIR$/app/web/controller/Index.php" />
+        <option value="$PROJECT_DIR$/app/admin/controller/Friendship.php" />
+        <option value="$PROJECT_DIR$/view/admin/friendship/index.html" />
+        <option value="$PROJECT_DIR$/lemocms2020-3-24.sql" />
+        <option value="$PROJECT_DIR$/.env" />
+        <option value="$PROJECT_DIR$/view/admin/index/main.html" />
+        <option value="$PROJECT_DIR$/app/admin/controller/Index.php" />
+        <option value="$PROJECT_DIR$/app/api/route/api.php" />
+        <option value="$PROJECT_DIR$/app/api/controller/v1/User.php" />
+        <option value="$PROJECT_DIR$/app/api/middleware.php" />
+        <option value="$PROJECT_DIR$/extend/lemo/api/Api.php" />
+        <option value="$PROJECT_DIR$/extend/lemo/api/Token.php" />
+        <option value="$PROJECT_DIR$/app/ap/controller/v1/Index.php" />
+        <option value="$PROJECT_DIR$/app/ap/controller/v1/User.php" />
+        <option value="$PROJECT_DIR$/app/ap/route/ap.php" />
+        <option value="$PROJECT_DIR$/app/ap/controller/v1/Token.php" />
+        <option value="$PROJECT_DIR$/app/middleware/Notken.php" />
+        <option value="$PROJECT_DIR$/config/database.php" />
+        <option value="$PROJECT_DIR$/app/common.php" />
+        <option value="$PROJECT_DIR$/app/middleware/Token.php" />
+        <option value="$PROJECT_DIR$/app/ap/route/api.php" />
+        <option value="$PROJECT_DIR$/app/ap/controller/Login.php" />
+        <option value="$PROJECT_DIR$/adddata.sql" />
+      </list>
+    </option>
+  </component>
+  <component name="PhpDebugGeneral" xdebug_debug_port="9001" />
+  <component name="PhpServers">
+    <servers>
+      <server host="127.0.0.1" id="6f4e8355-afd5-4149-8b51-9ae55f8f1bc1" name="本地" port="8989" />
+    </servers>
+  </component>
+  <component name="PhpWebServerValidation" path_to_validation_script="D:\phpstudy_pro\WWW\small\syyxy\php\public" selected_validation_type="LOCAL" web_path_to_validation_script="http://127.0.0.1:8989" />
+  <component name="PhpWorkspaceProjectConfiguration" interpreter_name="PHP 7.3">
+    <include_path>
+      <path value="$PROJECT_DIR$/vendor/pimple/pimple" />
+      <path value="$PROJECT_DIR$/vendor/paragonie/random_compat" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-template" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-throttle" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-view" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-multi-app" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-image" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-queue" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-factory" />
+      <path value="$PROJECT_DIR$/vendor/topthink/framework" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-orm" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-helper" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-captcha" />
+      <path value="$PROJECT_DIR$/vendor/workerman/gateway-worker" />
+      <path value="$PROJECT_DIR$/vendor/topthink/think-worker" />
+      <path value="$PROJECT_DIR$/vendor/composer" />
+      <path value="$PROJECT_DIR$/vendor/workerman/workerman" />
+      <path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
+      <path value="$PROJECT_DIR$/vendor/psr/container" />
+      <path value="$PROJECT_DIR$/vendor/psr/http-message" />
+      <path value="$PROJECT_DIR$/vendor/psr/cache" />
+      <path value="$PROJECT_DIR$/vendor/psr/log" />
+      <path value="$PROJECT_DIR$/vendor/psr/simple-cache" />
+      <path value="$PROJECT_DIR$/vendor/league/flysystem" />
+      <path value="$PROJECT_DIR$/vendor/league/flysystem-cached-adapter" />
+      <path value="$PROJECT_DIR$/vendor/opis/closure" />
+      <path value="$PROJECT_DIR$/vendor/ramsey/uuid" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
+      <path value="$PROJECT_DIR$/vendor/symfony/cache" />
+      <path value="$PROJECT_DIR$/vendor/symfony/process" />
+      <path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
+      <path value="$PROJECT_DIR$/vendor/symfony/mime" />
+      <path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
+      <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
+      <path value="$PROJECT_DIR$/vendor/easywechat-composer/easywechat-composer" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
+      <path value="$PROJECT_DIR$/vendor/symfony/translation" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
+      <path value="$PROJECT_DIR$/vendor/symfony/cache-contracts" />
+      <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
+      <path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
+      <path value="$PROJECT_DIR$/vendor/symfony/psr-http-message-bridge" />
+      <path value="$PROJECT_DIR$/vendor/overtrue/socialite" />
+      <path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
+      <path value="$PROJECT_DIR$/vendor/overtrue/wechat" />
+      <path value="$PROJECT_DIR$/vendor/monolog/monolog" />
+      <path value="$PROJECT_DIR$/vendor/symfony/var-exporter" />
+      <path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
+      <path value="$PROJECT_DIR$/vendor/yuege/think-addons" />
+      <path value="$PROJECT_DIR$/vendor/dasprid/enum" />
+      <path value="$PROJECT_DIR$/vendor/endroid/qr-code" />
+      <path value="$PROJECT_DIR$/vendor/bacon/bacon-qr-code" />
+      <path value="$PROJECT_DIR$/vendor/alchemy/binary-driver" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/cache" />
+      <path value="$PROJECT_DIR$/vendor/evenement/evenement" />
+      <path value="$PROJECT_DIR$/vendor/myclabs/php-enum" />
+      <path value="$PROJECT_DIR$/vendor/neutron/temporary-filesystem" />
+      <path value="$PROJECT_DIR$/vendor/php-ffmpeg/php-ffmpeg" />
+      <path value="$PROJECT_DIR$/vendor/khanamiryan/qrcode-detector-decoder" />
+      <path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
+      <path value="$PROJECT_DIR$/vendor/symfony/inflector" />
+      <path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
+      <path value="$PROJECT_DIR$/vendor/symfony/property-access" />
+      <path value="$PROJECT_DIR$/vendor/clagiordano/weblibs-configmanager" />
+      <path value="$PROJECT_DIR$/vendor/alibabacloud/client" />
+      <path value="$PROJECT_DIR$/vendor/adbario/php-dot-notation" />
+      <path value="$PROJECT_DIR$/vendor/mtdowling/jmespath.php" />
+      <path value="$PROJECT_DIR$/vendor/danielstjules/stringy" />
+      <path value="$PROJECT_DIR$/vendor/workerman/workerman-for-win" />
+      <path value="$PROJECT_DIR$/vendor/workerman/gateway-worker-for-win" />
+      <path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
+      <path value="$PROJECT_DIR$/vendor/xaboy/form-builder" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
+      <path value="$PROJECT_DIR$/vendor/aliyuncs/oss-sdk-php" />
+    </include_path>
+  </component>
+  <component name="PhpXdebugProxy" ide_key="PHPSTROM" host="127.0.0.1" />
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="-8" />
+    <option name="y" value="-8" />
+    <option name="width" value="1936" />
+    <option name="height" value="1056" />
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="php" type="b2602c69:ProjectViewProjectNode" />
+              <item name="php" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="php" type="b2602c69:ProjectViewProjectNode" />
+              <item name="php" type="462c0819:PsiDirectoryNode" />
+              <item name="app" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="php" type="b2602c69:ProjectViewProjectNode" />
+              <item name="php" type="462c0819:PsiDirectoryNode" />
+              <item name="route" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="DefaultHtmlFileTemplate" value="HTML File" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="WebServerToolWindowPanel.toolwindow.highlight.mappings" value="true" />
+    <property name="WebServerToolWindowPanel.toolwindow.highlight.symlinks" value="true" />
+    <property name="WebServerToolWindowPanel.toolwindow.show.date" value="false" />
+    <property name="WebServerToolWindowPanel.toolwindow.show.permissions" value="false" />
+    <property name="WebServerToolWindowPanel.toolwindow.show.size" value="false" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../../company/any_admin" />
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
+    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
+    <property name="nodejs_package_manager_path" value="npm" />
+    <property name="settings.editor.selected.configurable" value="Docker" />
+  </component>
+  <component name="RecentsManager">
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="D:\phpstudy_pro\WWW\company\any_admin\public\static\admin\images" />
+      <recent name="D:\phpstudy_pro\WWW\small\syyxy\php\public\static\plugins\layui\extend\city" />
+      <recent name="D:\phpstudy_pro\WWW\small\syyxy\php\app\index\controller" />
+      <recent name="D:\phpstudy_pro\WWW\small\syyxy\php\public\static\plugins\selectmenu" />
+    </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\phpstudy_pro\WWW\my\fuye\php\app\ap\config" />
+      <recent name="D:\phpstudy_pro\WWW\my\fuye\php\app\ap\route" />
+      <recent name="D:\phpstudy_pro\WWW\my\fuye\php\app\ap" />
+      <recent name="D:\phpstudy_pro\WWW\company\any_admin\public\static\admin\images" />
+      <recent name="D:\phpstudy_pro\WWW\company\any_admin\public" />
+    </key>
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager">
+    <configuration name="VideoTranscodeTest.testSimpleTranscodeX264" type="PHPUnitRunConfigurationType" factoryName="PHPUnit" temporary="true">
+      <TestRunner class="Tests\FFMpeg\Functional\VideoTranscodeTest" file="$PROJECT_DIR$/vendor/php-ffmpeg/php-ffmpeg/tests/Functional/VideoTranscodeTest.php" method="testSimpleTranscodeX264" scope="Method" />
+      <method v="2" />
+    </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="PHPUnit.VideoTranscodeTest.testSimpleTranscodeX264" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="52cc2ceb-e100-4a5f-a9e2-bb6b61bdbebd" name="Default Changelist" comment="" />
+      <created>1581388378645</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1581388378645</updated>
+      <workItem from="1581388380256" duration="70000" />
+      <workItem from="1581389189361" duration="2626000" />
+      <workItem from="1581409726591" duration="1791000" />
+      <workItem from="1581468628240" duration="10762000" />
+      <workItem from="1581555213748" duration="17806000" />
+      <workItem from="1581641591509" duration="27100000" />
+      <workItem from="1581911436975" duration="10274000" />
+      <workItem from="1581994869382" duration="27993000" />
+      <workItem from="1582085166688" duration="19246000" />
+      <workItem from="1582163865824" duration="4203000" />
+      <workItem from="1582168501528" duration="16779000" />
+      <workItem from="1582191816268" duration="684000" />
+      <workItem from="1582250711093" duration="19375000" />
+      <workItem from="1582510422435" duration="25276000" />
+      <workItem from="1582596051151" duration="29779000" />
+      <workItem from="1582682448247" duration="30772000" />
+      <workItem from="1582768326052" duration="18372000" />
+      <workItem from="1582855102422" duration="30286000" />
+      <workItem from="1583114763807" duration="22614000" />
+      <workItem from="1583202713704" duration="17452000" />
+      <workItem from="1583287169409" duration="13989000" />
+      <workItem from="1583374123732" duration="305000" />
+      <workItem from="1583381132160" duration="3916000" />
+      <workItem from="1583460056466" duration="926000" />
+      <workItem from="1583462170345" duration="8621000" />
+      <workItem from="1583487991759" duration="714000" />
+      <workItem from="1583720417170" duration="11894000" />
+      <workItem from="1583734229212" duration="12291000" />
+      <workItem from="1583807111760" duration="8556000" />
+      <workItem from="1583828737356" duration="676000" />
+      <workItem from="1583831415192" duration="2728000" />
+      <workItem from="1583892039774" duration="14108000" />
+      <workItem from="1583998455016" duration="2231000" />
+      <workItem from="1584065367387" duration="9842000" />
+      <workItem from="1584080193980" duration="3368000" />
+      <workItem from="1584086598780" duration="3893000" />
+      <workItem from="1584327205805" duration="4358000" />
+      <workItem from="1584413058175" duration="6178000" />
+      <workItem from="1584510920505" duration="7015000" />
+      <workItem from="1584583198918" duration="7038000" />
+      <workItem from="1584669593820" duration="14060000" />
+      <workItem from="1584704198715" duration="618000" />
+      <workItem from="1584933158881" duration="22167000" />
+      <workItem from="1585015771326" duration="21698000" />
+      <workItem from="1585101770441" duration="4703000" />
+      <workItem from="1585188430122" duration="16003000" />
+      <workItem from="1585275106900" duration="2033000" />
+      <workItem from="1585296814300" duration="3781000" />
+      <workItem from="1585534563284" duration="4894000" />
+      <workItem from="1585548655290" duration="4084000" />
+      <workItem from="1585620191275" duration="24812000" />
+      <workItem from="1585702785356" duration="1422000" />
+      <workItem from="1585788954827" duration="1960000" />
+      <workItem from="1585876330420" duration="14773000" />
+      <workItem from="1586227112165" duration="611000" />
+      <workItem from="1586240413516" duration="2100000" />
+      <workItem from="1586308275224" duration="4312000" />
+      <workItem from="1586394607218" duration="623000" />
+      <workItem from="1586519257057" duration="876000" />
+      <workItem from="1586521877995" duration="615000" />
+      <workItem from="1586916500760" duration="1795000" />
+      <workItem from="1587087519929" duration="443000" />
+      <workItem from="1587961772564" duration="1542000" />
+      <workItem from="1587969917590" duration="180000" />
+      <workItem from="1588063898817" duration="1575000" />
+      <workItem from="1588125942461" duration="740000" />
+      <workItem from="1588743348853" duration="1570000" />
+      <workItem from="1588813721962" duration="643000" />
+      <workItem from="1589275176539" duration="1034000" />
+      <workItem from="1589339100838" duration="1130000" />
+      <workItem from="1589765600691" duration="1067000" />
+      <workItem from="1590029774411" duration="607000" />
+      <workItem from="1590041818941" duration="2806000" />
+      <workItem from="1590630319281" duration="872000" />
+      <workItem from="1590637551328" duration="21498000" />
+      <workItem from="1590714534675" duration="25886000" />
+      <workItem from="1590983110728" duration="16565000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="682005000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
+    <editor active="true" />
+    <layout>
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.21908316" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info id="Favorites" order="2" side_tool="true" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Find" order="1" weight="0.329718" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="bottom" id="Docker" order="7" weight="0.329718" />
+      <window_info anchor="bottom" id="Database Changes" order="8" />
+      <window_info anchor="bottom" id="Version Control" order="9" weight="0.3290993" />
+      <window_info anchor="bottom" id="Terminal" order="10" visible="true" weight="0.22342733" />
+      <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
+      <window_info anchor="bottom" id="File Transfer" order="12" visible="true" weight="0.056399133" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+      <window_info anchor="right" id="Database" order="3" />
+      <window_info anchor="right" id="Remote Host" order="4" weight="0.32942432" />
+      <window_info anchor="right" id="Cargo" order="5" />
+    </layout>
+    <layout-to-restore>
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.21481876" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info id="Favorites" order="2" side_tool="true" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Find" order="1" weight="0.329718" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="bottom" id="Docker" order="7" weight="0.329718" />
+      <window_info anchor="bottom" id="Database Changes" order="8" />
+      <window_info anchor="bottom" id="Version Control" order="9" weight="0.3290993" />
+      <window_info anchor="bottom" id="Terminal" order="10" weight="0.22342733" />
+      <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
+      <window_info anchor="bottom" id="File Transfer" order="12" visible="true" weight="0.056399133" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+      <window_info anchor="right" id="Database" order="3" />
+      <window_info anchor="right" id="Remote Host" order="4" weight="0.32942432" />
+      <window_info anchor="right" id="Cargo" order="5" />
+    </layout-to-restore>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <breakpoints>
+        <line-breakpoint enabled="true" type="php">
+          <url>file://$PROJECT_DIR$/app/index/controller/My.php</url>
+          <line>11</line>
+          <option name="timeStamp" value="1" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="php">
+          <url>file://$PROJECT_DIR$/vendor/php-ffmpeg/php-ffmpeg/tests/Functional/FunctionalTestCase.php</url>
+          <line>4</line>
+          <option name="timeStamp" value="2" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="php">
+          <url>file://$PROJECT_DIR$/app/admin/controller/Error.php</url>
+          <line>14</line>
+          <option name="timeStamp" value="4" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="php">
+          <url>file://$PROJECT_DIR$/app/common/controller/Aliyunoss.php</url>
+          <line>9</line>
+          <option name="timeStamp" value="5" />
+        </line-breakpoint>
+      </breakpoints>
+    </breakpoint-manager>
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/config/admin/admin.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="230">
+          <caret line="18" column="63" lean-forward="true" selection-start-line="18" selection-start-column="63" selection-end-line="18" selection-end-column="64" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/config/addons.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="230">
+          <caret line="10" column="6" lean-forward="true" selection-start-line="10" selection-start-column="6" selection-end-line="10" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/public/storage/uploads/20200529/ad110b5e57ac537529fe3c2a2bf8cdfc.png">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/public/phpinfo.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="161">
+          <caret line="7" column="10" lean-forward="true" selection-start-line="7" selection-start-column="10" selection-end-line="7" selection-end-column="10" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/web/controller/Index.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="964">
+          <caret line="52" column="5" lean-forward="true" selection-start-line="52" selection-start-column="5" selection-end-line="52" selection-end-column="5" />
+          <folding>
+            <element signature="e#128#151#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/error/controller/Error.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/worker/controller/User.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/controller/Wxs.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-139" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/command/Hello.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/command/Timer.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-207" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/extend/lemo/api/validate/ValidataBase.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="230">
+          <caret line="23" column="7" lean-forward="true" selection-start-line="23" selection-start-column="7" selection-end-line="23" selection-end-column="7" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/vendor/topthink/think-throttle/src/Throttle.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-1886">
+          <caret line="21" column="17" lean-forward="true" selection-start-line="21" selection-start-column="17" selection-end-line="21" selection-end-column="17" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/vendor/topthink/framework/src/think/middleware/LoadLangPack.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="230">
+          <caret line="23" column="6" selection-start-line="23" selection-start-column="6" selection-end-line="23" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/api/controller/v1/User.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-161">
+          <caret line="35" column="16" selection-start-line="35" selection-start-column="7" selection-end-line="35" selection-end-column="16" />
+          <folding>
+            <element signature="e#41#66#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/api/config/route.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="667">
+          <caret line="29" column="17" selection-start-line="29" selection-start-column="17" selection-end-line="29" selection-end-column="17" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/api/controller/v1/Token.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="69">
+          <caret line="3" column="16" selection-start-line="3" selection-start-column="16" selection-end-line="3" selection-end-column="16" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/extend/lemo/api/Api.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="61">
+          <caret line="26" column="7" lean-forward="true" selection-start-line="26" selection-start-column="7" selection-end-line="26" selection-end-column="7" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/api/middleware.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="92">
+          <caret line="14" selection-start-line="14" selection-end-line="20" selection-end-column="2" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/middleware.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="276">
+          <caret line="22" lean-forward="true" selection-start-line="22" selection-end-line="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/api/route/api.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="138">
+          <caret line="16" column="21" lean-forward="true" selection-start-line="16" selection-start-column="21" selection-end-line="16" selection-end-column="21" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/config/route.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="552">
+          <caret line="30" column="34" lean-forward="true" selection-start-line="30" selection-start-column="34" selection-end-line="30" selection-end-column="34" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/controller/v1/Index.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="16" column="22" selection-start-line="16" selection-start-column="22" selection-end-line="16" selection-end-column="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/runtime/ap/log/202006/01.log">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="368">
+          <caret line="16" column="99" selection-start-line="16" selection-start-column="99" selection-end-line="16" selection-end-column="99" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/controller/ap/v1/User1.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1885">
+          <caret line="83" column="5" lean-forward="true" selection-start-line="9" selection-start-column="3" selection-end-line="83" selection-end-column="5" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/route/ap.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="184">
+          <caret line="8" selection-start-line="8" selection-end-line="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/vendor/topthink/framework/src/think/response/Json.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="368">
+          <caret line="42" column="29" selection-start-line="42" selection-start-column="23" selection-end-line="42" selection-end-column="29" />
+          <folding>
+            <element signature="e#650#667#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/vendor/topthink/framework/src/helper.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1924">
+          <caret line="324" column="45" selection-start-line="324" selection-start-column="40" selection-end-line="324" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/extend/lemo/service/WechatApp.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-621" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/extend/lemo/service/Predis.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-690" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/extend/lemo/api/Oauth.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="176">
+          <caret line="50" column="12" lean-forward="true" selection-start-line="50" selection-start-column="12" selection-end-line="56" selection-end-column="64" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/extend/lemo/api/Token.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-3842">
+          <caret line="63" lean-forward="true" selection-start-line="63" selection-end-line="63" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/controller/v1/Token.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="552">
+          <caret line="29" column="22" selection-start-line="29" selection-start-column="22" selection-end-line="29" selection-end-column="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/any_college.sql">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-579159">
+          <caret line="35" column="31" selection-start-line="35" selection-start-column="31" selection-end-line="35" selection-end-column="31" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lm_about.sql">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="96">
+          <caret line="13659" selection-start-line="13659" selection-end-line="13671" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/About.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="299">
+          <caret line="18" column="1" lean-forward="true" selection-start-line="18" selection-start-column="1" selection-end-line="18" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/WxMenu.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/WxMsgHistory.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="276">
+          <caret line="22" column="1" lean-forward="true" selection-start-line="22" selection-start-column="1" selection-end-line="22" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/FieldType.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="345">
+          <caret line="15" lean-forward="true" selection-start-line="15" selection-end-line="15" />
+          <folding>
+            <element signature="e#37#65#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/BaseModel.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="206">
+          <caret line="15" column="42" lean-forward="true" selection-start-line="15" selection-start-column="42" selection-end-line="15" selection-end-column="42" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/Config.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="69">
+          <caret line="3" column="25" selection-start-line="3" selection-start-column="25" selection-end-line="3" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/Common.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="299">
+          <caret line="13" selection-start-line="13" selection-end-line="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common/model/User.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="276">
+          <caret line="22" column="1" lean-forward="true" selection-start-line="22" selection-start-column="1" selection-end-line="22" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/controller/v1/User.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-805">
+          <caret line="30" column="26" selection-start-line="30" selection-start-column="20" selection-end-line="30" selection-end-column="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/config/database.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="92">
+          <caret line="22" column="46" selection-start-line="22" selection-start-column="46" selection-end-line="22" selection-end-column="46" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/event.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/common.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="345">
+          <caret line="197" column="7" lean-forward="true" selection-start-line="197" selection-start-column="7" selection-end-line="197" selection-end-column="7" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/middleware/Notken.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="138">
+          <caret line="11" column="6" selection-start-line="11" selection-start-column="6" selection-end-line="11" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/middleware/Token.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="138">
+          <caret line="11" column="25" lean-forward="true" selection-start-line="11" selection-start-column="25" selection-end-line="11" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/route/api.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="414">
+          <caret line="21" column="44" lean-forward="true" selection-start-line="21" selection-start-column="44" selection-end-line="21" selection-end-column="44" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app/ap/controller/Login.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="413">
+          <caret line="46" column="28" lean-forward="true" selection-start-line="46" selection-start-column="28" selection-end-line="46" selection-end-column="28" />
+          <folding>
+            <element signature="e#99#125#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/adddata.sql">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="547">
+          <caret line="53" column="43" selection-start-line="53" selection-start-column="43" selection-end-line="53" selection-end-column="43" />
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>

+ 0 - 0
php/.keep


File diff suppressed because it is too large
+ 42 - 0
php/.travis.yml


+ 56 - 0
php/adddata.sql

@@ -0,0 +1,56 @@
+DROP TABLE IF EXISTS `lm_user`;
+CREATE TABLE `lm_user`  (
+  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `user` varchar (128) NULL DEFAULT '' COMMENT '用户',
+  `name` varchar (128) NULL DEFAULT '' COMMENT '呢称',
+  `pwd` varchar (255) NULL DEFAULT '' COMMENT '密码',
+  `openid` varchar (255) NULL DEFAULT '' COMMENT '微信登录openid',
+  `token` varchar (255) NULL DEFAULT '' COMMENT 'token',
+  `money` decimal (20,2) NULL DEFAULT '0' COMMENT '账号余额',
+  `push_money` decimal (20,2) NULL DEFAULT '0' COMMENT '发布余额',
+  `status` int (1) NULL DEFAULT '0' COMMENT '0 正常 1 禁止登录',
+  `status_time` varchar (20) NULL DEFAULT '' COMMENT '封号时间',
+  `create_time` varchar (20) NULL DEFAULT '' COMMENT '创建时间',
+  `vip_time` varchar (20) NULL DEFAULT '' COMMENT '会员到期时间',
+  `vip_level` int (1) NULL DEFAULT 0 COMMENT '0 普通会员 1 周卡 2月卡 3 年卡 ',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表' ROW_FORMAT = Compact;
+
+
+DROP TABLE IF EXISTS `lm_task`;
+CREATE TABLE `lm_task`  (
+  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `type` int (11)  DEFAULT 0 COMMENT '0 实名制 1 下载注册 2 网页注册 3 关注投票 4 分享转发 5电子商务 6多天任务 7 特单任务',
+  `user_id` int (11)  DEFAULT 0 COMMENT '用户id',
+  `name` varchar (128)  DEFAULT '' COMMENT '任务名称',
+  `explain` varchar (255)  DEFAULT '' COMMENT '任务说明',
+  `text` text  DEFAULT '' COMMENT '任务步骤',
+`num` int (11)  DEFAULT 0 COMMENT '剩余数量',
+`nums` int (11)  DEFAULT 0 COMMENT '总数量',
+`money` decimal (11,2)  DEFAULT 0 COMMENT '实际金额',
+`put_money` decimal (11,2)  DEFAULT 0 COMMENT '上架金额',
+`status` int (11)  DEFAULT 0 COMMENT '0 审核中 1 审核通过 2 审核失败 3 已完成 4 已禁止',
+`msg` varchar (128)  DEFAULT '' COMMENT '审核失败原因 ',
+`repeat` int (11)  DEFAULT 0 COMMENT '0 可以重复做 1 不可以 ',
+  `end_task_time` varchar (20) NULL DEFAULT '' COMMENT '设置的结束时间',
+  `push_time` varchar (20) NULL DEFAULT '' COMMENT '提交时间',
+  `examine_time` varchar (20) NULL DEFAULT '' COMMENT '审核时长时间',
+  `create_time` varchar (20) NULL DEFAULT '' COMMENT '创建时间',
+  `update_time` varchar (20) NULL DEFAULT '' COMMENT '更新时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '任务列表' ROW_FORMAT = Compact;
+
+
+DROP TABLE IF EXISTS `lm_task_order`;
+CREATE TABLE `lm_task_order`  (
+  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `user_id` int (11)  DEFAULT 0 COMMENT '用户id',
+  `user_id` int (11)  DEFAULT 0 COMMENT '商户id',
+  `task_id` int (11)  DEFAULT 0 COMMENT '任务id',
+  `push` int (32)  DEFAULT 0 COMMENT '提交时长',
+  `examine` int (32)  DEFAULT 0 COMMENT '审核时长',
+  `add_time` varchar (20)  DEFAULT 0 COMMENT '添加时间',
+  `push_time` varchar (20)  DEFAULT 0 COMMENT '提交任务时间',
+  `content` text DEFAULT '' COMMENT '驳回数据',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '订单列表' ROW_FORMAT = Compact;

+ 18 - 0
php/addons/text/config.php

@@ -0,0 +1,18 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: anyluck
+ * Date: 2020/1/14
+ * Time: 17:38
+ */
+return [
+    'display' => [
+        'title' => '是否显示:',
+        'type' => 'radio',
+        'options' => [
+            '1' => '显示',
+            '0' => '不显示'
+        ],
+        'value' => '1'
+    ]
+];

+ 63 - 0
php/addons/text/controller/Pugin.php

@@ -0,0 +1,63 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2020/1/14
+ * Time: 17:05
+ */
+
+namespace addons\text;
+
+
+use think\Addons;
+
+/**
+ * Class Pugin
+ * @package addons\text
+ */
+class Pugin extends Addons
+{
+    // 该插件的基础信息
+    public $info = [
+        'name' => 'test',    // 插件标识
+        'title' => '插件测试',    // 插件名称
+        'description' => 'thinkph6插件测试',    // 插件简介
+        'status' => 0,    // 状态
+        'author' => 'byron sampson',
+        'version' => '0.1'
+    ];
+
+
+    /**
+     * 插件安装方法
+     * @return bool
+     */
+    public function install()
+    {
+        // TODO: Implement install() method.
+        return true;
+    }
+    /**
+     * 插件卸载方法
+     * @return bool
+     */
+    public function uninstall()
+    {
+        // TODO: Implement uninstall() method.
+        return true;
+    }
+
+    /**
+     * 实现的testhook钩子方法
+     * @return mixed
+     */
+    public function testhook($param)
+    {
+        // 调用钩子时候的参数信息
+        print_r($param);
+        // 当前插件的配置信息,配置信息存在当前目录的config.php文件中,见下方
+        print_r($this->getConfig());
+        // 可以返回模板,模板文件默认读取的为插件目录中的文件。模板名不能为空!
+        return $this->fetch('info');
+    }
+}

+ 15 - 0
php/addons/text/controller/Text.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: anyluck
+ * Date: 2020/1/14
+ * Time: 17:29
+ */
+
+namespace addons\text;
+
+
+class Text
+{
+
+}

+ 10 - 0
php/addons/text/view/pugin/info.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>

File diff suppressed because it is too large
+ 25238 - 0
php/any_college.sql


File diff suppressed because it is too large
+ 25250 - 0
php/any_college2020-2-27.sql


+ 1 - 0
php/app/.htaccess

@@ -0,0 +1 @@
+deny from all

+ 26 - 0
php/app/404.html

@@ -0,0 +1,26 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+<title>404</title>
+<style>
+	body{
+		background-color:#444;
+		font-size:14px;
+	}
+	h3{
+		font-size:60px;
+		color:#eee;
+		text-align:center;
+		padding-top:30px;
+		font-weight:normal;
+	}
+</style>
+</head>
+
+<body>
+<h3>404,您请求的文件不存在!</h3>
+</body>
+</html>

+ 213 - 0
php/app/BaseController.php

@@ -0,0 +1,213 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+declare (strict_types = 1);
+
+namespace app;
+
+use think\App;
+use think\exception\HttpResponseException;
+use think\exception\ValidateException;
+use think\Validate;
+use think\response\Redirect;
+use HttpEncodingException;
+use think\Response;
+/**
+ * 控制器基础类
+ */
+abstract class BaseController
+{
+    /**
+     * Request实例
+     * @var \think\Request
+     */
+    protected $request;
+
+    /**
+     * 应用实例
+     * @var \think\App
+     */
+    protected $app;
+
+    /**
+     * 是否批量验证
+     * @var bool
+     */
+    protected $batchValidate = false;
+
+    /**
+     * 控制器中间件
+     * @var array
+     */
+    protected $middleware = [];
+
+    /**
+     * 构造方法
+     * @access public
+     * @param  App  $app  应用对象
+     */
+    public function __construct(App $app)
+    {
+        $this->app     = $app;
+        $this->request = $this->app->request;
+
+        // 控制器初始化
+        $this->initialize();
+    }
+
+    // 初始化
+    protected function initialize()
+    {
+
+    }
+
+    /**
+     * 验证数据
+     * @access protected
+     * @param  array        $data     数据
+     * @param  string|array $validate 验证器名或者验证规则数组
+     * @param  array        $message  提示信息
+     * @param  bool         $batch    是否批量验证
+     * @return array|string|true
+     * @throws ValidateException
+     */
+    protected function validate(array $data, $validate, array $message = [], bool $batch = false)
+    {
+        if (is_array($validate)) {
+            $v = new Validate();
+            $v->rule($validate);
+        } else {
+            if (strpos($validate, '.')) {
+                // 支持场景
+                list($validate, $scene) = explode('.', $validate);
+            }
+            $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
+            $v     = new $class();
+            if (!empty($scene)) {
+                $v->scene($scene);
+            }
+        }
+
+        $v->message($message);
+
+        // 是否批量验证
+        if ($batch || $this->batchValidate) {
+            $v->batch(true);
+        }
+
+        return $v->failException(true)->check($data);
+    }
+
+    /**
+     * 操作成功跳转的快捷方法
+     * @access protected
+     * @param  mixed     $msg 提示信息
+     * @param  string    $url 跳转的URL地址
+     * @param  mixed     $data 返回的数据
+     * @param  integer   $wait 跳转等待时间
+     * @param  array     $header 发送的Header信息
+     * @return void
+     */
+    protected function success($msg = '', string $url = null, $data = '', int $wait = 3, array $header = [])
+    {
+        if (is_null($url) && isset($_SERVER["HTTP_REFERER"])) {
+            $url = $_SERVER["HTTP_REFERER"];
+        } elseif ($url) {
+            $url = (strpos($url, '://') || 0 === strpos($url, '/')) ? $url : app('route')->buildUrl($url);
+        }
+
+        $result = [
+            'code' => 1,
+            'msg'  => $msg,
+            'data' => $data,
+            'url'  => $url,
+            'wait' => $wait,
+        ];
+
+        $type = $this->getResponseType();
+        if ($type == 'html'){
+            $response = view($this->app->config->get('app.dispatch_success_tmpl'), $result);
+        } else if ($type == 'json') {
+            $response = json($result);
+        }
+        throw new HttpResponseException($response);
+    }
+
+    /**
+     * 操作错误跳转的快捷方法
+     * @access protected
+     * @param  mixed     $msg 提示信息
+     * @param  string    $url 跳转的URL地址
+     * @param  mixed     $data 返回的数据
+     * @param  integer   $wait 跳转等待时间
+     * @param  array     $header 发送的Header信息
+     * @return void
+     */
+    protected function error($msg = '', string $url = null, $data = '', int $wait = 3, array $header = [])
+    {
+        if (is_null($url)) {
+            $url = $this->request->isAjax() ? '' : 'javascript:history.back(-1);';
+        } elseif ($url) {
+            $url = (strpos($url, '://') || 0 === strpos($url, '/')) ? $url : $this->app->route->buildUrl($url);
+        }
+
+        $result = [
+            'code' => 0,
+            'msg'  => $msg,
+            'data' => $data,
+            'url'  => $url,
+            'wait' => $wait,
+        ];
+
+        $type = $this->getResponseType();
+        if ($type == 'html'){
+            $response = view($this->app->config->get('app.dispatch_error_tmpl'), $result);
+        } else if ($type == 'json') {
+            $response = json($result);
+        }
+        throw new HttpResponseException($response);
+    }
+
+
+    /**
+     * URL重定向  自带重定向无效
+     * @access protected
+     * @param  string         $url 跳转的URL表达式
+     * @param  array|integer  $params 其它URL参数
+     * @param  integer        $code http code
+     * @param  array          $with 隐式传参
+     * @return void
+     */
+    protected function redirect($url, $params = [], $code = 302, $with = [])
+    {
+        $response = Response::create($url, 'redirect');
+
+        if (is_integer($params)) {
+            $code   = $params;
+            $params = [];
+        }
+
+        $response->code($code)->with($params);
+
+        throw new HttpResponseException($response);
+    }
+
+    /**
+     * 获取当前的response 输出类型
+     * @access protected
+     * @return string
+     */
+    protected function getResponseType()
+    {
+        return $this->request->isJson() || $this->request->isAjax() ? 'json' : 'html';
+    }
+
+
+}

+ 68 - 0
php/app/ExceptionHandle.php

@@ -0,0 +1,68 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+namespace app;
+
+use think\db\exception\DataNotFoundException;
+use think\db\exception\ModelNotFoundException;
+use think\exception\Handle;
+use think\exception\HttpException;
+use think\exception\HttpResponseException;
+use think\exception\ValidateException;
+use think\Response;
+use Throwable;
+
+/**
+ * 应用异常处理类
+ */
+class ExceptionHandle extends Handle
+{
+    /**
+     * 不需要记录信息(日志)的异常类列表
+     * @var array
+     */
+    protected $ignoreReport = [
+        HttpException::class,
+        HttpResponseException::class,
+        ModelNotFoundException::class,
+        DataNotFoundException::class,
+        ValidateException::class,
+    ];
+
+    /**
+     * 记录异常信息(包括日志或者其它方式记录)
+     *
+     * @access public
+     * @param  Throwable $exception
+     * @return void
+     */
+    public function report(Throwable $exception): void
+    {
+        // 使用内置的方式记录异常日志
+        parent::report($exception);
+    }
+
+    /**
+     * Render an exception into an HTTP response.
+     *
+     * @access public
+     * @param \think\Request   $request
+     * @param Throwable $e
+     * @return Response
+     */
+    public function render($request, Throwable $e): Response
+    {
+        // 添加自定义异常处理机制
+
+        // 其他错误交给系统处理
+        return parent::render($request, $e);
+    }
+}

+ 17 - 0
php/app/Request.php

@@ -0,0 +1,17 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+namespace app;
+
+class Request extends \think\Request
+{
+
+}

+ 77 - 0
php/app/admin/controller/Adminlog.php

@@ -0,0 +1,77 @@
+<?php
+/**
+ * lemocms
+ * ============================================================================
+ * 版权所有 2018-2027 lemocms,并保留所有权利。
+ * 网站地址: https://www.lemocms.com
+ * ----------------------------------------------------------------------------
+ * 采用最新Thinkphp6实现
+ * ============================================================================
+ * Author: yuege
+ * Date: 2019/8/2
+ */
+namespace app\admin\controller;
+use app\common\controller\Backend;
+use think\facade\Config;
+use think\facade\Request;
+use app\admin\model\AdminLog as LogModel;
+use think\facade\View;
+class Adminlog extends Backend {
+
+    public function initialize()
+    {
+        parent::initialize(); // TODO: Change the autogenerated stub
+    }
+
+    /**
+     * @return array|string
+     * @throws \think\db\exception\DbException
+     */
+    public function index(){
+
+        if(Request::isPost()){
+            $keys=Request::post('keys','','trim');
+            $page = Request::post('page')?Request::post('page'):1;
+            $list = LogModel::where('status',1)
+               ->where('username|log_title','like','%'.$keys.'%')
+               ->order('id desc')
+               ->paginate(array('list_rows'=> $this->pageSize,'page'=>$page))
+               ->toArray();
+            if(!empty($list['data'])){
+                foreach ($list['data'] as $k => $v) {
+                    $useragent = explode('(', $v['log_agent']);
+                    $list['data'][$k]['log_agent'] = $useragent[0];
+                }
+            }
+            $result = ['code'=>0,'msg'=>lang('get info success'),'data'=>$list['data'],'count'=>$list['total']];
+            return $result;
+        }
+
+        return View::fetch();
+    }
+
+    /**
+     * @throws \Exception
+     * 删除日志 单个+批量
+     */
+    public function delete(){
+        $id = Request::post('id');
+        if(!$id){
+            $this->error(lang('id is not exist'));
+
+        }
+        if(!is_array($id)){
+            $id = [$id];
+        }
+
+        if(LogModel::destroy($id)){
+            $this->success(lang('delete success'));
+        }else{
+            $this->error(lang('delete fail'));
+        }
+
+
+
+    }
+
+}

+ 255 - 0
php/app/admin/controller/Adv.php

@@ -0,0 +1,255 @@
+<?php
+/**
+ * lemocms
+ * ============================================================================
+ * 版权所有 2018-2027 lemocms,并保留所有权利。
+ * 网站地址: https://www.lemocms.com
+ * ----------------------------------------------------------------------------
+ * 采用最新Thinkphp6实现
+ * ============================================================================
+ * Author: yuege
+ * Date: 2019/8/2
+ */
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+use app\common\model\AdvPosition;
+use think\facade\Db;
+use think\facade\Request;
+use think\facade\View;
+use app\common\model\Adv as AdvModel;
+class Adv extends Backend {
+
+    public function initialize(){
+        parent::initialize();
+    }
+    /*-----------------------广告管理----------------------*/
+    // 广告列表
+    public function index()
+    {
+        if(Request::isPost()){
+            $keys = Request::post('keys','','trim');
+            $page = Request::post('page') ? Request::post('page') : 1;
+            $list=Db::name('adv')->alias('a')
+                ->join('adv_position ap','a.pid = ap.id','left')
+                ->field('a.*,ap.position_name,ap.position_desc')
+                ->where('a.ad_name','like','%'.$keys.'%')
+                ->order('a.sort desc,a.id desc')
+                ->paginate(['list_rows' => $this->pageSize, 'page' => $page])
+                ->toArray();
+            return $result = ['code'=>0,'msg'=>lang('get info success'),'data'=>$list['data'],'count'=>$list['total']];
+        }
+
+        return View::fetch();
+    }
+
+    // 广告添加
+    public function add()
+    {
+        if (Request::isPost()) {
+            $data = Request::post();
+            try{
+                $this->validate($data, 'Adv');
+            }catch (\Exception $e){
+                $this->error($e->getMessage());
+            }
+            if($data['time']){
+                $time = explode(' - ',$data['time']);
+                $data['start_time'] = strtotime($time[0]);
+                $data['end_time'] = strtotime($time[1]);
+            }else{
+                $data['start_time'] = '';
+                $data['end_time'] = '';
+            }
+
+            //添加
+            $result = AdvModel::create($data);
+            if ($result) {
+                $this->success(lang('add success'), url('index'));
+            } else {
+                $this->error(lang('add fail'));
+            }
+        } else {
+            $info = '';
+            $posGroup = AdvPosition::where('status', 1)->select();
+            $view = [
+                'info'  =>$info,
+                'posGroup' => $posGroup,
+                'title' => lang('add'),
+            ];
+            View::assign($view);
+            return View::fetch();
+        }
+    }
+    /**
+     * 广告修改
+     */
+    public function edit()
+    {
+        if (Request::isPost()) {
+            $data = Request::post();
+            try{
+                $this->validate($data, 'Adv');
+            }catch (\Exception $e){
+                $this->error($e->getMessage());
+            }
+            AdvModel::update($data);
+            $this->success(lang('edit success'), url('index'));
+
+        } else {
+            $id = Request::param('id');
+            if ($id) {
+                $posGroup = AdvPosition::where('status', 1)->select();
+                $info = AdvModel::find($id);
+                $info['time'] = date('Y-m-d',$info['start_time']).' - '.date('Y-m-d',$info['end_time']);
+                $view = [
+                    'info' => $info,
+                    'posGroup' => $posGroup,
+                    'title' => '编辑',
+                ];
+                View::assign($view);
+                return View::fetch('add');
+            }
+        }
+    }
+
+
+    // 广告删除
+    public function delete()
+    {
+        $id = Request::post('id');
+        AdvModel::destroy($id);
+        $this->success(lang('delete success'));
+
+    }
+
+
+
+    // 广告状态修改
+    public function state()
+    {
+        if (Request::isPost()) {
+            $id = Request::post('id');
+            if (empty($id)) {
+                $this->error('id'.lang('not exist'));
+            }
+            $adv = AdvModel::find($id);
+            $status = $adv['status'] == 1 ? 0 : 1;
+            $adv->status = $status;
+            $adv->save();
+            $this->success(lang('edit success'));
+        }
+    }
+
+
+    /*-----------------------广告位置管理----------------------*/
+
+    // 广告位置管理
+    public function pos()
+    {
+        if(Request::isPost()){
+            //条件筛选
+            $keys = Request::param('keys');
+
+            //查出所有数据
+            $list = AdvPosition::where('position_name','like','%'.$keys.'%')
+                ->order('id desc')
+                ->paginate(
+                    $this->pageSize, false,
+                    ['query' => Request::param()]
+                )->toArray();
+            return $result = ['code'=>0,'msg'=>lang('get info success'),'data'=>$list['data'],'count'=>$list['total']];
+
+        }
+
+
+        return View::fetch();
+
+    }
+
+
+
+    // 广告位置添加
+    public function posAdd()
+    {
+        if (Request::isPost()) {
+            $data = Request::post();
+            try {
+                $this->validate($data, 'AdvPosition');
+            } catch (\Exception $e) {
+                $this->error($e->getMessage());
+            }
+            $result = AdvPosition::create($data);
+            if ($result) {
+                $this->success(lang('add  success'), url('pos'));
+            } else {
+                $this->error(lang('add fail'));
+            }
+
+        } else {
+            $view = [
+                'info' => null,
+                'title' => lang('add')
+            ];
+            View::assign($view);
+            return View::fetch('pos_add');
+        }
+    }
+
+    // 广告位置修改
+    public function posEdit()
+    {
+        if (Request::isPost()) {
+            $data = Request::post();
+
+            try{
+                $this->validate($data, 'AdvPosition');
+            }catch (\Exception $e){
+                $this->error($e->getMessage());
+            }
+            $where['id'] = $data['id'];
+            $res = AdvPosition::update($data, $where);
+            if($res){
+
+                $this->success(lang('edit success'), url('pos'));
+            }else{
+                $this->error(lang('edit fail'));
+
+            }
+
+        } else {
+            $id = Request::param('id');
+            $info = AdvPosition::find(['id' => $id]);
+            $view = [
+                'info' => $info,
+                'title' => lang('edit')
+            ];
+            View::assign($view);
+            return View::fetch('pos_add');
+        }
+    }
+
+    // 广告位置状态修改
+    public function posState()
+    {
+        if (Request::isPost()) {
+            $id = Request::param('id');
+            $info = AdvPosition::find($id);
+            $info->status = $info['status'] == 1 ? 0 : 1;
+            $info->save();
+            $this->success(lang('edit success'));
+
+        }
+    }
+    // 广告位置删除
+    public function posDel()
+    {
+        $id = Request::post('id');
+
+        AdvPosition::destroy($id);
+        $this->success(lang('delete success'));
+
+
+    }
+
+   }

+ 247 - 0
php/app/admin/controller/Article.php

@@ -0,0 +1,247 @@
+<?php
+/**
+ * lemocms
+ * ============================================================================
+ * 版权所有 2018-2027 lemocms,并保留所有权利。
+ * 网站地址: https://www.lemocms.com
+ * ----------------------------------------------------------------------------
+ * 采用最新Thinkphp6实现
+ * ============================================================================
+ * Author: yuege
+ * Date: 2019/8/26
+ */
+namespace app\admin\controller;
+use app\common\controller\Backend;
+use app\common\model\ArticleCate;
+use think\facade\Db;
+use think\facade\Lang;
+use think\facade\Request;
+use think\facade\View;
+use lemo\helper\TreeHelper;
+class Article extends  Backend {
+
+    public function initialize()
+    {
+        parent::initialize(); // TODO: Change the autogenerated stub
+    }
+
+    public function index(){
+
+        if(Request::isPost()){
+            $keys = Request::post('keys','','trim');
+            $page = Request::post('page') ? Request::post('page') : 1;
+            $list = Db::name('article')->alias('a')
+                ->join('article_cate ac','a.pid = ac.id','left')
+                ->field('a.*,ac.title as cate_name')
+                ->where('a.title|a.content','like','%'.$keys.'%')
+                ->order('a.sort desc,a.id desc')
+                ->paginate(['list_rows' => $this->pageSize, 'page' => $page])
+                ->toArray();
+            return $result = ['code'=>0,'msg'=>lang('get info success'),'data'=>$list['data'],'count'=>$list['total']];
+
+        }
+        return View::fetch();
+
+    }
+
+    public function add(){
+        if(Request::isPost()) {
+            $data = Request::post();
+            $res = \app\common\model\Article::create($data);
+            if ($res) {
+                $this->success(lang('add success'));
+            } else {
+                $this->error(lang('add fail'));
+
+            }
+        }else{
+
+            $ArticleCate = ArticleCate::where('status',1)->select()->toArray();
+            $ArticleCate= TreeHelper::cateTree($ArticleCate);
+            $params['name'] = 'container';
+            $params['content'] = '';
+            $view = [
+                'info' => '',
+                'ArticleCate' => $ArticleCate,
+                'title' => lang('add'),
+                'ueditor'=>build_ueditor($params),
+            ];
+            View::assign($view);
+            return View::fetch('add');
+        }
+    }
+
+    public function edit()
+    {
+        if(Request::isPost()){
+            $data = Request::post();
+            if(!$data['id']){
+                $this->error(lang('invalid data'));
+            }
+
+            $res = \app\common\model\Article::update($data);
+            if($res){
+                $this->success(lang('edit success'));
+            }else{
+                $this->error(lang('edit fail'));
+
+            }
+        }else{
+            $id =  Request::get('id');
+            $ArticleCate = ArticleCate::where('status',1)->select()->toArray();
+            $ArticleCate= TreeHelper::cateTree($ArticleCate);
+
+            $info = \app\common\model\Article::find($id);
+            $params['name'] = 'container';
+            $params['content'] = $info['content'];
+            $view = [
+                'info' => $info,
+                'ArticleCate' => $ArticleCate,
+                'title' => lang('edit'),
+                'ueditor'=>build_ueditor($params),
+            ];
+            View::assign($view);
+            return View::fetch('add');
+        }
+
+
+    }
+
+    public function state()
+    {
+        $id = Request::post('id');
+        if (empty($id)) {
+            $this->error('data not exist');
+        }
+        $info = \app\common\model\Article::find($id);
+        $status = $info['status'] == 1 ? 0 : 1;
+        $info->status = $status;
+        $info->save();
+        $this->success(lang('edit success'));
+
+    }
+    public function delete(){
+
+        if(Request::isPost()){
+
+            $id = Request::post('id');
+            \app\common\model\Article::destroy($id);
+            $this->success('delete success');
+        }
+
+    }
+
+    public function articleCate(){
+        if(Request::isPost()){
+            $keys = Request::post('keys','','trim');
+            $page = Request::post('page') ? Request::post('page') : 1;
+            $list= cache('articleCate');
+            if(!$list) {
+                $list = Db::name('article_cate')
+                    ->where('title','like','%'.$keys.'%')
+                    ->paginate(['list_rows' => $this->pageSize, 'page' => $page])
+                    ->toArray();
+                foreach($list['data'] as $k=>$v){
+                    $list['data'][$k]['lay_is_open']=false;
+                }
+                cache('articleCate', $list, 3600);
+            }
+
+
+            return $result = ['code'=>0,'msg'=>lang('get info success'),'data'=>$list['data'],'count'=>$list['total']];
+
+        }
+        return View::fetch();
+    }
+
+    public function cateAdd(){
+        if(Request::isPost()) {
+            $data = Request::post();
+            $res = \app\common\model\ArticleCate::create($data);
+            if ($res) {
+                $this->success(lang('add success'));
+            } else {
+                $this->error(lang('add fail'));
+
+            }
+        }else{
+
+            $ArticleCate = ArticleCate::where('status',1)->select()->toArray();
+            $ArticleCate= TreeHelper::cateTree($ArticleCate);
+
+            $view = [
+                'info' => '',
+                'ArticleCate' => $ArticleCate,
+                'title' =>lang('add'),
+            ];
+            View::assign($view);
+            return View::fetch('cate_add');
+        }
+
+    }
+    public function cateEdit(){
+        if(Request::isPost()){
+            $data = Request::post();
+            if(!$data['id']){
+                $this->error(lang('invalid data'));
+            }
+
+            $res = \app\common\model\ArticleCate::update($data);
+            if($res){
+                $this->success(lang('edit success'));
+            }else{
+                $this->error(lang('edit fail'));
+
+            }
+        }else{
+            $id =  Request::get('id');
+            $ArticleCate = ArticleCate::where('status',1)->select()->toArray();
+            $ArticleCate= TreeHelper::cateTree($ArticleCate);
+
+            $info = \app\common\model\ArticleCate::find($id);
+
+            $view = [
+                'info' => $info,
+                'ArticleCate' => $ArticleCate,
+                'title' => lang('edit'),
+            ];
+            View::assign($view);
+            return View::fetch('cate_add');
+        }
+
+
+    }
+
+    public function cateState(){
+        $data =  Request::post();
+        $id = Request::post('id');
+        if (empty($id)) {
+            $this->error(lang('data not exist'));
+        }
+        $info  = \app\common\model\ArticleCate::find($id);
+        $status = $info['status'] == 1 ? 0 : 1;
+        $info->status = $status;
+        $info->save();
+        $this->success(lang('edit success'));
+
+    }
+    public function cateDel(){
+
+        if(Request::isPost()){
+
+            $id = Request::post('id');
+            $child = \app\common\model\ArticleCate::where('pid',$id)->find();
+            if($child){
+                $this->error(lang('delete child first'));
+            }
+            if(\app\common\model\ArticleCate::destroy($id)){
+                $this->success(lang('delete success'));
+            }else{
+                $this->error(lang('delete fail'));
+            }
+        }
+
+    }
+
+
+}

+ 552 - 0
php/app/admin/controller/Auth.php

@@ -0,0 +1,552 @@
+<?php
+/**
+ * lemocms
+ * ============================================================================
+ * 版权所有 2018-2027 lemocms,并保留所有权利。
+ * 网站地址: https://www.lemocms.com
+ * ----------------------------------------------------------------------------
+ * 采用最新Thinkphp6实现
+ * ============================================================================
+ * Author: yuege
+ * Date: 2019/8/2
+ */
+namespace app\admin\controller;
+
+use app\admin\model\AuthGroup;
+use app\admin\model\AuthRule;
+use app\admin\model\Admin;
+use app\common\controller\Backend;
+use lemo\helper\SignHelper;
+use lemo\helper\StringHelper;
+use lemo\helper\TreeHelper;
+use think\facade\Cache;
+use think\facade\Config;
+use think\facade\Db;
+use think\facade\Request;
+use think\facade\Session;
+use think\facade\View;
+
+class Auth extends Backend
+{
+    public $uid = '';
+    public function initialize()
+    {
+        $this->uid = Session::get('admin.id');
+        parent::initialize(); // TODO: Change the autogenerated stub
+    }
+    /*-----------------------管理员管理----------------------*/
+    // 管理员列表
+    public function adminList()
+    {
+        if(Request::isPost()){
+            $where=Request::post();
+            $map=[];
+            $map1=[];
+            $map2=[];
+            if(isset($where['keys'])) {
+                $map = [
+                    ['a.username', 'like', "%" . $where['keys'] . "%"],
+
+                ];
+                $map1 = [
+                    ['a.email', 'like', "%" . $where['keys'] . "%"],
+
+                ];
+                $map2= [
+                    ['a.mobile', 'like', "%" . $where['keys'] . "%"],
+                ];
+            }
+
+            $page=input("page")?:1;
+            $limit=input("limit")?:10;
+            $list=Db::name('admin')->order("id desc")->alias('a')
+                ->join('auth_group ag','a.group_id = ag.id','left')
+                ->field('a.*,ag.title')
+                ->whereOr($map,$map1,$map2)
+                ->paginate(['list_rows' =>$limit, 'page' => $page])->toArray();
+//                ->select();
+//            var_dump($list);
+            return $result = ['code' => 0, 'msg' => lang('get info success'), 'data' => $list['data'], 'count' => $list['total']];
+//            return $result = ['code'=>0,'msg'=>lang('get info success'),'data'=>$list];
+        }
+
+        return View::fetch();
+    }
+
+    // 管理员添加
+    public function adminAdd()
+    {
+        if (Request::isPost()) {
+            $data = Request::post();
+            try{
+                $this->validate($data, 'Admin');
+            }catch (\Exception $e){
+                $this->error($e->getMessage());
+            }
+            $data['password'] = StringHelper::filterWords($data['password']);
+            if(!$data['password']){
+                $data['password']='123456';
+            }
+            $data['password'] = password_hash($data['password'],PASSWORD_BCRYPT, SignHelper::passwordSalt());
+            //添加
+            $result = Admin::create($data);
+            if ($result) {
+                $this->success(lang('add success'), url('adminList'));
+            } else {
+                $this->error(lang('add fail'));
+            }
+        } else {
+            $info = '';
+            $auth_group = AuthGroup::where('status', 1)->select();
+            $view = [
+                'info'  =>$info,
+                'authGroup' => $auth_group,
+                'title' => lang('add'),
+            ];
+            View::assign($view);
+            return View::fetch();
+        }
+    }
+
+    // 管理员删除
+    public function adminDel()
+    {
+        $id = Request::post('id');
+        if ($id > 1) {
+            Admin::destroy($id);
+            $this->success(lang('delete success'));
+        } else {
+            $this->error(lang('supper man cannot delete'));
+
+        }
+    }
+
+
+
+    // 管理员状态修改
+    public function adminState()
+    {
+        if (Request::isPost()) {
+            $id = Request::post('id');
+            if (empty($id)) {
+                $this->error('id'.lang('not exist'));
+            }
+            if ($id == 1) {
+                $this->error(lang('supper man cannot edit state'));
+            }
+//            if($this->uid==3){
+//                $this->error(lang('test data cannot edit'));
+//
+//            }
+
+            $admin = Admin::find($id);
+            $status = $admin['status'] == 1 ? 0 : 1;
+            $admin->status = $status;
+            $admin->save();
+            $this->success(lang('edit success'));
+        }
+    }
+
+    /**
+     * 管理员修改
+     */
+    public function adminEdit()
+    {
+        if (Request::isPost()) {
+            $data = Request::post();
+            if(!$data['username']) $this->error(lang('username').lang('cannot null'));
+//            if(!$data['password'])
+            if(!$data['group_id']) $this->error(lang('adminGroup').lang('cannot null'));
+            $admin = Admin::find($data['id']);
+
+//            if(password_verify($data['password'],$admin['password'])){
+//                unset($data['password']);
+//
+//            }else{
+//                $data['password'] = Request::post('password', '123456', 'lemo\helper\StringHelper::filterWords');
+//                $data['password'] = password_hash($data['password'],PASSWORD_BCRYPT, SignHelper::passwordSalt());
+//            }
+
+            if ($data["password"]){
+                $data['password'] = password_hash($data['password'],PASSWORD_BCRYPT, SignHelper::passwordSalt());
+            }else{
+                unset($data['password']);
+            }
+
+            Admin::update($data);
+
+//            if($this->uid==$data['id']){
+//                Session::set('admin',null);
+//            }
+
+            $this->success(lang('edit success'), url('Auth/adminList'));
+
+        } else {
+            $id = Request::param('id')?Request::param('id'):$this->uid;
+            if ($id) {
+                $auth_group = AuthGroup::select();
+                $admin = Admin::field("id,group_id,username,mobile")->find($id);
+                $view = [
+                    'info' => $admin,
+                    'authGroup' => $auth_group,
+                    'title' => lang('edit'),
+                ];
+                View::assign($view);
+                return View::fetch('admin_add');
+            }
+        }
+    }
+
+    /********************************权限管理*******************************/
+    // 权限列表
+    public function adminRule()
+    {
+        if(Request::isPost()){
+            $uid = $this->uid;
+
+            $arr = Db::name('auth_rule')
+                ->where("status","<>",0)
+                ->order('pid asc,sort asc')
+                ->select()->toArray();
+            foreach($arr as $k=>$v){
+                $arr[$k]['lay_is_open']=false;
+            }
+            cache('authRuleList_'.$uid, $arr, 3600);
+
+            return $result = ['code'=>0,'msg'=>lang('get info success'),'data'=>$arr,'is'=>true,'tip'=>'操作成功'];
+        }
+        return View::fetch('admin_rule');
+    }
+
+    // 权限菜单显示或者隐藏
+    public function ruleState()
+    {
+        if (Request::isPost()) {
+            $id = Request::param('id');
+            $info = AuthRule::find($id);
+            $info->menu_status = $info['menu_status'] == 1 ? 0 : 1;
+            $info->save();
+            $this->success(lang('edit success'));
+
+        }
+    }
+
+    // 设置权限是否验证
+    public function ruleOpen()
+    {
+        if (Request::isPost()) {
+            $id = Request::param('id');
+            $info = AuthRule::find($id);
+            $info->auth_open = $info['auth_open'] == 1 ? 0 : 1;
+            $info->save();
+            $this->success(lang('edit success'));
+        }
+    }
+
+    // 设置权限排序
+    public function ruleSort()
+    {
+        if (Request::isPost()) {
+            $id = Request::param('id');
+            $sort = Request::param('sort');
+            $info = AuthRule::find($id);
+            $info->sort = $sort;
+            $info->save();
+            $this->success(lang('edit success'));
+        }
+    }
+
+    // 权限删除
+    public function ruleDel()
+    {
+        $id = Request::param('id');
+        $child = AuthRule::where('pid',$id)->find();
+        if ($id && !$child) {
+            AuthRule::destroy($id);
+            $this->success(lang('delete success'));
+        }elseif($child){
+            $this->error(lang('delete child first'));
+
+        }else{
+            $this->error('id'.lang('not exist'));
+        }
+    }
+
+    // 权限批量删除
+    public function ruleSelectDel()
+    {
+        $ids = Request::param('ids');
+        if ($ids) {
+
+            AuthRule::destroy($ids);
+            $this->success(lang('delete success'));
+        }
+
+    }
+
+    // 权限增加
+    public function ruleAdd()
+    {
+        if (Request::isPost()) {
+            $data = Request::post();
+            if (empty($data['title'])) {
+                $this->error(lang('rule name cannot null'));
+            }
+            if (empty($data['sort'])) {
+                $this->error(lang('sort').lang(' cannot null'));
+            }
+            $data['icon'] = $data['icon']?$data['icon']:'fa fa-adjust';
+            if (AuthRule::create($data)) {
+                $this->success(lang('add success'), url('adminRule'));
+            } else {
+                $this->error(lang('add fail'));
+            }
+        } else {
+            $list = Db::name('auth_rule')
+                ->order('sort ASC')
+                ->select();
+            $list = TreeHelper::cateTree($list);
+            $pid = Request::param('id') ? Request::param('id') : 0;
+            $rule = '';
+            if(Request::get('rule_id')){
+                $rule = Db::name('auth_rule')
+                    ->find(Request::get('rule_id'));
+            }
+
+            $view = [
+                'info' => null,
+                'pid' => $pid,
+                'ruleList' => $list,
+                'rule' =>$rule,
+            ];