Przeglądaj źródła

修改导航池筛选

rkljw 3 miesięcy temu
rodzic
commit
4d82e64d57

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 190 - 0
.idea/admin_consumer.iml

@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/./test" isTestSource="true" packagePrefix="HyperfTest\" />
+      <sourceFolder url="file://$MODULE_DIR$/app" isTestSource="false" packagePrefix="App\" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/aws/aws-crt-php" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/aws/aws-sdk-php" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/carbonphp/carbon-doctrine-types" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/clue/ndjson-react" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/death_satan/hyperf-validate" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/easyswoole/spl" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/easyswoole/verifycode" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/egulias/email-validator" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/evenement/evenement" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/fidry/cpu-core-counter" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/fig/http-message-util" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/friendsofhyperf/openai-client" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/friendsofphp/php-cs-fixer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/graham-campbell/result-type" />
+      <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/hamcrest/hamcrest-php" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/amqp" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/async-queue" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/cache" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/code-parser" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/codec" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/collection" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/command" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/conditionable" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/config" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/config-center" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/config-nacos" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/constants" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/consul" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/context" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/contract" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/coordinator" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/coroutine" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/database" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/db-connection" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/devtool" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/di" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/dispatcher" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/engine" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/engine-contract" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/event" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/exception-handler" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/framework" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/guzzle" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/http-message" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/http-server" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/json-rpc" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/load-balancer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/logger" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/macroable" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/memory" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/model-listener" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/nacos" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/pipeline" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/pool" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/process" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/redis" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/rpc" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/rpc-client" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/rpc-server" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/serializer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/server" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/service-governance" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/service-governance-consul" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/service-governance-nacos" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/snowflake" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/stdlib" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/stringable" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/support" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/tappable" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/testing" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/translation" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/utils" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/validation" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/watcher" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/websocket-server" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/jetbrains/phpstorm-attributes" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/laminas/laminas-mime" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/laminas/laminas-stdlib" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/lcobucci/clock" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/lcobucci/jwt" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/markrogoyski/math-php" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/mockery/mockery" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/mtdowling/jmespath.php" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/nikic/fast-route" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/openai-php/client" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/paragonie/constant_time_encoding" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/paragonie/random_compat" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/manifest" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/version" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/php-amqplib/php-amqplib" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/php-di/phpdoc-reader" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/php-http/discovery" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/php-http/multipart-stream-builder" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phper666/jwt-auth" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpoption/phpoption" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpseclib/phpseclib" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpstan" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-code-coverage" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-file-iterator" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-invoker" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-text-template" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/clock" />
+      <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-client" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-handler" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-middleware" />
+      <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/react/cache" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/react/child-process" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/react/dns" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/react/event-loop" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/react/promise" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/react/socket" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/react/stream" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/cli-parser" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/complexity" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/diff" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/global-state" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/lines-of-code" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/type" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/stella-maris/clock" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/swoole/ide-helper" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/swow/psr7-plus" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-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/finder" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-foundation" />
+      <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-grapheme" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-idn" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-normalizer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php81" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php83" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/process" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/service-contracts" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/stopwatch" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/string" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation-contracts" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/vlucas/phpdotenv" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/zx/php-tools" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 9 - 0
.idea/libraries/1727437831314573.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="判决书1727437831314573">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/public/zip/20240927/判决书1727437831314573.zip!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 19 - 0
.idea/libraries/20240906.xml

@@ -0,0 +1,19 @@
+<component name="libraryTable">
+  <library name="20240906">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/录音录像1725590820187236.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/判决书1725590934864275.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/录音录像1725590882646822.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/判决书1725591082306497.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/判决书1725590884716474.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/判决书1725590297411779.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/资质1725590932597138.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/录音录像1725590933641951.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/判决书172559050930373.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/判决书1725589661773210.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20240906/合同172559093385022.zip!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 19 - 0
.idea/libraries/20241104.xml

