visuddhinanda %!s(int64=2) %!d(string=hai) anos
pai
achega
2401c9299a
Modificáronse 1 ficheiros con 29 adicións e 2 borrados
  1. 29 2
      app/Http/Controllers/ArticleMapController.php

+ 29 - 2
app/Http/Controllers/ArticleMapController.php

@@ -29,9 +29,36 @@ class ArticleMapController extends Controller
                 $table = ArticleCollection::where('article_id',$request->get('id'));
                 break;
         }
-        $result = $table->select(['id','collect_id','article_id','level','title','children','editor_id','deleted_at'])
+        $count = $table->count();
+        $result = [];
+        if(!empty($request->get('parent'))){
+            //输出某节点的子节点
+            $node = $table->where('article_id',$request->get('parent'))->first();
+            if($node){
+                $nodeList = ArticleCollection::where('collect_id',$request->get('id'))
+                                            ->where('id','>',(int)$node->id)->orderBy('id')->get();
+                foreach ($nodeList as $key => $curr) {
+                    if($curr->level <= $node->level){
+                        break;
+                    }
+                    if($request->has('lazy')){
+                        if($curr->level === $node->level+1){
+                            $result[] = $curr;
+                        }
+                    }else{
+                        $result[] = $curr;
+                    }
+                }
+            }
+        }else{
+            if($request->has('lazy') && $count > 300){
+                $table = $table->where('level',1);
+            }
+            $result = $table->select(['id','collect_id','article_id','level','title','children','editor_id','deleted_at'])
                         ->orderBy('id')->get();
-        return $this->ok(["rows"=>ArticleMapResource::collection($result),"count"=>count($result)]);
+        }
+
+        return $this->ok(["rows"=>ArticleMapResource::collection($result),"count"=>$count]);
     }
 
     /**