rkljw há 3 meses atrás
pai
commit
99ea08117b

+ 40 - 40
.env

@@ -1,40 +1,40 @@
-APP_NAME=admin_consumer
-APP_ENV=dev
-HOST = http://192.168.1.201:9501/
-
-DB_DRIVER=mysql
-DB_HOST=101.254.114.211
-DB_PORT=13306
-DB_DATABASE=hyperf
-DB_USERNAME=root
-DB_PASSWORD=xKmapDpKCxMMSkbe
-DB_CHARSET=utf8mb4
-DB_COLLATION=utf8mb4_unicode_ci
-DB_PREFIX=
-
-
-#REDIS_HOST=101.254.114.211
-#REDIS_AUTH=YPWWnFnNebc7427B
-#REDIS_PORT=26739
-#REDIS_DB=0
-
-
-REDIS_HOST=192.168.1.201
-REDIS_AUTH=
-REDIS_PORT=6379
-REDIS_DB=0
-
-AMQP_HOST=192.168.1.201
-AMQP_PORT=5672
-AMQP_USER=admin
-AMQP_PASSWORD=123456
-
-
-#小程序获取openid
-WECHAT = https://api.weixin.qq.com/
-
-#小程序appID
-APPID = wx830ada852dd1707f
-#小程序SECRET
-APP_SECRET = 09d1ac9287cb6f3c5e81aa27a6b7138e
-#12
+APP_NAME=admin_consumer
+APP_ENV=dev
+HOST = http://192.168.1.201:9501/
+
+DB_DRIVER=mysql
+DB_HOST=101.254.114.211
+DB_PORT=13306
+DB_DATABASE=hyperf
+DB_USERNAME=root
+DB_PASSWORD=xKmapDpKCxMMSkbe
+DB_CHARSET=utf8mb4
+DB_COLLATION=utf8mb4_unicode_ci
+DB_PREFIX=
+
+
+#REDIS_HOST=101.254.114.211
+#REDIS_AUTH=YPWWnFnNebc7427B
+#REDIS_PORT=26739
+#REDIS_DB=0
+
+
+REDIS_HOST=192.168.1.201
+REDIS_AUTH=
+REDIS_PORT=6379
+REDIS_DB=0
+
+AMQP_HOST=192.168.1.201
+AMQP_PORT=5672
+AMQP_USER=admin
+AMQP_PASSWORD=123456
+
+
+#小程序获取openid
+WECHAT = https://api.weixin.qq.com/
+
+#小程序appID
+APPID = wx830ada852dd1707f
+#小程序SECRET
+APP_SECRET = 09d1ac9287cb6f3c5e81aa27a6b7138e
+#12

+ 781 - 782
app/Controller/CollectorController.php

