visuddhinanda 2 лет назад
Родитель
Сommit
a7f1dc64c8
2 измененных файлов с 108 добавлено и 0 удалено
  1. 89 0
      app/Http/Controllers/NavPageController.php
  2. 19 0
      app/Http/Resources/NavPageResource.php

+ 89 - 0
app/Http/Controllers/NavPageController.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\PageNumber;
+use Illuminate\Http\Request;
+use App\Http\Resources\NavPageResource;
+
+class NavPageController 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  string  $pageNumber
+     * @return \Illuminate\Http\Response
+     */
+    public function show(string $pageNumber)
+    {
+        //1-M-1-37
+        $id = explode('-',$pageNumber);
+        if(count($id) !== 4){
+            return $this->error('参数错误。参数应为4 实际得到'.count($id),400,400);
+        }
+        $pageCurr = PageNumber::where('book',$id[0])
+                            ->where('type',$id[1])
+                            ->where('volume',$id[2])
+                            ->where('page',$id[3])
+                            ->first();
+        $pagePrev = PageNumber::where('book',$id[0])
+                            ->where('type',$id[1])
+                            ->where('volume',$id[2])
+                            ->where('page',(int)$id[3]-1)
+                            ->first();
+        $pageNext = PageNumber::where('book',$id[0])
+                            ->where('type',$id[1])
+                            ->where('volume',$id[2])
+                            ->where('page',(int)$id[3]+1)
+                            ->first();
+        return $this->ok([
+            'curr'=>$pageCurr? new NavPageResource($pageCurr):null,
+            'prev'=>$pagePrev? new NavPageResource($pagePrev):null,
+            'next'=>$pageNext? new NavPageResource($pageNext):null,
+        ]);
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\PageNumber  $pageNumber
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, PageNumber $pageNumber)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\PageNumber  $pageNumber
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(PageNumber $pageNumber)
+    {
+        //
+    }
+}

+ 19 - 0
app/Http/Resources/NavPageResource.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class NavPageResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return parent::toArray($request);
+    }
+}