Procházet zdrojové kódy

:sparkles: 页面搜索

visuddhinanda před 3 roky
rodič
revize
a3f5a9945b
1 změnil soubory, kde provedl 68 přidání a 5 odebrání
  1. 68 5
      app/Http/Controllers/SearchController.php

+ 68 - 5
app/Http/Controllers/SearchController.php

@@ -14,6 +14,7 @@ use App\Http\Resources\SearchResource;
 use App\Http\Resources\SearchBookResource;
 use Illuminate\Support\Facades\Log;
 use App\Tools\Tools;
+use App\Models\WbwTemplate;
 
 
 class SearchController extends Controller
@@ -23,7 +24,20 @@ class SearchController extends Controller
      *
      * @return \Illuminate\Http\Response
      */
-    public function index(Request $request)
+    public function index(Request $request){
+        switch ($request->get('view','pali')) {
+            case 'pali':
+                return $this->pali($request);
+                break;
+            case 'page':
+                return $this->page($request);
+                break;
+            default:
+                # code...
+                break;
+        }
+    }
+    public function pali(Request $request)
     {
         //
         $searchChapters = [];
@@ -123,6 +137,39 @@ class SearchController extends Controller
 
         return $this->ok(["rows"=>SearchResource::collection($result),"count"=>$resultCount[0]->co]);
     }
+    public function page(Request $request)
+    {
+        //
+        $searchChapters = [];
+        $searchBooks = [];
+        $searchBookId = [];
+        $queryBookId = '';
+        $bookId = [];
+        if($request->has('book')){
+            $bookId[] = $request->get('book');
+        }else if($request->has('tags')){
+            //查询搜索范围
+            //查询搜索范围
+            $tagItems = explode(';',$request->get('tags'));
+            foreach ($tagItems as $tagItem) {
+                # code...
+                $bookId = array_merge($bookId,$this->getBookIdByTags(explode(',',$tagItem)));
+            }
+        }
+
+//type='.ctl.' and word like 'P%038'
+        $table = WbwTemplate::where('type','.ctl.')
+                            ->where('word','like',$request->get('type')."%0".$request->get('key'));
+        if(count($bookId)>0){
+            $table = $table->whereIn('pcd_book_id',$bookId);
+        }
+        $count = $table->count();
+        $table = $table->select(['book','paragraph']);
+        $table->skip($request->get("offset",0))->take($request->get('limit',10));
+        $result = $table->get();
+
+        return $this->ok(["rows"=>SearchResource::collection($result),"count"=>$count]);
+    }
 
     public function book_list(Request $request){
         $searchChapters = [];
@@ -140,11 +187,26 @@ class SearchController extends Controller
             $queryBookId = ' AND pcd_book_id in ('.implode(',',$bookId).') ';
         }
         $key = $request->get('key');
+        switch ($request->get('view','pali')) {
+            case 'pali':
+                # code...
+                $queryWhere = $this->getQueryWhere($key,$request->get('match','case'));
+                $query = "SELECT pcd_book_id, count(*) as co FROM fts_texts WHERE {$queryWhere['query']} {$queryBookId} GROUP BY pcd_book_id ORDER BY co DESC;";
+                $result = DB::select($query, $queryWhere['param']);
+                break;
+            case 'page';
+                $type = $request->get('type','P');
+                $word = "{$type}%0{$key}";
+                $queryWhere = "type='.ctl.' AND word like ?";
+                $query = "SELECT pcd_book_id, count(*) as co FROM wbw_templates WHERE {$queryWhere} {$queryBookId} GROUP BY pcd_book_id ORDER BY co DESC;";
+                $result = DB::select($query, [$word]);
+                break;
+            default:
+                # code...
+                return $this->error('unknown view');
+                break;
+        }
 
-        $queryWhere = $this->getQueryWhere($key,$request->get('match','case'));
-
-        $query = "SELECT pcd_book_id, count(*) as co FROM fts_texts WHERE {$queryWhere['query']} {$queryBookId} GROUP BY pcd_book_id ORDER BY co DESC;";
-        $result = DB::select($query, $queryWhere['param']);
 
         return $this->ok(["rows"=>SearchBookResource::collection($result),"count"=>count($result)]);
     }
@@ -211,6 +273,7 @@ class SearchController extends Controller
         return $searchBookId;
 
     }
+
     /**
      * Store a newly created resource in storage.
      *