@@ -1,783 +1,782 @@
-<?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;
-//use App\Service\GatherQueueService;
-use App\Service\ImportQueueService;
-/**
- * ClassCollectorController
- * @package App\Controller
- */
-
-class CollectorController extends AbstractController
-{
-    #[Inject]
-    protected ValidatorFactoryInterface $validationFactory;
-//    #[Inject]
-//    protected GatherQueueService $Gservice;
-    #[Inject]
-    protected ImportQueueService $Iservice;
-
-    /**
-     * @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']);
-    }
-    /**
-     * 修改网站
-     * @return array
-     */
-    public function upWeb()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'name'=> 'required',
-                'url'=> 'required',
-                'id' => 'required'
-            ],
-            [
-                'name.required' => '网站名称不能为空',
-                'url.required' => '网站地址不能为空',
-                'id.required' => '网站id不能为空'
-            ]
-        );        
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }        
-        $result = $this->collectorServiceClient->upWeb($requireData);
-        if ($result['code'] != ErrorCode::SUCCESS) {
-            return Result::error($result['message'],0,[]);
-        }
-        return Result::success($result['data']);
-    }
-    /**
-     * 删除网站 
-     * @return array
-     */
-    public function delWeb()
-    {
-        $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->collectorServiceClient->delWeb($requireData);
-        if ($result['code'] != ErrorCode::SUCCESS) {
-            return Result::error($result['message'],0,[]);
-        }
-        return Result::success($result['data']);
-    }
-    
-    /**
-     * 添加规则任务
-     * @return array
-     */
-    public function addRule()
-    {
-        
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'name' => 'required',
-                'web_id' => 'required',
-                'type' => 'required'
-            ],
-            [
-                'name.required' => '任务规则名称不能为空',
-                'web_id.required' => '网站id不能为空',
-                'type.required' => '网站类型不能为空'
-            ]
-        );  
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        switch($requireData['type']){
-            case 1:
-                $validator = $this->validationFactory->make(
-                    $requireData,
-                    [
-                        'first_url' => 'required',
-                        'second_start' => 'required',
-                        'second_num' => 'required',
-                        'second_end' => 'required',
-                        'end_pagenum' => 'required',
-                        'start' => 'required',
-                        'con_url' => 'required',
-                        'title' => 'required',
-                        'content' => 'required'
-                    ],
-                    [
-                        'first_url.required' => '第1页网址不能为空',
-                        'second_start.required' => '第2页网址开头不能为空',
-                        'second_num.required' => '第2页代码页数不能为空',
-                        'second_end.required' => '第2页网址结束字符串不能为空',
-                        'end_pagenum.required' => '列表页结束页码不能为空',
-                        'start.required' => '开始代码不能为空',
-                        'con_url.required' => '详情页前缀地址不能为空',
-                        'title.required' => '标题标签类名不能为空',
-                        'content.required' => '内容标签类名不能为空'
-                    ]
-                ); 
-                if ($validator->fails()) {
-                    $errorMessage = $validator->errors()->first();
-                    return Result::error($errorMessage);
-                } 
-
-                break; 
-            case 2:
-                $validator = $this->validationFactory->make(
-                    $requireData,
-                    [
-                        'first_url' => 'required',
-                        'parameter' => 'required',
-                        'start' => 'required',
-                        'title' => 'required',
-                        'content' => 'required',
-                    ],
-                    [
-                        'first_url.required' => '开始采集地址不能为空',
-                        'parameter.required' => '接口参数不能为空',
-                        'start.required' => '列表标签不能为空',
-                        'title.required' => '标题标签不能为空',
-                        'content.required' => '内容标签不能为空'
-                    ]
-                );  
-                if ($validator->fails()) {
-                    $errorMessage = $validator->errors()->first();
-                    return Result::error($errorMessage);
-                }  
-                // var_dump("============2============");                    
-                break;
-            case 3:
-                $validator = $this->validationFactory->make(
-                    $requireData,
-                    [
-                        'diy_rule' => 'required'
-                    ],
-                    [
-                        'diy_rule.required' => '采集规则不能为空'
-                    ]
-                ); 
-                if ($validator->fails()) {
-                    $errorMessage = $validator->errors()->first();
-                    return Result::error($errorMessage);
-                }  
-                // var_dump("============3============");  
-                break;
-            default:
-                return Result::error('请输入正确的网站类型');
-                break;
-                
-        }
-        if(isset($requireData['writer_class']) && $requireData['type'] == 2){
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'writer_class' => 'required'
-                ],
-                [
-                    'writer_class.required' => '作者标签不能为空'
-                ]
-            ); 
-            if ($validator->fails()) {
-                $errorMessage = $validator->errors()->first();
-                return Result::error($errorMessage);
-            }  
-        }
-
-        if(isset($requireData['writer']) && $requireData['type'] != 3){
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'writer' => 'required'
-                ],
-                [
-                    'writer.required' => '文章作者不能为空'
-                ]
-            );  
-            if ($validator->fails()) {
-                $errorMessage = $validator->errors()->first();
-                return Result::error($errorMessage);
-            }  
-        }
-        // return Result::success($requireData);
-        $result = $this->collectorServiceClient->addRule($requireData);
-        if ($result['code'] != ErrorCode::SUCCESS) {
-            return Result::error($result['message'],0,[]);
-        }
-        return Result::success($result['data']);
-    }
-    
-    /**
-     * 获取并搜索任务规则
-     * @return array
-     */
-    public function getRule()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'pageSize' => 'required',
-                'page' => 'required'
-            ],
-            [
-                'pageSize.required' => '每页显示数量不能为空',
-                'page.required' => '第几页不能为空',
-            ]
-        ); 
-        if(isset($requireData['keyWord'])){
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'keyWord' => 'required'
-                ],
-                [
-                    'keyWord.required' => '搜索词不能为空'
-                ]
-            ); 
-        }      
-
-        if(isset($requireData['web_id'])){
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'web_id' => 'required'
-                ],
-                [
-                    'web_id.required' => '网站id不能为空'
-                ]
-            ); 
-        }   
-             
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }        
-        $result = $this->collectorServiceClient->getRule($requireData);
-        if ($result['code'] != ErrorCode::SUCCESS) {
-            return Result::error($result['message'],0,[]);
-        }
-        return Result::success($result['data']);
-    }
-    /**
-     * 获取某个规则任务
-     * @return array
-     */
-    public function getOneRule()
-    {
-        $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->collectorServiceClient->getOneRule($requireData);
-        if ($result['code'] != ErrorCode::SUCCESS) {
-            return Result::error($result['message'],0,[]);
-        }
-        return Result::success($result['data']);
-    } 
-    /**
-     * 修改规则任务
-     * @return array
-     */
-
-    public function upRule()
-    {
-        $requireData = $this->request->all();
-        // var_dump("&&&&:",$requireData);
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required',
-                'name' => 'required',
-                'type' => 'required'
-            ],
-            [
-                'name.required' => '任务规则名称不能为空',
-                'id.required' => '任务规则id不能为空',
-                'type.required' => '网站类型不能为空'
-            ]
-        );  
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        switch($requireData['type']){
-            case 1:
-                $validator = $this->validationFactory->make(
-                    $requireData,
-                    [
-                        'first_url' => 'required',
-                        'second_start' => 'required',
-                        'second_num' => 'required',
-                        'second_end' => 'required',
-                        'start' => 'required',
-                        'con_url' => 'required',
-                        'title' => 'required',
-                        'content' => 'required',
-                    ],
-                    [
-                        'first_url.required' => '第1页网址不能为空',
-                        'second_start.required' => '第2页网址开头不能为空',
-                        'second_num.required' => '第2页代码页数不能为空',
-                        'second_end.required' => '第2页网址结束字符串不能为空',
-                        'end_pagenum.required' => '列表页结束页码不能为空',
-                        'start.required' => '开始代码不能为空',
-                        'con_url.required' => '详情页前缀地址不能为空',
-                        'title.required' => '标题标签类名不能为空',
-                        'content.required' => '内容标签类名不能为空',
-                    ]
-                ); 
-                if ($validator->fails()) {
-                    $errorMessage = $validator->errors()->first();
-                    return Result::error($errorMessage);
-                }  
-                // var_dump("============1============");  
-                break;                
-            case 2:
-                $validator = $this->validationFactory->make(
-                    $requireData,
-                    [
-                        'first_url' => 'required',
-                        'parameter' => 'required',
-                        'start' => 'required',
-                        'title' => 'required',
-                        'content' => 'required',
-                    ],
-                    [
-                        'first_url.required' => '开始采集地址不能为空',
-                        'parameter.required' => '接口参数不能为空',
-                        'start.required' => '列表标签不能为空',
-                        'title.required' => '标题标签不能为空',
-                        'content.required' => '内容标签不能为空'
-                    ]
-                );  
-                if ($validator->fails()) {
-                    $errorMessage = $validator->errors()->first();
-                    return Result::error($errorMessage);
-                }  
-                // var_dump("============2============");                    
-                break;
-            case 3:
-                $validator = $this->validationFactory->make(
-                    $requireData,
-                    [
-                        'diy_rule' => 'required'
-                    ],
-                    [
-                        'diy_rule.required' => '采集规则不能为空'
-                    ]
-                ); 
-                if ($validator->fails()) {
-                    $errorMessage = $validator->errors()->first();
-                    return Result::error($errorMessage);
-                }  
-                // var_dump("============3============");  
-                break;
-            default:
-                return Result::error('请输入正确的网站类型');
-                break;
-                
-        }
-
-        if(isset($requireData['writer_class']) && $requireData['type'] == 2){
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'writer_class' => 'required'
-                ],
-                [
-                    'writer_class.required' => '作者标签不能为空'
-                ]
-            ); 
-            if ($validator->fails()) {
-                $errorMessage = $validator->errors()->first();
-                return Result::error($errorMessage);
-            }  
-        }
-        if(isset($requireData['writer']) && $requireData['type'] != 3){
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'writer' => 'required'
-                ],
-                [
-                    'writer.required' => '文章作者不能为空'
-                ]
-            );  
-            if ($validator->fails()) {
-                $errorMessage = $validator->errors()->first();
-                return Result::error($errorMessage);
-            }  
-        }
-        // var_dump("++++++++++",$requireData);
-        $result = $this->collectorServiceClient->upRule($requireData);
-        if ($result['code'] != ErrorCode::SUCCESS) {
-            return Result::error($result['message'],0,[]);
-        }
-        return Result::success($result['data']);
-
-    } 
-    /**
-    * 删除任务规则
-    * @return array
-    */
-    public function delRule()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'rule_id' => 'required'
-            ],
-            [
-                'rule_id.required' => '任务规则id不能为空'
-            ]
-        ); 
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }        
-        $result = $this->collectorServiceClient->delRule($requireData);
-        if ($result['code'] != ErrorCode::SUCCESS) {
-            return Result::error($result['message'],0,[]);
-        }
-        return Result::success($result['data']);
-    }
-
-    /**
-     * 开始采集
-     * @return array
-     */
-    public function sendCrawler()
-    {
-        $data = [];
-        $data['admin_user_id'] = Context::get("UserId");
-        $data['time'] = microtime();
-        $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);
-        }
-//        $b  = $this->Iservice->push($data,1);
-        $data['id'] = $requireData['id'];
-        var_dump("发送数据:",$data);
-        $result =  $this->collectorServiceClient->sendCrawler($data);
-        return $result['code']==200?Result::success($result['data']):Result::error('采集失败');
-
-    }
-
-
-    /**
-     * 获取并搜索资讯
-     * @return array
-     */
-    public function getInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'rule_id' => 'required',
-                'pageSize' => 'required',
-                'page' => 'required'
-            ],
-            [
-                'rule_id.required' => '规则任务id不能为空',
-                'pageSize.required' => '每页显示数量不能为空',
-                'page.required' => '第几页不能为空'
-            ]
-        ); 
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->collectorServiceClient->getInfo($requireData);        
-        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
-    }
-
-    /**
-     * 获取某个资讯
-     * @return array
-     */
-    public function getOneInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'art_id' => 'required'
-            ],
-            [
-                'art_id.required' => '资讯id不能为空'
-            ]
-        ); 
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->collectorServiceClient->getOneInfo($requireData);
-        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
-    }
-    /**
-     *修改资讯
-     * @return array
-     */
-    public function upInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'art_id' => 'required',
-                'title' => 'required',
-                'keyword' => 'required',
-                'content' => 'required',
-                'hits' => 'required',
-                'is_original' => 'required',
-                'islink' => 'required'
-            ],
-            [
-                'art_id.required' => '资讯id不能为空',
-                'title.required' => '资讯标题不能为空',
-                'keyword.required' => '资讯关键词不能为空',
-                'content.required' => '资讯内容不能为空',
-                'hits.required' => '浏览量不能为空',
-                'is_original.required' => '原创不能为空',
-                'islink.required' => '外链不能为空'
-            ]
-        ); 
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        if($requireData['islink']==1){
-            $requireData = $this->request->all();
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'linkurl' => 'required'
-                ],
-                [
-                    'linkurl.required' => '外链地址不能为空'
-                ]
-            ); 
-            if ($validator->fails()) {
-                $errorMessage = $validator->errors()->first();
-                return Result::error($errorMessage);
-            }
-        }
-        if($requireData['is_original']==0){
-            $requireData = $this->request->all();
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'fromurl' => 'required',
-                    'copyfrom' => 'required'
-                ],
-                [
-                    'fromurl.required' => '采集来源地址不能为空',
-                    'copyfrom' => '采集来源不能为空'
-                ]
-            ); 
-            if ($validator->fails()) {
-                $errorMessage = $validator->errors()->first();
-                return Result::error($errorMessage);
-            }
-        }
-        $result = $this->collectorServiceClient->upInfo($requireData);
-        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
-    }
-    /**
-     * 删除资讯
-     * @return array
-     */
-    public function delInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'art_id' => 'required'
-            ],
-            [
-                'art_id.required' => '资讯id不能为空'
-            ]
-        ); 
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->collectorServiceClient->delInfo($requireData);
-        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
-    }
-    /**
-     * 关联导航池
-     * @return array
-     */
-    public function addCatid()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'rule_id' => 'required'
-            ],
-            [
-                'rule_id.required' => '任务规则id不能为空'
-            ]
-        ); 
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $result = $this->collectorServiceClient->addCatid($requireData);
-        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
-    }
-     /**
-     * 开始导入
-     * @return array
-     */
-    public function addArt()
-    {
-        $requireData = $this->request->all();
-        if(!empty($requireData)){
-            $validator = $this->validationFactory->make(
-                $requireData,
-                [
-                    'rule_id' => 'required'
-                ],
-                [
-                    'rule_id.required' => '任务规则id不能为空'
-                ]
-            ); 
-            if ($validator->fails()) {
-                $errorMessage = $validator->errors()->first();
-                return Result::error($errorMessage);
-            }
-        }
-        $data['rule_id'] = $requireData['rule_id'];
-        $data['time'] = microtime();
-        
-        // var_dump("=====111",$data);
-        $result  = $this->collectorServiceClient->addArt($data);
-        // var_dump("=====222",$result);
-        return Result::success($result);
-    }
-   
-
+<?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;
+//use App\Service\GatherQueueService;
+use App\Service\ImportQueueService;
+/**
+ * ClassCollectorController
+ * @package App\Controller
+ */
+
+class CollectorController extends AbstractController
+{
+    #[Inject]
+    protected ValidatorFactoryInterface $validationFactory;
+//    #[Inject]
+//    protected GatherQueueService $Gservice;
+    #[Inject]
+    protected ImportQueueService $Iservice;
+
+    /**
+     * @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']);
+    }
+    /**
+     * 修改网站
+     * @return array
+     */
+    public function upWeb()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'name'=> 'required',
+                'url'=> 'required',
+                'id' => 'required'
+            ],
+            [
+                'name.required' => '网站名称不能为空',
+                'url.required' => '网站地址不能为空',
+                'id.required' => '网站id不能为空'
+            ]
+        );        
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }        
+        $result = $this->collectorServiceClient->upWeb($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+    /**
+     * 删除网站 
+     * @return array
+     */
+    public function delWeb()
+    {
+        $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->collectorServiceClient->delWeb($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+    
+    /**
+     * 添加规则任务
+     * @return array
+     */
+    public function addRule()
+    {
+        
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'name' => 'required',
+                'web_id' => 'required',
+                'type' => 'required'
+            ],
+            [
+                'name.required' => '任务规则名称不能为空',
+                'web_id.required' => '网站id不能为空',
+                'type.required' => '网站类型不能为空'
+            ]
+        );  
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        switch($requireData['type']){
+            case 1:
+                $validator = $this->validationFactory->make(
+                    $requireData,
+                    [
+                        'first_url' => 'required',
+                        'second_start' => 'required',
+                        'second_num' => 'required',
+                        'second_end' => 'required',
+                        'end_pagenum' => 'required',
+                        'start' => 'required',
+                        'con_url' => 'required',
+                        'title' => 'required',
+                        'content' => 'required'
+                    ],
+                    [
+                        'first_url.required' => '第1页网址不能为空',
+                        'second_start.required' => '第2页网址开头不能为空',
+                        'second_num.required' => '第2页代码页数不能为空',
+                        'second_end.required' => '第2页网址结束字符串不能为空',
+                        'end_pagenum.required' => '列表页结束页码不能为空',
+                        'start.required' => '开始代码不能为空',
+                        'con_url.required' => '详情页前缀地址不能为空',
+                        'title.required' => '标题标签类名不能为空',
+                        'content.required' => '内容标签类名不能为空'
+                    ]
+                ); 
+                if ($validator->fails()) {
+                    $errorMessage = $validator->errors()->first();
+                    return Result::error($errorMessage);
+                } 
+
+                break; 
+            case 2:
+                $validator = $this->validationFactory->make(
+                    $requireData,
+                    [
+                        'first_url' => 'required',
+                        'parameter' => 'required',
+                        'start' => 'required',
+                        'title' => 'required',
+                        'content' => 'required',
+                    ],
+                    [
+                        'first_url.required' => '开始采集地址不能为空',
+                        'parameter.required' => '接口参数不能为空',
+                        'start.required' => '列表标签不能为空',
+                        'title.required' => '标题标签不能为空',
+                        'content.required' => '内容标签不能为空'
+                    ]
+                );  
+                if ($validator->fails()) {
+                    $errorMessage = $validator->errors()->first();
+                    return Result::error($errorMessage);
+                }  
+                // var_dump("============2============");                    
+                break;
+            case 3:
+                $validator = $this->validationFactory->make(
+                    $requireData,
+                    [
+                        'diy_rule' => 'required'
+                    ],
+                    [
+                        'diy_rule.required' => '采集规则不能为空'
+                    ]
+                ); 
+                if ($validator->fails()) {
+                    $errorMessage = $validator->errors()->first();
+                    return Result::error($errorMessage);
+                }  
+                // var_dump("============3============");  
+                break;
+            default:
+                return Result::error('请输入正确的网站类型');
+                break;
+                
+        }
+        if(isset($requireData['writer_class']) && $requireData['type'] == 2){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'writer_class' => 'required'
+                ],
+                [
+                    'writer_class.required' => '作者标签不能为空'
+                ]
+            ); 
+            if ($validator->fails()) {
+                $errorMessage = $validator->errors()->first();
+                return Result::error($errorMessage);
+            }  
+        }
+
+        if(isset($requireData['writer']) && $requireData['type'] != 3){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'writer' => 'required'
+                ],
+                [
+                    'writer.required' => '文章作者不能为空'
+                ]
+            );  
+            if ($validator->fails()) {
+                $errorMessage = $validator->errors()->first();
+                return Result::error($errorMessage);
+            }  
+        }
+        // return Result::success($requireData);
+        $result = $this->collectorServiceClient->addRule($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+    
+    /**
+     * 获取并搜索任务规则
+     * @return array
+     */
+    public function getRule()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'pageSize' => 'required',
+                'page' => 'required'
+            ],
+            [
+                'pageSize.required' => '每页显示数量不能为空',
+                'page.required' => '第几页不能为空',
+            ]
+        ); 
+        if(isset($requireData['keyWord'])){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'keyWord' => 'required'
+                ],
+                [
+                    'keyWord.required' => '搜索词不能为空'
+                ]
+            ); 
+        }      
+
+        if(isset($requireData['web_id'])){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'web_id' => 'required'
+                ],
+                [
+                    'web_id.required' => '网站id不能为空'
+                ]
+            ); 
+        }   
+             
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }        
+        $result = $this->collectorServiceClient->getRule($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+    /**
+     * 获取某个规则任务
+     * @return array
+     */
+    public function getOneRule()
+    {
+        $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->collectorServiceClient->getOneRule($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    } 
+    /**
+     * 修改规则任务
+     * @return array
+     */
+
+    public function upRule()
+    {
+        $requireData = $this->request->all();
+        // var_dump("&&&&:",$requireData);
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required',
+                'name' => 'required',
+                'type' => 'required'
+            ],
+            [
+                'name.required' => '任务规则名称不能为空',
+                'id.required' => '任务规则id不能为空',
+                'type.required' => '网站类型不能为空'
+            ]
+        );  
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        switch($requireData['type']){
+            case 1:
+                $validator = $this->validationFactory->make(
+                    $requireData,
+                    [
+                        'first_url' => 'required',
+                        'second_start' => 'required',
+                        'second_num' => 'required',
+                        'second_end' => 'required',
+                        'start' => 'required',
+                        'con_url' => 'required',
+                        'title' => 'required',
+                        'content' => 'required',
+                    ],
+                    [
+                        'first_url.required' => '第1页网址不能为空',
+                        'second_start.required' => '第2页网址开头不能为空',
+                        'second_num.required' => '第2页代码页数不能为空',
+                        'second_end.required' => '第2页网址结束字符串不能为空',
+                        'end_pagenum.required' => '列表页结束页码不能为空',
+                        'start.required' => '开始代码不能为空',
+                        'con_url.required' => '详情页前缀地址不能为空',
+                        'title.required' => '标题标签类名不能为空',
+                        'content.required' => '内容标签类名不能为空',
+                    ]
+                ); 
+                if ($validator->fails()) {
+                    $errorMessage = $validator->errors()->first();
+                    return Result::error($errorMessage);
+                }  
+                // var_dump("============1============");  
+                break;                
+            case 2:
+                $validator = $this->validationFactory->make(
+                    $requireData,
+                    [
+                        'first_url' => 'required',
+                        'parameter' => 'required',
+                        'start' => 'required',
+                        'title' => 'required',
+                        'content' => 'required',
+                    ],
+                    [
+                        'first_url.required' => '开始采集地址不能为空',
+                        'parameter.required' => '接口参数不能为空',
+                        'start.required' => '列表标签不能为空',
+                        'title.required' => '标题标签不能为空',
+                        'content.required' => '内容标签不能为空'
+                    ]
+                );  
+                if ($validator->fails()) {
+                    $errorMessage = $validator->errors()->first();
+                    return Result::error($errorMessage);
+                }  
+                // var_dump("============2============");                    
+                break;
+            case 3:
+                $validator = $this->validationFactory->make(
+                    $requireData,
+                    [
+                        'diy_rule' => 'required'
+                    ],
+                    [
+                        'diy_rule.required' => '采集规则不能为空'
+                    ]
+                ); 
+                if ($validator->fails()) {
+                    $errorMessage = $validator->errors()->first();
+                    return Result::error($errorMessage);
+                }  
+                // var_dump("============3============");  
+                break;
+            default:
+                return Result::error('请输入正确的网站类型');
+                break;
+                
+        }
+
+        if(isset($requireData['writer_class']) && $requireData['type'] == 2){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'writer_class' => 'required'
+                ],
+                [
+                    'writer_class.required' => '作者标签不能为空'
+                ]
+            ); 
+            if ($validator->fails()) {
+                $errorMessage = $validator->errors()->first();
+                return Result::error($errorMessage);
+            }  
+        }
+        if(isset($requireData['writer']) && $requireData['type'] != 3){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'writer' => 'required'
+                ],
+                [
+                    'writer.required' => '文章作者不能为空'
+                ]
+            );  
+            if ($validator->fails()) {
+                $errorMessage = $validator->errors()->first();
+                return Result::error($errorMessage);
+            }  
+        }
+        // var_dump("++++++++++",$requireData);
+        $result = $this->collectorServiceClient->upRule($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+
+    } 
+    /**
+    * 删除任务规则
+    * @return array
+    */
+    public function delRule()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'rule_id' => 'required'
+            ],
+            [
+                'rule_id.required' => '任务规则id不能为空'
+            ]
+        ); 
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }        
+        $result = $this->collectorServiceClient->delRule($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+
+    /**
+     * 开始采集
+     * @return array
+     */
+    public function sendCrawler()
+    {
+        $data = [];
+        $data['admin_user_id'] = Context::get("UserId");
+        $data['time'] = microtime();
+        $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);
+        }
+//        $b  = $this->Iservice->push($data,1);
+        $data['id'] = $requireData['id'];
+        var_dump("发送数据:",$data);
+        $result =  $this->collectorServiceClient->sendCrawler($data);
+        return $result['code']==200?Result::success($result['data']):Result::error('采集失败');
+
+    }
+
+
+    /**
+     * 获取并搜索资讯
+     * @return array
+     */
+    public function getInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'rule_id' => 'required',
+                'pageSize' => 'required',
+                'page' => 'required'
+            ],
+            [
+                'rule_id.required' => '规则任务id不能为空',
+                'pageSize.required' => '每页显示数量不能为空',
+                'page.required' => '第几页不能为空'
+            ]
+        ); 
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $result = $this->collectorServiceClient->getInfo($requireData);        
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
+
+    /**
+     * 获取某个资讯
+     * @return array
+     */
+    public function getOneInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'art_id' => 'required'
+            ],
+            [
+                'art_id.required' => '资讯id不能为空'
+            ]
+        ); 
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $result = $this->collectorServiceClient->getOneInfo($requireData);
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
+    /**
+     *修改资讯
+     * @return array
+     */
+    public function upInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'art_id' => 'required',
+                'title' => 'required',
+                'keyword' => 'required',
+                'content' => 'required',
+                'hits' => 'required',
+                'is_original' => 'required',
+                'islink' => 'required'
+            ],
+            [
+                'art_id.required' => '资讯id不能为空',
+                'title.required' => '资讯标题不能为空',
+                'keyword.required' => '资讯关键词不能为空',
+                'content.required' => '资讯内容不能为空',
+                'hits.required' => '浏览量不能为空',
+                'is_original.required' => '原创不能为空',
+                'islink.required' => '外链不能为空'
+            ]
+        ); 
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        if($requireData['islink']==1){
+            $requireData = $this->request->all();
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'linkurl' => 'required'
+                ],
+                [
+                    'linkurl.required' => '外链地址不能为空'
+                ]
+            ); 
+            if ($validator->fails()) {
+                $errorMessage = $validator->errors()->first();
+                return Result::error($errorMessage);
+            }
+        }
+        if($requireData['is_original']==0){
+            $requireData = $this->request->all();
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'fromurl' => 'required',
+                    'copyfrom' => 'required'
+                ],
+                [
+                    'fromurl.required' => '采集来源地址不能为空',
+                    'copyfrom' => '采集来源不能为空'
+                ]
+            ); 
+            if ($validator->fails()) {
+                $errorMessage = $validator->errors()->first();
+                return Result::error($errorMessage);
+            }
+        }
+        $result = $this->collectorServiceClient->upInfo($requireData);
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
+    /**
+     * 删除资讯
+     * @return array
+     */
+    public function delInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'art_id' => 'required'
+            ],
+            [
+                'art_id.required' => '资讯id不能为空'
+            ]
+        ); 
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $result = $this->collectorServiceClient->delInfo($requireData);
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
+    /**
+     * 关联导航池
+     * @return array
+     */
+    public function addCatid()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'rule_id' => 'required'
+            ],
+            [
+                'rule_id.required' => '任务规则id不能为空'
+            ]
+        ); 
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $result = $this->collectorServiceClient->addCatid($requireData);
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
+     /**
+     * 开始导入
+     * @return array
+     */
+    public function addArt()
+    {
+        $requireData = $this->request->all();
+        if(!empty($requireData)){
+            $validator = $this->validationFactory->make(
+                $requireData,
+                [
+                    'rule_id' => 'required'
+                ],
+                [
+                    'rule_id.required' => '任务规则id不能为空'
+                ]
+            ); 
+            if ($validator->fails()) {
+                $errorMessage = $validator->errors()->first();
+                return Result::error($errorMessage);
+            }
+        }
+        $data['rule_id'] = $requireData['rule_id'];
+        $data['time'] = microtime();
+        
+        // var_dump("=====111",$data);
+        $result  = $this->collectorServiceClient->addArt($data);
+        // var_dump("=====222",$result);
+        return Result::success($result);
+    }
+   
 }