@@ -0,0 +1,19 @@
+<component name="libraryTable">
+  <library name="20241104">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download173071524121693.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730715241223762.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730715329646641.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730715237731300.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730715287563369.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730715241215835.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/判决书1730697525336820.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730715447661235.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730714974916194.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download173071539468916.zip!/" />
+      <root url="jar://$PROJECT_DIR$/public/zip/20241104/download1730715241606612.zip!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 9 - 0
.idea/libraries/download1730765980111319.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="download1730765980111319">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/public/zip/20241105/download1730765980111319.zip!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 9 - 0
.idea/libraries/download1732238036505141.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="download1732238036505141">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/public/zip/20241122/download1732238036505141.zip!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 6 - 0
.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 8 - 0
.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/admin_consumer.iml" filepath="$PROJECT_DIR$/.idea/admin_consumer.iml" />
+    </modules>
+  </component>
+</project>

+ 191 - 0
.idea/php.xml

@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PhpIncludePathManager">
+    <include_path>
+      <path value="$PROJECT_DIR$/vendor/hyperf/engine-contract" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/code-parser" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/snowflake" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/redis" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/engine" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/memory" />
+      <path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/watcher" />
+      <path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/collection" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/testing" />
+      <path value="$PROJECT_DIR$/vendor/symfony/console" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/nacos" />
+      <path value="$PROJECT_DIR$/vendor/evenement/evenement" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/json-rpc" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/cache" />
+      <path value="$PROJECT_DIR$/vendor/phar-io/version" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/event" />
+      <path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/service-governance-consul" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/codec" />
+      <path value="$PROJECT_DIR$/vendor/php-di/phpdoc-reader" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/config-nacos" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/config-center" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/dispatcher" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/model-listener" />
+      <path value="$PROJECT_DIR$/vendor/php-amqplib/php-amqplib" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/pool" />
+      <path value="$PROJECT_DIR$/vendor/jetbrains/phpstorm-attributes" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/translation" />
+      <path value="$PROJECT_DIR$/vendor/easyswoole/spl" />
+      <path value="$PROJECT_DIR$/vendor/clue/ndjson-react" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/logger" />
+      <path value="$PROJECT_DIR$/vendor/easyswoole/verifycode" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/contract" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/consul" />
+      <path value="$PROJECT_DIR$/vendor/swoole/ide-helper" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/utils" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/constants" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/load-balancer" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/command" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/support" />
+      <path value="$PROJECT_DIR$/vendor/paragonie/constant_time_encoding" />
+      <path value="$PROJECT_DIR$/vendor/paragonie/random_compat" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/context" />
+      <path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/server" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/service-governance-nacos" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/config" />
+      <path value="$PROJECT_DIR$/vendor/friendsofphp/php-cs-fixer" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/rpc" />
+      <path value="$PROJECT_DIR$/vendor/swow/psr7-plus" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/stringable" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/devtool" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/pipeline" />
+      <path value="$PROJECT_DIR$/vendor/fidry/cpu-core-counter" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/coroutine" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/http-server" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/amqp" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/http-message" />
+      <path value="$PROJECT_DIR$/vendor/composer" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/macroable" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/di" />
+      <path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/coordinator" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/db-connection" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-php83" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/validation" />
+      <path value="$PROJECT_DIR$/vendor/symfony/stopwatch" />
+      <path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/guzzle" />
+      <path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/rpc-client" />
+      <path value="$PROJECT_DIR$/vendor/symfony/finder" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/websocket-server" />
+      <path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-php81" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/tappable" />
+      <path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
+      <path value="$PROJECT_DIR$/vendor/friendsofhyperf/openai-client" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/service-governance" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
+      <path value="$PROJECT_DIR$/vendor/hamcrest/hamcrest-php" />
+      <path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
+      <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
+      <path value="$PROJECT_DIR$/vendor/nikic/fast-route" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/conditionable" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
+      <path value="$PROJECT_DIR$/vendor/symfony/process" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/stdlib" />
+      <path value="$PROJECT_DIR$/vendor/symfony/translation" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/serializer" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/rpc-server" />
+      <path value="$PROJECT_DIR$/vendor/phpstan/phpstan" />
+      <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
+      <path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
+      <path value="$PROJECT_DIR$/vendor/symfony/string" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/framework" />
+      <path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
+      <path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
+      <path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
+      <path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
+      <path value="$PROJECT_DIR$/vendor/laminas/laminas-mime" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/exception-handler" />
+      <path value="$PROJECT_DIR$/vendor/laminas/laminas-stdlib" />
+      <path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
+      <path value="$PROJECT_DIR$/vendor/php-http/multipart-stream-builder" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/process" />
+      <path value="$PROJECT_DIR$/vendor/php-http/discovery" />
+      <path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
+      <path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
+      <path value="$PROJECT_DIR$/vendor/zx/php-tools" />
+      <path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
+      <path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
+      <path value="$PROJECT_DIR$/vendor/monolog/monolog" />
+      <path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
+      <path value="$PROJECT_DIR$/vendor/fig/http-message-util" />
+      <path value="$PROJECT_DIR$/vendor/markrogoyski/math-php" />
+      <path value="$PROJECT_DIR$/vendor/psr/simple-cache" />
+      <path value="$PROJECT_DIR$/vendor/psr/clock" />
+      <path value="$PROJECT_DIR$/vendor/psr/http-server-middleware" />
+      <path value="$PROJECT_DIR$/vendor/psr/cache" />
+      <path value="$PROJECT_DIR$/vendor/psr/http-message" />
+      <path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
+      <path value="$PROJECT_DIR$/vendor/psr/container" />
+      <path value="$PROJECT_DIR$/vendor/psr/http-client" />
+      <path value="$PROJECT_DIR$/vendor/psr/http-server-handler" />
+      <path value="$PROJECT_DIR$/vendor/psr/http-factory" />
+      <path value="$PROJECT_DIR$/vendor/react/child-process" />
+      <path value="$PROJECT_DIR$/vendor/react/event-loop" />
+      <path value="$PROJECT_DIR$/vendor/react/stream" />
+      <path value="$PROJECT_DIR$/vendor/react/cache" />
+      <path value="$PROJECT_DIR$/vendor/openai-php/client" />
+      <path value="$PROJECT_DIR$/vendor/react/promise" />
+      <path value="$PROJECT_DIR$/vendor/react/socket" />
+      <path value="$PROJECT_DIR$/vendor/psr/log" />
+      <path value="$PROJECT_DIR$/vendor/lcobucci/jwt" />
+      <path value="$PROJECT_DIR$/vendor/react/dns" />
+      <path value="$PROJECT_DIR$/vendor/lcobucci/clock" />
+      <path value="$PROJECT_DIR$/vendor/phpseclib/phpseclib" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/database" />
+      <path value="$PROJECT_DIR$/vendor/mockery/mockery" />
+      <path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
+      <path value="$PROJECT_DIR$/vendor/phper666/jwt-auth" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/type" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/diff" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/environment" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/version" />
+      <path value="$PROJECT_DIR$/vendor/death_satan/hyperf-validate" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
+      <path value="$PROJECT_DIR$/vendor/stella-maris/clock" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
+      <path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
+      <path value="$PROJECT_DIR$/vendor/graham-campbell/result-type" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
+      <path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
+      <path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
+      <path value="$PROJECT_DIR$/vendor/hyperf/async-queue" />
+      <path value="$PROJECT_DIR$/vendor/carbonphp/carbon-doctrine-types" />
+      <path value="$PROJECT_DIR$/vendor/aws/aws-crt-php" />
+      <path value="$PROJECT_DIR$/vendor/aws/aws-sdk-php" />
+      <path value="$PROJECT_DIR$/vendor/mtdowling/jmespath.php" />
+    </include_path>
+  </component>
+  <component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
+  <component name="PhpUnit">
+    <phpunit_settings>
+      <PhpUnitSettings configuration_file_path="$PROJECT_DIR$/phpunit.xml.dist" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" use_configuration_file="true" />
+    </phpunit_settings>
+  </component>
+</project>

