Browse Source

相似句数量支持

visuddhinanda 3 years ago
parent
commit
341f85e93d
1 changed files with 65 additions and 0 deletions
  1. 65 0
      app/Http/Controllers/CorpusController.php

+ 65 - 0
app/Http/Controllers/CorpusController.php

@@ -9,6 +9,9 @@ use App\Models\WbwTemplate;
 use App\Models\WbwBlock;
 use App\Models\Wbw;
 use App\Models\Discussion;
+use App\Models\PaliSentence;
+use App\Models\SentSimIndex;
+
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Cache;
 use App\Http\Api\MdRender;
@@ -676,6 +679,8 @@ class CorpusController extends Controller
 
 		#生成channel 数量列表
 		$sentId = "{$book}-{$para}-{$word_start}-{$word_end}";
+        $channelCount = CorpusController::sentResCount($book,$para,$word_start,$word_end);
+        /*
 		$channelCount = Cache::remember("/sent1/{$sentId}/channels/count",
                           60,
                           function() use($book,$para,$word_start,$word_end){
@@ -716,14 +721,74 @@ class CorpusController extends Controller
 			return $output;
 
 		});
+        */
 
 		$sent["tranNum"] = $channelCount['tranNum'];
 		$sent["nissayaNum"] = $channelCount['nissayaNum'];
 		$sent["commNum"] = $channelCount['commNum'];
 		$sent["originNum"] = $channelCount['originNum'];
+		$sent["simNum"] = $channelCount['simNum'];
 		return $sent;
 	}
 
+    /**
+     * 获取某个句子的相关资源的句子数量
+     */
+    public static function sentResCount($book,$para,$start,$end){
+		$sentId = "{$book}-{$para}-{$start}-{$end}";
+		$channelCount = Cache::remember("/sentence/{$sentId}/channels/count",
+                          60,
+                          function() use($book,$para,$start,$end){
+			$channels =  Sentence::where('book_id',$book)
+							->where('paragraph',$para)
+							->where('word_start',$start)
+							->where('word_end',$end)
+							->select('channel_uid')
+                            ->groupBy('channel_uid')
+							->get();
+            $channelList = [];
+            foreach ($channels as $key => $value) {
+                # code...
+                $channelList[] = $value->channel_uid;
+            }
+            $simId = PaliSentence::where('book',$book)
+                                 ->where('paragraph',$para)
+                                 ->where('word_begin',$start)
+                                 ->where('word_end',$end)
+                                 ->value('id');
+            if($simId){
+                $output["simNum"]=SentSimIndex::where('sent_id',$simId)->value('count');
+            }else{
+                $output["simNum"]=0;
+            }
+            $channelInfo = Channel::whereIn("uid",$channelList)->select('type')->get();
+            $output["tranNum"]=0;
+            $output["nissayaNum"]=0;
+            $output["commNum"]=0;
+            $output["originNum"]=0;
+
+            foreach ($channelInfo as $key => $value) {
+                # code...
+                switch($value->type){
+                    case "translation":
+                        $output["tranNum"]++;
+                        break;
+                    case "nissaya":
+                        $output["nissayaNum"]++;
+                        break;
+                    case "commentary":
+                        $output["commNum"]++;
+                        break;
+                    case "original":
+                        $output["originNum"]++;
+                        break;
+                }
+            }
+			return $output;
+
+		});
+        return $channelCount;
+    }
     private function markdownRender($input){
 
     }