visuddhinanda пре 4 дана
родитељ
комит
be23f8d5b8
1 измењених фајлова са 37 додато и 2 уклоњено
  1. 37 2
      api-v13/app/Http/Controllers/Library/TipitakaController.php

+ 37 - 2
api-v13/app/Http/Controllers/Library/TipitakaController.php

@@ -3,13 +3,14 @@
 namespace App\Http\Controllers\Library;
 namespace App\Http\Controllers\Library;
 
 
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Controller;
-
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
-
+use Illuminate\Support\Facades\Cookie;
 use Illuminate\Support\Facades\File;
 use Illuminate\Support\Facades\File;
+use Illuminate\Support\Facades\Log;
 
 
 use App\Models\PaliText;
 use App\Models\PaliText;
 use App\Models\ProgressChapter;
 use App\Models\ProgressChapter;
+use App\Services\TermService;
 
 
 
 
 
 
@@ -24,6 +25,16 @@ class TipitakaController extends Controller
         'linear-gradient(160deg, #1a1a2d,rgb(76, 68, 146))',
         'linear-gradient(160deg, #1a1a2d,rgb(76, 68, 146))',
         'linear-gradient(160deg, #1a2820,rgb(55, 124, 99))',
         'linear-gradient(160deg, #1a2820,rgb(55, 124, 99))',
     ];
     ];
+
+    /**
+     * 构造函数,注入 TermService
+     *
+     * @param  \App\Services\TermService  $termService
+     */
+    public function __construct(
+        protected TermService $termService,
+    ) {}
+
     // -------------------------------------------------------------------------
     // -------------------------------------------------------------------------
     // 从 uid / id 字符串中提取一个稳定的整数,用于色池取余
     // 从 uid / id 字符串中提取一个稳定的整数,用于色池取余
     // -------------------------------------------------------------------------
     // -------------------------------------------------------------------------
@@ -46,6 +57,8 @@ class TipitakaController extends Controller
     public function index(Request $request, ?int $id = null)
     public function index(Request $request, ?int $id = null)
     {
     {
 
 
+        $locale = Cookie::get('language') ?? 'en';
+
         $categories = $this->loadCategories();
         $categories = $this->loadCategories();
 
 
         // ── 当前分类 ──────────────────────────────────────────
         // ── 当前分类 ──────────────────────────────────────────
@@ -67,6 +80,28 @@ class TipitakaController extends Controller
             fn($cat) => $cat['parent_id'] == $id
             fn($cat) => $cat['parent_id'] == $id
         ));
         ));
 
 
+        $allNames = array_map(fn($item) => $item['name'], $subCategories);
+
+        // 去重
+        $allNames = array_values(array_unique($allNames));
+
+        // 查词典
+        $terms = $this->termService->glossaryByLemma($allNames, $locale);
+        // 构建映射
+        $termMap = [];
+        if ($terms) {
+            foreach ($terms as $term) {
+                $termMap[$term->word] = $term->meaning;
+            }
+        }
+        // 回填
+        foreach ($subCategories as $key => $cat) {
+            $name = $cat['name'] ?? null;
+            $subCategories[$key]['name'] = $termMap[$name] ?? $name;
+        }
+
+
+
         // ── 过滤参数 ────────────────────────────────────────────
         // ── 过滤参数 ────────────────────────────────────────────
         $selectedType   = request('type',   'all');
         $selectedType   = request('type',   'all');
         $selectedLang   = request('lang',   'all');
         $selectedLang   = request('lang',   'all');