Browse Source

支持多个段落

visuddhinanda 2 years ago
parent
commit
e723f3be88
1 changed files with 15 additions and 6 deletions
  1. 15 6
      app/Http/Controllers/NavCSParaController.php

+ 15 - 6
app/Http/Controllers/NavCSParaController.php

@@ -39,7 +39,7 @@ class NavCSParaController extends Controller
      */
     public function show(string $paraNumber)
     {
-        //99-5-37
+        //99_5_37-38
         $id = explode('_',$paraNumber);
         if(count($id) !== 3){
             return $this->error('参数错误。参数应为3 实际得到'.count($id),400,400);
@@ -51,21 +51,30 @@ class NavCSParaController extends Controller
         if(!$para){
             return $this->error('没有找到段落起始'.$id,404,404);
         }
+        //cs 段落号列表
+        $csPara = explode('-',$id[2]);
+        $csList = [];
+        for ($i=(int)$csPara[0]; $i <=(int)end($csPara) ; $i++) {
+            $csList[] = $i;
+        }
+        //段落区间
         $begin = $id[1];
         $end = (int)$id[1] + $para->chapter_len;
         $curr = WbwTemplate::where('book',$id[0])
                                 ->where('style','paranum')
-                                ->where('word',$id[2])
+                                ->whereIn('word',$csList)
                                 ->whereBetween('paragraph',[$begin,$end])
-                                ->select('book','paragraph')->first();
+                                ->orderBy('paragraph')
+                                ->select('book','paragraph')->get();
         if(!$curr){
             return $this->error('没有找到段落'.$id,404,404);
         }
+
         $data = [];
-        $data['curr'] = new NavCSParaResource($curr);
+        $data['curr'] = new NavCSParaResource($curr[0]);
         $next = WbwTemplate::where('book',$id[0])
                 ->where('style','paranum')
-                ->where('word',(int)$id[2]+1)
+                ->where('word',(int)end($csPara)+1)
                 ->whereBetween('paragraph',[$begin,$end])
                 ->select('book','paragraph')->first();
         if($next){
@@ -76,7 +85,7 @@ class NavCSParaController extends Controller
         }
         $prev = WbwTemplate::where('book',$id[0])
                             ->where('style','paranum')
-                            ->where('word',$id[2]-1)
+                            ->where('word',(int)$csPara[0]-1)
                             ->whereBetween('paragraph',[$begin,$end])
                             ->select('book','paragraph')->first();
         if($prev){