Просмотр исходного кода

Merge pull request #1785 from visuddhinanda/laravel

文章导航api
visuddhinanda 2 лет назад
Родитель
Сommit
b55ade2a3c
2 измененных файлов с 93 добавлено и 0 удалено
  1. 91 0
      app/Http/Controllers/NavArticleController.php
  2. 2 0
      routes/api.php

+ 91 - 0
app/Http/Controllers/NavArticleController.php

@@ -0,0 +1,91 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\ArticleCollection;
+use Illuminate\Http\Request;
+use App\Http\Resources\ArticleMapResource;
+
+class NavArticleController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     * 文章导航
+     * 文集中 某个文章的 前一个,后一个
+     * @param  \App\Models\ArticleCollection  $articleCollection
+     * @return \Illuminate\Http\Response
+     */
+    public function show(string $id)
+    {
+        //article_anthology
+        $id = explode('_',$id);
+        if(count($id) !== 2){
+            return $this->error('参数错误。参数应为 2 实际得到'.count($id),400,400);
+        }
+        $curr = ArticleCollection::where('collect_id',$id[1])
+                                ->where('article_id',$id[0])
+                                ->first();
+        if(!$curr){
+            return $this->error('article not found');
+        }
+        $data = array();
+        $data['curr'] = new ArticleMapResource($curr);
+        $prev = ArticleCollection::where('id','<',$curr->id)
+                                ->orderBy('id','desc')
+                                ->first();
+        if($prev && $prev->level === $curr->level){
+            $data['prev'] = new ArticleMapResource($prev);
+        }
+        $next = ArticleCollection::where('id','>',$curr->id)
+                ->orderBy('id')
+                ->first();
+        if($next && $next->level === $curr->level){
+            $data['next'] = new ArticleMapResource($next);
+        }
+        return $this->ok($data);
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\ArticleCollection  $articleCollection
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, ArticleCollection $articleCollection)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\ArticleCollection  $articleCollection
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(ArticleCollection $articleCollection)
+    {
+        //
+    }
+}

+ 2 - 0
routes/api.php

@@ -80,6 +80,7 @@ use App\Http\Controllers\NavPageController;
 use App\Http\Controllers\BookTitleController;
 use App\Http\Controllers\SystemTermController;
 use App\Http\Controllers\TermExportController;
+use App\Http\Controllers\NavArticleController;
 
 /*
 |--------------------------------------------------------------------------
@@ -214,6 +215,7 @@ Route::group(['prefix' => 'v2'],function(){
     Route::get('search-pali-wbw-books',[SearchPaliWbwController::class,'book_list']);
     Route::apiResource('search-page-number',SearchPageNumberController::class);
     Route::apiResource('nav-page',NavPageController::class);
+    Route::apiResource('nav-article',NavArticleController::class);
     Route::apiResource('book-title',BookTitleController::class);
 
     Route::get('download/{type1}/{type2}/{uuid}/{filename}', function ($type1,$type2,$uuid,$filename) {