+ 62 - 0
app/Controller/MinioController.php

@@ -0,0 +1,62 @@
+<?php
+declare (strict_types = 1);
+namespace App\Controller;
+
+use App\JsonRpc\PublicRpcServiceInterface;
+use App\Tools\Result;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Validation\Contract\ValidatorFactoryInterface;
+
+class MinioController extends AbstractController
+{
+    #[Inject]
+    protected ValidatorFactoryInterface $validationFactory;
+    /**
+     * @var PublicRpcServiceInterface
+     */
+    #[Inject]
+    private $publicServiceClient;
+
+    /**
+     * 获取所有的buckets
+     * @return array
+     */
+    public function listBuckets()
+    {
+       $result = $this->publicServiceClient->getBuckets([]);
+        // 直接返回服务层生成的响应
+       return Result::success($result['data']);
+    }
+
+    /**
+     * 上传文件
+     * @return array
+     */
+    public function uploadFiles()
+    {
+        $uploadedFile  = $this->request->file('file');
+        if ($uploadedFile && $uploadedFile->isValid()) {
+            $filename = $uploadedFile->getClientFilename();
+            $fileContent = base64_encode(file_get_contents($uploadedFile->getRealPath()));
+            $mimeType = $uploadedFile->getMimeType();
+//            var_dump("大小:",$uploadedFile->getSize());
+            if($uploadedFile->getSize()>10242880){
+                return Result::error("最大支持10M!");
+            }
+            $data['fileContent'] = $fileContent;
+            $data['fileName'] = $filename;
+            $data['contentType'] = $mimeType;
+            $data['ext'] = $uploadedFile->getExtension();
+            $data['size'] = $uploadedFile->getSize();
+            $result = $this->publicServiceClient->uploadFile($data);
+            if($result['code']==200){
+                return Result::success($result['data']);
+            }else{
+                return Result::error("上传失败了!");
+            }
+        }else{
+            return Result::error("请选择需要上传的文件");
+        }
+
+    }
+}