+ 10 - 0
.idea/phpunit.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PHPUnit">
+    <option name="directories">
+      <list>
+        <option value="$PROJECT_DIR$/test" />
+      </list>
+    </option>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

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

+ 427 - 418
app/Controller/NewsController.php

@@ -1,419 +1,428 @@
-<?php
-declare(strict_types=1);
-namespace App\Controller;
-
-use App\JsonRpc\NewsServiceInterface;
-use App\Tools\PublicData;
-use Hyperf\Di\Annotation\Inject;
-use Hyperf\HttpServer\Annotation\AutoController;
-use App\Tools\Result;
-use Hyperf\Validation\Contract\ValidatorFactoryInterface;
-use Hyperf\Context\Context;
-/**
- * Class NewsController
- * @package App\Controller
- */
-//#[AutoController]
-class NewsController extends AbstractController
-{
-    #[Inject]
-    protected ValidatorFactoryInterface $validationFactory;
-
-    /**
-     * @var NewsServiceInterface
-     */
-    #[Inject]
-    private $newsServiceClient;
-
-    /**
-     * 导航池列表
-     * @return void
-     */
-    public function getCategoryList()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'page'=> 'required',
-                'pageSize'=> 'required',
-            ],
-            [
-                'page.required' => '第几页不能为空',
-                'pageSize.required' => '每页显示条数不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-
-
-        $result = $this->newsServiceClient->getCategoryList($requireData);
-        if($result['data']){
-            foreach ($result['data']['rows'] as $k=>$v) {
-                $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr']?json_decode($v['pid_arr']):[0];
-            }
-        }
-        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 站点下的导航池
-     * @return void
-     */
-    public function categoryList()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'pid'=> 'required'
-            ],
-            [
-                'pid.required' => '父级ID不能为空'
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-//        $requireData['website_id'] = Context::get("SiteId");
-        $result = $this->newsServiceClient->categoryList($requireData);
-        $rep = PublicData::buildMenuTree($result['data']);
-        return $result ? Result::success($rep) : Result::error($result['message']);
-    }
-
-    /**
-     * 添加导航
-     * @return array|void
-     */
-    public function addCategory()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'name'=> 'required',
-                'seo_title'=> 'required',
-                'seo_keywords'=> 'required',
-                'seo_description'=> 'required',
-            ],
-            [
-                'name.required' => '导航池名称不能为空',
-                'seo_title.required' => 'seo标题名称不能为空',
-                'seo_keywords.required' => 'seo关键词不能为空',
-                'seo_description.required' => 'seo描述不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-
-        $requireData['pid'] = isset($requireData['pid_arr'])?end($requireData['pid_arr']):'';
-        $requireData['pid_arr'] = isset($requireData['pid_arr'])?json_encode($requireData['pid_arr']):'';
-
-        $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
-        $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
-
-        $requireData['department_id'] = isset($requireData['department_arr_id'])?end($requireData['department_arr_id']):'';
-        $requireData['department_arr_id'] = isset($requireData['department_arr_id'])?json_encode($requireData['department_arr_id']):'';
-
-        $result = $this->newsServiceClient->addCategory($requireData);
-        return $result ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 更新导航池
-     * @return array
-     */
-    public function updateCategory()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id'=>'required',
-                'name'=> 'required',
-                'seo_title'=> 'required',
-                'seo_keywords'=> 'required',
-                'seo_description'=> 'required',
-            ],
-            [
-                'id.required' =>'ID不能为空',
-                'name.required' => '栏目池名称不能为空',
-                'seo_title.required' => 'seo标题名称不能为空',
-                'seo_keywords.required' => 'seo关键词不能为空',
-                'seo_description.required' => 'seo描述不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['pid'] = isset($requireData['pid_arr'])?end($requireData['pid_arr']):'';
-        $requireData['pid_arr'] = isset($requireData['pid_arr'])?json_encode($requireData['pid_arr']):'';
-
-        $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
-        $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
-
-        $requireData['department_id'] = isset($requireData['department_arr_id'])?end($requireData['department_arr_id']):'';
-        $requireData['department_arr_id'] = isset($requireData['department_arr_id'])?json_encode($requireData['department_arr_id']):'';
-
-        $result = $this->newsServiceClient->updateCategory($requireData);
-        return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除分类
-     * @return array
-     */
-    public function delCategory()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id'=> 'required',
-
-            ],
-            [
-                'id.required' => 'id不能为空',
-
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->newsServiceClient->delCategory($requireData);
-        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 资讯列表
-     * @return void
-     */
-    public function getArticleList()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'page'=> 'required',
-                'pageSize'=> 'required',
-
-            ],
-            [
-                'page.required' => 'id不能为空',
-                'pageSize.required' => 'id不能为空',
-
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['website_id'] = Context::get("SiteId");
-        var_dump("资讯:",$requireData);
-        $result = $this->newsServiceClient->getArticleList($requireData);
-        //1通过,2待审核,3待发 4,拒绝 5删除
-        $statusList = [
-            '0'=>'待审核',
-            '1'=>'已发布',
-            '2'=>'待审核',
-            '3'=>'待发',
-            '4'=>'拒绝',
-            '5'=>'删除',
-        ];
-        if($result['data']){
-            foreach ($result['data']['rows'] as $k=>$v) {
-                $result['data']['rows'][$k]['cat_arr_id'] = $v['cat_arr_id']?json_decode($v['cat_arr_id']):[0];
-                $result['data']['rows'][$k]['tag'] = $v['tag']?json_decode($v['tag']):[];
-                $result['data']['rows'][$k]['status_name'] = $statusList[$v['status']];
-                $result['data']['rows'][$k]['level'] = (string)$v['level'];
-                $result['data']['rows'][$k]['islink'] = isset($v['islink']) && $v['islink']>0?true:false;
-            }
-        }
-        $result = $this->newsServiceClient->getArticleList($requireData);
-
-        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 获取导航池信息
-     * @return void
-     */
-    public function getCategoryInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id'=> 'required',
-
-            ],
-            [
-                'id.required' => 'id不能为空',
-
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->newsServiceClient->getCategoryInfo($requireData);
-        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 添加分类
-     * @return array|void
-     */
-    public function addArticle()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'title'=> 'required',
-                'cat_arr_id'=> 'required',
-                'author'=> 'required',
-
-            ],
-            [
-                'title.required' => '标题不能为空',
-                'cat_arr_id.required' => '导航池ID不能为空',
-                'author.required' => '作者不能为空',
-            ]
-        );
-        if ($validator->fails()){
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['catid'] = isset($requireData['cat_arr_id'])?end($requireData['cat_arr_id']):'';
-        $requireData['cat_arr_id'] = isset($requireData['cat_arr_id'])?json_encode($requireData['cat_arr_id']):'';
-
-        $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
-        $requireData['ip'] = $loginIp;
-        $requireData['admin_user_id'] =Context::get("UserId");
-        
-        $requireData['level'] = isset($requireData['level']) &&  $requireData['level']?$requireData['level']:0;
-        $requireData['hits'] = isset($requireData['hits']) &&  $requireData['hits']?$requireData['hits']:0;
-        $requireData['is_original'] = isset($requireData['is_original']) &&  $requireData['is_original']?$requireData['is_original']:0;
-        $requireData['status'] = isset($requireData['status']) &&  $requireData['status']?$requireData['status']:0;
-//        var_dump("入参:",$requireData);
-        $result = $this->newsServiceClient->addArticle($requireData);
-
-        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 更新资讯
-     * @return array
-     */
-    public function updateArticle()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id'=>'required',
-                'title'=> 'required',
-                'cat_arr_id'=> 'required',
-                'author'=> 'required',
-            ],
-            [
-                'title.required' => '标题不能为空',
-                'cat_arr_id.required' => '导航池ID不能为空',
-                'author.required' => '作者不能为空',
-                'id.required' =>'ID不能为空'
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['catid'] = isset($requireData['cat_arr_id'])?end($requireData['cat_arr_id']):'';
-        $requireData['cat_arr_id'] = isset($requireData['cat_arr_id'])?json_encode($requireData['cat_arr_id']):'';
-
-        $result = $this->newsServiceClient->updateArticle($requireData);
-        return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 更新资讯状态
-     * @return array
-     */
-    public function upArticleStatus()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id'=>'required',
-                'status'=> 'required',
-            ],
-            [
-                'id.required' => 'id不能为空',
-                'status.required' => '状态不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->newsServiceClient->upArticleStatus($requireData);
-        return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除分类
-     * @return array
-     */
-    public function delArticle()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id'=> 'required',
-            ],
-            [
-                'id.required' => 'id不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->newsServiceClient->delArticle($requireData);
-        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 获取资讯信息
-     * @return array
-     */
-    public function  getArticleInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id'=> 'required',
-            ],
-            [
-                'id.required' => 'id不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-
-        $result = $this->newsServiceClient->getArticleInfo($requireData);
-        $result['data']['cat_arr_id'] =  $result['data']['cat_arr_id']?json_decode($result['data']['cat_arr_id']):[];
-        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-
+<?php
+declare(strict_types=1);
+namespace App\Controller;
+
+use App\JsonRpc\NewsServiceInterface;
+use App\Tools\PublicData;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\HttpServer\Annotation\AutoController;
+use App\Tools\Result;
+use Hyperf\Validation\Contract\ValidatorFactoryInterface;
+use Hyperf\Context\Context;
+/**
+ * Class NewsController
+ * @package App\Controller
+ */
+//#[AutoController]
+class NewsController extends AbstractController
+{
+    #[Inject]
+    protected ValidatorFactoryInterface $validationFactory;
+
+    /**
+     * @var NewsServiceInterface
+     */
+    #[Inject]
+    private $newsServiceClient;
+
+    /**
+     * 导航池列表
+     * @return void
+     */
+    public function getCategoryList()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'page'=> 'required',
+                'pageSize'=> 'required',
+            ],
+            [
+                'page.required' => '第几页不能为空',
+                'pageSize.required' => '每页显示条数不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+
+        $result = $this->newsServiceClient->getCategoryList($requireData);
+        if($result['data']){
+            foreach ($result['data']['rows'] as $k=>$v) {
+                $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr']?json_decode($v['pid_arr']):[0];
+            }
+        }
+        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 站点下的导航池
+     * @return void
+     */
+    public function categoryList()
+    {
+
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'pid'=> 'required'
+            ],
+            [
+                'pid.required' => '父级ID不能为空'
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+        $requireData['website_id'] = Context::get("SiteId");
+
+        $result = $this->newsServiceClient->categoryList($requireData);
+//        $rep = PublicData::buildMenuTree($result['data']);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 添加导航
+     * @return array|void
+     */
+    public function addCategory()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'name'=> 'required',
+                'seo_title'=> 'required',
+                'seo_keywords'=> 'required',
+                'seo_description'=> 'required',
+            ],
+            [
+                'name.required' => '导航池名称不能为空',
+                'seo_title.required' => 'seo标题名称不能为空',
+                'seo_keywords.required' => 'seo关键词不能为空',
+                'seo_description.required' => 'seo描述不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+        $requireData['pid'] = isset($requireData['pid_arr'])?end($requireData['pid_arr']):'';
+        $requireData['pid_arr'] = isset($requireData['pid_arr'])?json_encode($requireData['pid_arr']):'';
+
+        $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
+        $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
+
+        $requireData['department_id'] = isset($requireData['department_arr_id'])?end($requireData['department_arr_id']):'';
+        $requireData['department_arr_id'] = isset($requireData['department_arr_id'])?json_encode($requireData['department_arr_id']):'';
+
+        $result = $this->newsServiceClient->addCategory($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 更新导航池
+     * @return array
+     */
+    public function updateCategory()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id'=>'required',
+                'name'=> 'required',
+                'seo_title'=> 'required',
+                'seo_keywords'=> 'required',
+                'seo_description'=> 'required',
+            ],
+            [
+                'id.required' =>'ID不能为空',
+                'name.required' => '栏目池名称不能为空',
+                'seo_title.required' => 'seo标题名称不能为空',
+                'seo_keywords.required' => 'seo关键词不能为空',
+                'seo_description.required' => 'seo描述不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['pid'] = isset($requireData['pid_arr'])?end($requireData['pid_arr']):'';
+        $requireData['pid_arr'] = isset($requireData['pid_arr'])?json_encode($requireData['pid_arr']):'';
+
+        $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
+        $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
+
+        $requireData['department_id'] = isset($requireData['department_arr_id'])?end($requireData['department_arr_id']):'';
+        $requireData['department_arr_id'] = isset($requireData['department_arr_id'])?json_encode($requireData['department_arr_id']):'';
+
+        $result = $this->newsServiceClient->updateCategory($requireData);
+        return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除分类
+     * @return array
+     */
+    public function delCategory()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id'=> 'required',
+
+            ],
+            [
+                'id.required' => 'id不能为空',
+
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $result = $this->newsServiceClient->delCategory($requireData);
+        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 资讯列表
+     * @return void
+     */
+    public function getArticleList()
+    {
+        $requireData = $this->request->all();
+
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'page'=> 'required',
+                'pageSize'=> 'required',
+
+            ],
+            [
+                'page.required' => 'id不能为空',
+                'pageSize.required' => 'id不能为空',
+
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['website_id'] = Context::get("SiteId");
+        var_dump("资讯:",$requireData);
+        $result = $this->newsServiceClient->getArticleList($requireData);
+        //1通过,2待审核,3待发 4,拒绝 5删除
+        $statusList = [
+            '0'=>'待审核',
+            '1'=>'已发布',
+            '2'=>'待审核',
+            '3'=>'待发',
+            '4'=>'拒绝',
+            '5'=>'删除',
+        ];
+        if($result['data']){
+            foreach ($result['data']['rows'] as $k=>$v) {
+                $result['data']['rows'][$k]['cat_arr_id'] = $v['cat_arr_id']?json_decode($v['cat_arr_id']):[0];
+                $result['data']['rows'][$k]['tag'] = $v['tag']?json_decode($v['tag']):[];
+                $result['data']['rows'][$k]['status_name'] = $statusList[$v['status']];
+                $result['data']['rows'][$k]['level'] = (string)$v['level'];
+                $result['data']['rows'][$k]['islink'] = isset($v['islink']) && $v['islink']>0?true:false;
+            }
+        }
+        $result = $this->newsServiceClient->getArticleList($requireData);
+
+        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 获取导航池信息
+     * @return void
+     */
+    public function getCategoryInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id'=> 'required',
+
+            ],
+            [
+                'id.required' => 'id不能为空',
+
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $result = $this->newsServiceClient->getCategoryInfo($requireData);
+        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 添加分类
+     * @return array|void
+     */
+    public function addArticle()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'title'=> 'required',
+                'cat_arr_id'=> 'required',
+                'author'=> 'required',
+
+            ],
+            [
+                'title.required' => '标题不能为空',
+                'cat_arr_id.required' => '导航池ID不能为空',
+                'author.required' => '作者不能为空',
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['catid'] = isset($requireData['cat_arr_id'])?end($requireData['cat_arr_id']):'';
+        $requireData['cat_arr_id'] = isset($requireData['cat_arr_id'])?json_encode($requireData['cat_arr_id']):'';
+
+        $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
+        $requireData['ip'] = $loginIp;
+
+        $requireData['website_id'] = Context::get("SiteId");
+        $requireData['admin_user_id'] =Context::get("UserId");
+        
+        $requireData['level'] = isset($requireData['level']) &&  $requireData['level']?$requireData['level']:0;
+        $requireData['hits'] = isset($requireData['hits']) &&  $requireData['hits']?$requireData['hits']:0;
+        $requireData['is_original'] = isset($requireData['is_original']) &&  $requireData['is_original']?$requireData['is_original']:0;
+        $requireData['status'] = isset($requireData['status']) &&  $requireData['status']?$requireData['status']:0;
+//        var_dump("入参:",$requireData);
+        $result = $this->newsServiceClient->addArticle($requireData);
+
+        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 更新资讯
+     * @return array
+     */
+    public function updateArticle()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id'=>'required',
+                'title'=> 'required',
+                'cat_arr_id'=> 'required',
+                'author'=> 'required',
+            ],
+            [
+                'title.required' => '标题不能为空',
+                'cat_arr_id.required' => '导航池ID不能为空',
+                'author.required' => '作者不能为空',
+                'id.required' =>'ID不能为空'
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+        $requireData['catid'] = isset($requireData['cat_arr_id'])?end($requireData['cat_arr_id']):'';
+        $requireData['cat_arr_id'] = isset($requireData['cat_arr_id'])?json_encode($requireData['cat_arr_id']):'';
+
+        $result = $this->newsServiceClient->updateArticle($requireData);
+        return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 更新资讯状态
+     * @return array
+     */
+    public function upArticleStatus()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id'=>'required',
+                'status'=> 'required',
+            ],
+            [
+                'id.required' => 'id不能为空',
+                'status.required' => '状态不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $result = $this->newsServiceClient->upArticleStatus($requireData);
+        return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除分类
+     * @return array
+     */
+    public function delArticle()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id'=> 'required',
+            ],
+            [
+                'id.required' => 'id不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+        $requireData['website_id'] = Context::get("SiteId");
+        $result = $this->newsServiceClient->delArticle($requireData);
+        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 获取资讯信息
+     * @return array
+     */
+    public function  getArticleInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id'=> 'required',
+            ],
+            [
+                'id.required' => 'id不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+        $result = $this->newsServiceClient->getArticleInfo($requireData);
+        $result['data']['cat_arr_id'] =  $result['data']['cat_arr_id']?json_decode($result['data']['cat_arr_id']):[];
+        return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+
 }

+ 51 - 0
app/Service/OSSManager.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Service;
+
+use Aws\S3\S3Client;
+use Hyperf\Contract\ConfigInterface;
+use Hyperf\Di\Annotation\Inject;
+
+class OSSManager
+{
+    #[Inject]
+    protected S3Client $s3Client;
+
+    #[Inject]
+    protected ConfigInterface $config;
+
+    public function uploadFile($bucket, $key, $filePath)
+    {
+        $result = $this->s3Client->putObject([
+            'Bucket' => $bucket,
+            'Key' => $key,
+            'SourceFile' => $filePath,
+        ]);
+
+        return $result['ObjectURL']?? null;
+    }
+
+    public function downloadFile($bucket, $key, $downloadPath)
+    {
+        $result = $this->s3Client->getObject([
+            'Bucket' => $bucket,
+            'Key' => $key,
+        ]);
+
+        if ($result['ContentLength'] > 0) {
+            file_put_contents($downloadPath, $result['Body']);
+        }
+
+        return true;
+    }
+
+    public function deleteFile($bucket, $key)
+    {
+        $this->s3Client->deleteObject([
+            'Bucket' => $bucket,
+            'Key' => $key,
+        ]);
+
+        return true;
+    }
+}

+ 5 - 4
config/api/public.php

@@ -28,10 +28,7 @@ Router::addGroup(
         //删除投诉举报信息
 
         Router::post('/delLetterOfComplaint', [PublicController::class, 'delLetterOfComplaint']);
-        //获取类型
-        Router::get('/getLetterType', [PublicController::class, 'getLetterType']);
-        //获取子类型
-        Router::get('/getLetterTypeChildren', [PublicController::class, 'getLetterTypeChildren']);
+
         //下载文件
         Router::addRoute(['GET', 'POST'], '/downloadFile', [PublicController::class, 'downloadFile']);
         //检测是否已经被审核
@@ -79,6 +76,10 @@ Router::addGroup(
     '/public', function () {
         //获取所有的职能部门
         Router::get('/getAllDepartment', [PublicController::class, 'getAllDepartment']);
+        //获取类型
+        Router::get('/getLetterType', [PublicController::class, 'getLetterType']);
+        //获取子类型
+        Router::get('/getLetterTypeChildren', [PublicController::class, 'getLetterTypeChildren']);
     }
 );