Forráskód Böngészése

添加不同类型的规则任务、删除网站、删除规则任务

the_bug 5 hónapja
szülő
commit
b74ecd9651
3 módosított fájl, 71 hozzáadás és 1978 törlés
  1. 70 24
      app/JsonRpc/CollectorService.php
  2. 1 1
      runtime/hyperf.pid
  3. 0 1953
      runtime/logs/hyperf.log

+ 70 - 24
app/JsonRpc/CollectorService.php

@@ -83,6 +83,7 @@ class CollectorService implements CollectorServiceInterface
      */
      */
     public function upWeb(array $data): array
     public function upWeb(array $data): array
     {
     {
+        
         $web = Web::where('id',$data['id'])->first();
         $web = Web::where('id',$data['id'])->first();
         if(empty($web->toArray())){
         if(empty($web->toArray())){
             return Result::error('请输入正确的网站id!');
             return Result::error('请输入正确的网站id!');
@@ -103,16 +104,41 @@ class CollectorService implements CollectorServiceInterface
     public function delWeb(array $data): array
     public function delWeb(array $data): array
     {
     {
         $web = Web::where('id',$data['id'])->first();
         $web = Web::where('id',$data['id'])->first();
-        if(empty($web->toArray())){
+        if(empty($web)){
             return Result::error('请输入正确的网站id!');
             return Result::error('请输入正确的网站id!');
             
             
         }else{
         }else{
-            $id = Web::where('id',$data['id'])->delete();
-            if(empty($id)){
-                return Result::error('无法删除!');
+            $where = [
+                ['web_id','=',$data['id']]
+            ];
+            //判断此网站下是否规则任务
+            $rule = Rule::where($where)->get();
+            if(empty($rule)){
+                //若没有直接删除网站
+                $result['web'] = Web::where('id',$data['id'])->delete();
+            }else{
+                //若有,判断规则任务是否有已执行的
+                $rule = Rule::where($where)->where('status',2)->get();
+                // return Result::success($rule);
+                if(!empty($rule->toArray())){
+                    //若有已执行的任务规则,不可删除网站
+                    return Result::error('该网站已有成功执行的任务规则,不可删除!');
+                }else{
+                    try {
+                        Db::beginTransaction();
+                        //若无已执行的任务规则,删除网站及相应的未执行的规则任务
+                        $result['web'] = Web::where('id',$data['id'])->delete();
+                        $result['rule'] = Rule::where($where)->delete();
+                        Db::commit();
+                    } catch(\Throwable $ex){
+                        Db::rollBack();
+                        var_dump($ex->getMessage());
+                        return Result::error("删除失败",0);
+                    }
+                }        
             }
             }
         }
         }
-        return Result::success($id);
+        return Result::success($result);
     }
     }
     /**
     /**
      * 添加规则任务
      * 添加规则任务
@@ -127,20 +153,24 @@ class CollectorService implements CollectorServiceInterface
             
             
         }else{
         }else{
             $rulename = Rule::where('name',$data['name'])->get();
             $rulename = Rule::where('name',$data['name'])->get();
+            //查找是否存在规则名称重复的
             if(empty($rulename->toArray())){
             if(empty($rulename->toArray())){
                 date_default_timezone_set('Asia/Shanghai');
                 date_default_timezone_set('Asia/Shanghai');
                 $time = time();
                 $time = time();
                 $catetime = date('Y-m-d H:i:s', $time);
                 $catetime = date('Y-m-d H:i:s', $time);
                 $data['created_at'] = $catetime;
                 $data['created_at'] = $catetime;
+                unset($data['type']);
+                //若不存在,根据网站类型添加到不行类型的规则表中
                 $id = Rule::insertGetId($data);
                 $id = Rule::insertGetId($data);
                 $result = ['data' => $id];
                 $result = ['data' => $id];
+                
             }else{
             }else{
                 return Result::error('此任务已存在!');
                 return Result::error('此任务已存在!');
-            }
+            }  
         }
         }
-       
         return Result::success($result['data']);
         return Result::success($result['data']);
     }
     }
+    
     /**
     /**
      * 获取并搜索规则任务
      * 获取并搜索规则任务
      * @param array $data
      * @param array $data
@@ -153,22 +183,19 @@ class CollectorService implements CollectorServiceInterface
             return Result::error('请输入正确的网站id!');
             return Result::error('请输入正确的网站id!');
             
             
         }else{
         }else{
+            $where = [
+                ['web_id','=', $data['web_id']]
+            ];
             if(isset($data['keyWord'])){
             if(isset($data['keyWord'])){
+                //若存在搜索词,则存到条件数组$where中
                 $where = [
                 $where = [
-                    ['name','like','%'.$data['keyWord'].'%'],
-                    ['web_id','=', $data['web_id']] 
+                    ['name','like','%'.$data['keyWord'].'%']
                 ];
                 ];
-                $rep = Rule::withCount(relations:'arts')->where($where)->limit($data['pageSize'])->orderBy("created_at","desc")->offset(($data['page']-1)*$data['pageSize'])->get();
-                $count = Rule::where($where)->count();
-                if($count==0){
-                    return Result::error('未查找到相关网站!');
-                }
-            }else{
-                $rep = Rule::withCount(relations:'arts')->where('web_id',$data['web_id'])->limit($data['pageSize'])->orderBy("created_at","desc")->offset(($data['page']-1)*$data['pageSize'])->get();
-                $count = Rule::where('web_id',$data['web_id'])->count();
-                if($count==0){
-                    return Result::error('此网站下暂无规则任务!');
-                }
+            }
+            $rep = Rule::withCount(relations:'arts')->where($where)->limit($data['pageSize'])->orderBy("created_at","desc")->offset(($data['page']-1)*$data['pageSize'])->get();
+            $count = Rule::where($where)->count();
+            if($count==0){
+                return Result::error('暂无相关规则任务!');
             }       
             }       
         }
         }
         $data = [
         $data = [
@@ -227,12 +254,31 @@ class CollectorService implements CollectorServiceInterface
             return Result::error('请输入正确的规则任务id!');
             return Result::error('请输入正确的规则任务id!');
             
             
         }else{
         }else{
-            $delrule = Rule::where($where)->delete();
-            if(empty($delrule)){
-                return Result::error('此规则任务删除失败!');
+            //查找是否存在已导入的文章
+            $art_num = Article::where('rule_id',$data['rule'])->where('state',1)->count();
+            if($art_num==0){
+                //查找是否存在已采集但是未导入的文章
+                $colart_num = Article::where('rule_id',$data['rule'])->where('state',0)->count();
+                if($colart_num==0){
+                    $result['rule'] = Rule::where($where)->delete();
+                }else{
+                    try {
+                        Db::beginTransaction();
+                        //若有已采集但未导入的文章,删除规则任务及相应的未导入的文章
+                        $result['rule'] = Rule::where($where)->delete();
+                        $result['art'] = Article::where('rule_id',$data['id'])->delete();
+                        Db::commit();
+                    } catch(\Throwable $ex){
+                        Db::rollBack();
+                        var_dump($ex->getMessage());
+                        return Result::error("删除失败",0);
+                    }
+                }
+            }else{
+                return Result::error('此规则任务下的文章已导入,不可删除!');
             }
             }
         }
         }
-        return Result::success($delrule);
+        return Result::success($result);
     }
     }
 
 
     /**
     /**

+ 1 - 1
runtime/hyperf.pid

@@ -1 +1 @@
-11381
+805

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 1953
runtime/logs/hyperf.log


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott