Browse Source

Collector

the_bug 6 months ago
parent
commit
de5e51395b

+ 101 - 0
app/Controller/CollectorController.php

@@ -0,0 +1,101 @@
+<?php
+declare(strict_types=1);
+namespace App\Controller;
+
+use App\JsonRpc\CollectorServiceInterface;
+use App\Tools\PublicData;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\HttpServer\Annotation\AutoController;
+use App\Tools\Result;
+use Hyperf\Validation\Contract\ValidatorFactoryInterface;
+use App\Constants\ErrorCode;
+use Hyperf\Context\Context;
+/**
+ * ClassCollectorController
+ * @package App\Controller
+ */
+class CollectorController extends AbstractController
+{
+    #[Inject]
+    protected ValidatorFactoryInterface $validationFactory;
+
+    /**
+     * @var CollectorServiceInterface
+     */
+    #[Inject]
+    private $collectorServiceClient;
+ 
+    /**
+     * 添加网站
+     * @return array
+     */
+    public function addWeb()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'name'=> 'required',
+                'url'=> 'required',
+            ],
+            [
+                'name.required' => '网站名称不能为空',
+                'url.required' => '网站地址不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+
+        
+        $result = $this->collectorServiceClient->addWeb($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+     /**
+     * 获取网站
+     * @return array
+     */
+    public function getWeb()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'page'=> 'required',
+                'pageSize'=> 'required',
+            ],
+            [
+                'page.required' => '第几页不能为空',
+                'pageSize.required' => '每页显示条数不能为空',
+            ]
+        );
+        if(isset($requireData['keyWord'])){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'keyWord'=> 'required'
+                ],
+                [
+                    'keyWord.required' => '搜索词不能为空'
+                ]
+            );
+        }
+        
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }        
+        $result = $this->collectorServiceClient->getWeb($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+ 
+
+}

+ 36 - 0
app/JsonRpc/CollectorService.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace App\JsonRpc;
+
+use Hyperf\RpcClient\AbstractServiceClient;
+
+class CollectorService extends AbstractServiceClient implements CollectorServiceInterface
+{
+    /**
+     * 定义对应服务提供者的服务名称
+     * @var string
+     */
+    protected string $serviceName = 'CollectorService';
+    /**
+     * 定义对应服务提供者的服务协议
+     * @var string
+     */
+    protected string $protocol = 'jsonrpc-http';
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function addWeb(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+     /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function getWeb(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+}

+ 16 - 0
app/JsonRpc/CollectorServiceInterface.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\JsonRpc;
+
+interface CollectorServiceInterface
+{
+    /**
+     * @param array $data
+     */
+    public function addWeb(array $data);
+
+    /**
+     * @param array $data
+     */
+    public function getWeb(array $data);
+}

File diff suppressed because it is too large
+ 191 - 198
composer.lock


+ 46 - 0
config/api/collector.php

@@ -0,0 +1,46 @@
+<?php
+
+declare(strict_types=1);
+
+use App\Controller\CollectorController;
+use App\Middleware\Auth\FooMiddleware;
+use Hyperf\HttpServer\Router\Router;
+
+Router::addGroup(
+    '/collector', function () {
+        Router::get('/index', [CollectorController::class, 'index']);
+
+        //添加网站
+        Router::post('/addWeb', [CollectorController::class, 'addWeb']);
+        //修改网站
+        Router::get('/upWeb', [CollectorController::class, 'upWeb']);
+        //查看并搜索网站
+        Router::get('/getWeb', [CollectorController::class, 'getWeb']);
+        //删除网站
+        Router::get('/delWeb', [CollectorController::class, 'delWeb']);
+
+        //查看任务
+        Router::get('/getRule', [CollectorController::class, 'getRule']);
+        //添加规则
+        Router::get('/addRule', [CollectorController::class, 'addRule']);
+        //修改规则
+        Router::get('/upRule', [CollectorController::class, 'upRule']);
+        //删除规则
+        Router::get('/delRule', [CollectorController::class, 'delRule']);
+
+        //采集数据
+        Router::get('/addInfo', [CollectorController::class, 'addInfo']);
+        //修改资讯
+        Router::get('/upInfo', [CollectorController::class, 'upInfo']);
+        //删除资讯
+        Router::get('/delInfo', [CollectorController::class, 'delInfo']);
+
+        //导入数据
+        Router::get('/addArt', [CollectorController::class, 'addArt']);
+        //关联导航
+        Router::get('/addCatid', [CollectorController::class, 'addCatid']);
+        
+    },
+    ['middleware' => [FooMiddleware::class]]
+);
+

+ 9 - 0
config/autoload/services.php

@@ -83,5 +83,14 @@ return [
                 ['host' => '127.0.0.1', 'port' => 9508],
             ],
         ],
+        [
+            //广告订单服务
+            'name' => 'CollectorService',
+            'service' => \App\JsonRpc\CollectorServiceInterface::class,
+            // 直接对指定的节点进行消费,通过下面的 nodes 参数来配置服务提供者的节点信息
+            'nodes' => [
+                ['host' => '127.0.0.1', 'port' => 9509],
+            ],
+        ],
     ],
 ];

+ 1 - 0
config/routes.php

@@ -35,3 +35,4 @@ require __DIR__ . '/api/news.php';
 require __DIR__ . '/api/website.php';
 require __DIR__ . '/api/web.php';
 require __DIR__ . '/api/order.php';
+require __DIR__ . '/api/collector.php';

File diff suppressed because it is too large
+ 0 - 0
runtime/container/scan.cache


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