+ 0 - 40
app/Job/ImportExampleJob.php

@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Job;
-use Hyperf\AsyncQueue\Job;
-use App\Controller\CollectorController;
-class ImportExampleJob extends Job
-{
-
-    public $params;
-    /**
-     * 任务执行失败后的重试次数,即最大执行次数为 $maxAttempts+1 次
-     */
-    protected int $maxAttempts = 10;
-
-    public function __construct($params)
-    {
-        // 这里最好是普通数据,不要使用携带 IO 的对象,比如 PDO 对象
-        $this->params = $params;
-    }
-    public function handle()
-    {
-        // if(isset($data['admin_user_id'])){
- 
-        // }else{
-
-            try {
-                var_dump("============",$this->params);
-                $collector = new CollectorController();
-                $result = $collector->goaddArt($this->params);
-                var_dump("消费消息队列:",$this->params,$result);
-            }catch (\Exception $e){
-                var_dump($e->getMessage());
-            }
-            // var_dump($$this->params);
-        // }
-
-    }
-}

+ 20 - 1
app/JsonRpc/PublicRpcService.php

@@ -217,6 +217,7 @@ class PublicRpcService extends AbstractServiceClient implements PublicRpcService
     {
         return $this->__request(__FUNCTION__, $data);
     }
+
     public function getTemplateClass(array $data)
     {
         return $this->__request(__FUNCTION__, $data);
@@ -286,7 +287,25 @@ class PublicRpcService extends AbstractServiceClient implements PublicRpcService
     {
         return $this->__request(__FUNCTION__, $data);
     }
-    public function getWebsiteTemplateInfo(array $data)
+    public function getWebsiteTemplateInfo(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function getBuckets(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function uploadFile(array $data)
     {
         return $this->__request(__FUNCTION__, $data);
     }

+ 13 - 0
app/JsonRpc/PublicRpcServiceInterface.php

@@ -129,6 +129,7 @@ interface PublicRpcServiceInterface
      *
      */
     public function modZhinengbumen(array $data);
+
     public function getTemplateClass(array $data);
     public function getTemplateList(array $data);
     public function getTemplateInfo(array $data);
@@ -147,4 +148,16 @@ interface PublicRpcServiceInterface
     public function updateComponent(array $data);
     public function getWebsiteTemplateList(array $data);
     public function getWebsiteTemplateInfo(array $data);
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getBuckets(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function uploadFile(array $data);
+
 }

+ 107 - 107
composer.json

@@ -1,107 +1,107 @@
-{
-    "name": "hyperf/hyperf-skeleton",
-    "type": "project",
-    "keywords": [
-        "php",
-        "swoole",
-        "framework",
-        "hyperf",
-        "microservice",
-        "middleware"
-    ],
-    "description": "A coroutine framework that focuses on hyperspeed and flexible, specifically use for build microservices and middlewares.",
-    "license": "Apache-2.0",
-    "require": {
-        "php": ">=8.1",
-        "death_satan/hyperf-validate": "^3.71",
-        "doctrine/annotations": "^2.0",
-        "easyswoole/verifycode": "3.x",
-        "friendsofhyperf/openai-client": "^3.1",
-        "hyperf/amqp": "^3.1",
-        "hyperf/async-queue": "^3.1",
-        "hyperf/cache": "~3.1.0",
-        "hyperf/command": "^3.1",
-        "hyperf/config": "~3.1.0",
-        "hyperf/config-nacos": "^3.1",
-        "hyperf/constants": "^3.1",
-        "hyperf/database": "~3.1.0",
-        "hyperf/db-connection": "~3.1.0",
-        "hyperf/di": "^3.1",
-        "hyperf/engine": "^2.10",
-        "hyperf/framework": "~3.1.0",
-        "hyperf/guzzle": "~3.1.0",
-        "hyperf/http-server": "~3.1.0",
-        "hyperf/json-rpc": "*",
-        "hyperf/logger": "^3.1",
-        "hyperf/memory": "~3.1.0",
-        "hyperf/nacos": "^3.1",
-        "hyperf/paginator": "^3.1",
-        "hyperf/process": "~3.1.0",
-        "hyperf/redis": "^3.1",
-        "hyperf/rpc-client": "^3.1",
-        "hyperf/rpc-server": "*",
-        "hyperf/service-governance": "^3.1",
-        "hyperf/service-governance-consul": "^3.1",
-        "hyperf/service-governance-nacos": "^3.1",
-        "hyperf/snowflake": "^3.1",
-        "hyperf/translation": "^3.1",
-        "hyperf/utils": "^3.1",
-        "hyperf/validation": "^3.1",
-        "hyperf/websocket-server": "^3.1",
-        "openai-php/client": "^0.10.3",
-        "phper666/jwt-auth": "^4.0"
-    },
-    "require-dev": {
-        "friendsofphp/php-cs-fixer": "^3.0",
-        "hyperf/devtool": "~3.1.0",
-        "hyperf/testing": "~3.1.0",
-        "hyperf/watcher": "^3.1",
-        "mockery/mockery": "^1.0",
-        "phpstan/phpstan": "^1.0",
-        "swoole/ide-helper": "^5.0",
-        "zx/php-tools": "^0.0.1"
-    },
-    "suggest": {
-        "ext-openssl": "Required to use HTTPS.",
-        "ext-json": "Required to use JSON.",
-        "ext-pdo": "Required to use MySQL Client.",
-        "ext-pdo_mysql": "Required to use MySQL Client.",
-        "ext-redis": "Required to use Redis Client."
-    },
-    "autoload": {
-        "psr-4": {
-            "App\\": "app/"
-        },
-        "files": []
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "HyperfTest\\": "./test/"
-        }
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "config": {
-        "optimize-autoloader": true,
-        "sort-packages": true,
-        "allow-plugins": {
-            "php-http/discovery": true
-        }
-    },
-    "extra": [],
-    "scripts": {
-        "post-root-package-install": [
-            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
-        ],
-        "post-autoload-dump": [
-            "rm -rf runtime/container"
-        ],
-        "test": "co-phpunit --prepend test/bootstrap.php --colors=always",
-        "cs-fix": "php-cs-fixer fix $1",
-        "analyse": "phpstan analyse --memory-limit 300M",
-        "start": [
-            "Composer\\Config::disableProcessTimeout",
-            "php ./bin/hyperf.php start"
-        ]
-    }
-}
+{
+    "name": "hyperf/hyperf-skeleton",
+    "type": "project",
+    "keywords": [
+        "php",
+        "swoole",
+        "framework",
+        "hyperf",
+        "microservice",
+        "middleware"
+    ],
+    "description": "A coroutine framework that focuses on hyperspeed and flexible, specifically use for build microservices and middlewares.",
+    "license": "Apache-2.0",
+    "require": {
+        "php": ">=8.1",
+        "death_satan/hyperf-validate": "^3.71",
+        "doctrine/annotations": "^2.0",
+        "easyswoole/verifycode": "3.x",
+        "friendsofhyperf/openai-client": "^3.1",
+        "hyperf/amqp": "^3.1",
+        "hyperf/async-queue": "^3.1",
+        "hyperf/cache": "~3.1.0",
+        "hyperf/command": "^3.1",
+        "hyperf/config": "~3.1.0",
+        "hyperf/config-nacos": "^3.1",
+        "hyperf/constants": "^3.1",
+        "hyperf/database": "~3.1.0",
+        "hyperf/db-connection": "~3.1.0",
+        "hyperf/di": "^3.1",
+        "hyperf/engine": "^2.10",
+        "hyperf/framework": "~3.1.0",
+        "hyperf/guzzle": "~3.1.0",
+        "hyperf/http-server": "~3.1.0",
+        "hyperf/json-rpc": "*",
+        "hyperf/logger": "^3.1",
+        "hyperf/memory": "~3.1.0",
+        "hyperf/nacos": "^3.1",
+        "hyperf/paginator": "^3.1",
+        "hyperf/process": "~3.1.0",
+        "hyperf/redis": "^3.1",
+        "hyperf/rpc-client": "^3.1",
+        "hyperf/rpc-server": "*",
+        "hyperf/service-governance": "^3.1",
+        "hyperf/service-governance-consul": "^3.1",
+        "hyperf/service-governance-nacos": "^3.1",
+        "hyperf/snowflake": "^3.1",
+        "hyperf/translation": "^3.1",
+        "hyperf/utils": "^3.1",
+        "hyperf/validation": "^3.1",
+        "hyperf/websocket-server": "^3.1",
+        "openai-php/client": "^0.10.3",
+        "phper666/jwt-auth": "^4.0"
+    },
+    "require-dev": {
+        "friendsofphp/php-cs-fixer": "^3.0",
+        "hyperf/devtool": "~3.1.0",
+        "hyperf/testing": "~3.1.0",
+        "hyperf/watcher": "^3.1",
+        "mockery/mockery": "^1.0",
+        "phpstan/phpstan": "^1.0",
+        "swoole/ide-helper": "^5.0",
+        "zx/php-tools": "^0.0.1"
+    },
+    "suggest": {
+        "ext-openssl": "Required to use HTTPS.",
+        "ext-json": "Required to use JSON.",
+        "ext-pdo": "Required to use MySQL Client.",
+        "ext-pdo_mysql": "Required to use MySQL Client.",
+        "ext-redis": "Required to use Redis Client."
+    },
+    "autoload": {
+        "psr-4": {
+            "App\\": "app/"
+        },
+        "files": []
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "HyperfTest\\": "./test/"
+        }
+    },
+    "minimum-stability": "dev",
+    "prefer-stable": true,
+    "config": {
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "allow-plugins": {
+            "php-http/discovery": true
+        }
+    },
+    "extra": [],
+    "scripts": {
+        "post-root-package-install": [
+            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
+        ],
+        "post-autoload-dump": [
+            "rm -rf runtime/container"
+        ],
+        "test": "co-phpunit --prepend test/bootstrap.php --colors=always",
+        "cs-fix": "php-cs-fixer fix $1",
+        "analyse": "phpstan analyse --memory-limit 300M",
+        "start": [
+            "Composer\\Config::disableProcessTimeout",
+            "php ./bin/hyperf.php start"
+        ]
+    }
+}

Diff do ficheiro suprimidas por serem muito extensas
+ 195 - 195
composer.lock


+ 6 - 1
config/api/public.php

@@ -4,6 +4,7 @@ declare (strict_types = 1);
 use App\Controller\PublicController;
 use App\Middleware\Auth\FooMiddleware;
 use Hyperf\HttpServer\Router\Router;
+use App\Controller\MinioController;
 
 Router::addRoute(['GET', 'POST'], '/verifyCode', 'App\Controller\IndexController@verifyCode');
 Router::addRoute(['GET', 'POST'], '/getverifyCode', 'App\Controller\IndexController@getverifyCode');
@@ -11,7 +12,7 @@ Router::addGroup(
     '/public', function () {
         Router::get('/getDistrictList', [PublicController::class, 'getDistrictList']);
         Router::get('/getUserLevelList', [PublicController::class, 'getUserLevelList']);
-        Router::post('/uploadFile', [PublicController::class, 'uploadFile']);
+//        Router::post('/uploadFile', [PublicController::class, 'uploadFile']);
         Router::post('/addUserLevel', [PublicController::class, 'addUserLevel']);
         Router::post('/delUserLevel', [PublicController::class, 'delUserLevel']);
         Router::post('/updateUserLevel', [PublicController::class, 'updateUserLevel']);
@@ -80,6 +81,10 @@ Router::addGroup(
         Router::get('/getLetterType', [PublicController::class, 'getLetterType']);
         //获取子类型
         Router::get('/getLetterTypeChildren', [PublicController::class, 'getLetterTypeChildren']);
+
+        Router::post('/buckets', [MinioController::class, 'listBuckets']);
+
+        Router::post('/uploadFile', [MinioController::class, 'uploadFiles']);
     }
 );
 

+ 63 - 62
config/autoload/server.php

@@ -1,62 +1,63 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-use Hyperf\Server\Event;
-use Hyperf\Server\Server;
-use Swoole\Constant;
-
-return [
-    'mode' => SWOOLE_PROCESS,
-    'servers' => [
-        [
-            'name' => 'http',
-            'type' => Server::SERVER_HTTP,
-            'host' => '0.0.0.0',
-            'port' => 9501,
-            'sock_type' => SWOOLE_SOCK_TCP,
-            'callbacks' => [
-                Event::ON_REQUEST => [App\Service\Server\StreamServer::class, 'onRequest'],
-//                Event::ON_REQUEST => [Hyperf\HttpServer\Server::class, 'onRequest'],
-            ],
-        ],
-        [
-            'name' => 'ws',
-            'type' => Server::SERVER_WEBSOCKET,
-            'host' => '0.0.0.0',
-            'port' => 9506,
-            'sock_type' => SWOOLE_SOCK_TCP,
-            'callbacks' => [
-                Event::ON_HAND_SHAKE => [Hyperf\WebSocketServer\Server::class, 'onHandShake'],
-                Event::ON_MESSAGE => [Hyperf\WebSocketServer\Server::class, 'onMessage'],
-                Event::ON_CLOSE => [Hyperf\WebSocketServer\Server::class, 'onClose'],
-            ],
-        ],
-    ],
-    'settings' => [
-        'document_root' => BASE_PATH . '/public',
-        'enable_static_handler' => true,
-        Constant::OPTION_ENABLE_COROUTINE => true,
-        Constant::OPTION_WORKER_NUM => swoole_cpu_num(),
-        Constant::OPTION_PID_FILE => BASE_PATH . '/runtime/hyperf.pid',
-        Constant::OPTION_OPEN_TCP_NODELAY => true,
-        Constant::OPTION_MAX_COROUTINE => 100000,
-        Constant::OPTION_OPEN_HTTP2_PROTOCOL => true,
-        Constant::OPTION_MAX_REQUEST => 100000,
-        Constant::OPTION_SOCKET_BUFFER_SIZE => 2 * 1024 * 1024,
-        Constant::OPTION_BUFFER_OUTPUT_SIZE => 2 * 1024 * 1024,
-    ],
-    'callbacks' => [
-        Event::ON_WORKER_START => [Hyperf\Framework\Bootstrap\WorkerStartCallback::class, 'onWorkerStart'],
-        Event::ON_PIPE_MESSAGE => [Hyperf\Framework\Bootstrap\PipeMessageCallback::class, 'onPipeMessage'],
-        Event::ON_WORKER_EXIT => [Hyperf\Framework\Bootstrap\WorkerExitCallback::class, 'onWorkerExit'],
-    ],
-
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\Server\Event;
+use Hyperf\Server\Server;
+use Swoole\Constant;
+
+return [
+    'mode' => SWOOLE_PROCESS,
+    'servers' => [
+        [
+            'name' => 'http',
+            'type' => Server::SERVER_HTTP,
+            'host' => '0.0.0.0',
+            'port' => 9501,
+            'sock_type' => SWOOLE_SOCK_TCP,
+            'callbacks' => [
+                Event::ON_REQUEST => [App\Service\Server\StreamServer::class, 'onRequest'],
+//                Event::ON_REQUEST => [Hyperf\HttpServer\Server::class, 'onRequest'],
+            ],
+        ],
+        [
+            'name' => 'ws',
+            'type' => Server::SERVER_WEBSOCKET,
+            'host' => '0.0.0.0',
+            'port' => 9506,
+            'sock_type' => SWOOLE_SOCK_TCP,
+            'callbacks' => [
+                Event::ON_HAND_SHAKE => [Hyperf\WebSocketServer\Server::class, 'onHandShake'],
+                Event::ON_MESSAGE => [Hyperf\WebSocketServer\Server::class, 'onMessage'],
+                Event::ON_CLOSE => [Hyperf\WebSocketServer\Server::class, 'onClose'],
+            ],
+        ],
+    ],
+    'settings' => [
+        'document_root' => BASE_PATH . '/public',
+        'enable_static_handler' => true,
+        Constant::OPTION_ENABLE_COROUTINE => true,
+        Constant::OPTION_WORKER_NUM => swoole_cpu_num(),
+        Constant::OPTION_PID_FILE => BASE_PATH . '/runtime/hyperf.pid',
+        Constant::OPTION_OPEN_TCP_NODELAY => true,
+        Constant::OPTION_MAX_COROUTINE => 10 * 1024 * 1024,
+        Constant::OPTION_OPEN_HTTP2_PROTOCOL => true,
+        Constant::OPTION_MAX_REQUEST => 10 * 1024 * 1024,
+        Constant::OPTION_SOCKET_BUFFER_SIZE => 10 * 1024 * 1024,
+        Constant::OPTION_BUFFER_OUTPUT_SIZE => 10 * 1024 * 1024,
+        Constant::OPTION_UPLOAD_MAX_FILESIZE => 10 * 1024 * 1024,
+    ],
+    'callbacks' => [
+        Event::ON_WORKER_START => [Hyperf\Framework\Bootstrap\WorkerStartCallback::class, 'onWorkerStart'],
+        Event::ON_PIPE_MESSAGE => [Hyperf\Framework\Bootstrap\PipeMessageCallback::class, 'onPipeMessage'],
+        Event::ON_WORKER_EXIT => [Hyperf\Framework\Bootstrap\WorkerExitCallback::class, 'onWorkerExit'],
+    ],
+
+];

+ 21 - 0
config/autoload/services.php

@@ -46,6 +46,27 @@ return [
             'nodes' => [
                 ['host' => '127.0.0.1', 'port' => 9502],
             ],
+            'settings' => [
+                'open_length_check' => true,
+                'package_max_length' => 15 * 1024 * 1024, // 最大包长度
+                'package_length_type' => 'N',
+                'package_body_offset' => 8,
+                'package_length_offset' => 4,
+                'package_length_field' => 'length',
+            ],
+            'options' => [
+                'connect_timeout' => 50.0, // 连接超时时间,单位为秒
+                'read_timeout' => 100.0,   // 读取超时时间,单位为秒
+                'write_timeout' => 100.0,  // 写入超时时间,单位为秒
+            ],
+            'pool' => [
+                'min_connections' => 1,
+                'max_connections' => 30,
+                'connect_timeout' => 100.0, // 连接池连接超时时间,单位为秒
+                'wait_timeout' => 30.0,     // 等待连接池可用连接的超时时间,单位为秒
+                'heartbeat' => -1,         // 心跳检测间隔,-1 表示禁用心跳检测
+                'max_idle_time' => 60.0,   // 连接的最大空闲时间,单位为秒
+            ],
         ],
         [
             //资讯-新闻

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff