Преглед изворни кода

在文集某节点下新增文章

visuddhinanda пре 2 година
родитељ
комит
caefdedcc2
1 измењених фајлова са 69 додато и 8 уклоњено
  1. 69 8
      app/Http/Controllers/ArticleController.php

+ 69 - 8
app/Http/Controllers/ArticleController.php

@@ -300,14 +300,75 @@ class ArticleController extends Controller
             $newArticle->save();
             OpsLog::debug($user['user_uid'],$newArticle);
 
-            if(Str::isUuid($request->get('anthologyId'))){
-                $articleMap = new ArticleCollection();
-                $articleMap->id = app('snowflake')->id();
-                $articleMap->article_id = $newArticle->uid;
-                $articleMap->collect_id = $request->get('anthologyId');
-                $articleMap->title = Article::find($newArticle->uid)->title;
-                $articleMap->level = 1;
-                $articleMap->save();
+            $anthologyId = $request->get('anthologyId');
+            if(Str::isUuid($anthologyId)){
+                $parentNode = $request->get('parentNode');
+                if(Str::isUuid($parentNode)){
+                    $map = ArticleCollection::where('collect_id',$anthologyId)
+                                        ->orderBy('id')->get();
+                    $newMap = array();
+                    $parentNodeLevel = -1;
+                    $appended = false;
+                    foreach ($map as $key => $row) {
+                        $orgNode = $row;
+                        if(!$appended){
+                            if($parentNodeLevel>0){
+                                if($row->level <= $parentNodeLevel ){
+                                    //parent node 末尾
+                                    $newNode = $row;
+                                    $newNode['article_id'] = $newArticle->uid;
+                                    $newNode['level'] = $parentNodeLevel+1;
+                                    $newNode['title'] = Article::find($newArticle->uid)->title;
+                                    $newMap[] = $newNode;
+                                    $appended = true;
+                                }
+                            }else{
+                                if($row->article_id === $parentNode){
+                                    $parentNodeLevel = $row->level;
+                                    $orgNode['children'] = $orgNode['children']+1;
+                                }
+                            }
+                        }
+                        $newMap[] = $orgNode;
+                    }
+                    if($parentNodeLevel>0 && $appended===false){
+                        //没挂上
+                        $newNode = array();
+                        $newNode['collect_id'] = $anthologyId;
+                        $newNode['article_id'] = $newArticle->uid;
+                        $newNode['level'] = $parentNodeLevel+1;
+                        $newNode['title'] = Article::find($newArticle->uid)->title;
+                        $newNode['children'] = 0;
+                        $newMap[] = $newNode;
+                    }
+                    $delete = ArticleCollection::where('collect_id',$anthologyId)->delete();
+                    $count=0;
+                    foreach ($newMap as $key => $row) {
+                        $new = new ArticleCollection;
+                        $new->id = app('snowflake')->id();
+                        $new->article_id = $row["article_id"];
+                        $new->collect_id = $row["collect_id"];
+                        $new->title = $row["title"];
+                        $new->level = $row["level"];
+                        $new->children = $row["children"];
+                        $new->editor_id = $user["user_id"];
+                        if(isset($row["deleted_at"])){
+                            $new->deleted_at = $row["deleted_at"];
+                        }
+                        $new->save();
+                        $count++;
+                    }
+                    ArticleMapController::updateCollection($anthologyId);
+                }else{
+                    $articleMap = new ArticleCollection();
+                    $articleMap->id = app('snowflake')->id();
+                    $articleMap->article_id = $newArticle->uid;
+                    $articleMap->collect_id = $request->get('anthologyId');
+                    $articleMap->title = Article::find($newArticle->uid)->title;
+                    $articleMap->level = 1;
+                    $articleMap->save();
+                }
+
             }
         });
         if(Str::isUuid($newArticle->uid)){