Просмотр исходного кода

Merge pull request #1911 from visuddhinanda/laravel

add WbwSentenceController
visuddhinanda 2 лет назад
Родитель
Сommit
ea5fafdd02

+ 15 - 3
app/Http/Controllers/CompoundController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Models\UserDict;
 use Illuminate\Http\Request;
 use App\Http\Api\DictApi;
+use App\Tools\TurboSplit;
 
 class CompoundController extends Controller
 {
@@ -60,13 +61,14 @@ class CompoundController extends Controller
 
     /**
      * Display the specified resource.
-     *
+     * @param  \Illuminate\Http\Request  $request
      * @param  \App\Models\DhammaTerm  $dhammaTerm
      * @return \Illuminate\Http\Response
      */
-    public function show(string $word)
+    public function show(Request $request,string $word)
     {
         //
+        $start = microtime(true);
         $dict_id = DictApi::getSysDict('robot_compound');
         if(!$dict_id){
             return $this->error('没有找到 robot_compound 字典');
@@ -75,7 +77,17 @@ class CompoundController extends Controller
                     ->where('word',$word)
                     ->orderBy('confidence','desc')
                     ->get();
-        return $this->ok(['rows'=>$result,'count'=>count($result)]);
+        if(count($result)>0){
+            return $this->ok(['rows'=>$result,'count'=>count($result),'mode'=>'dict']);
+        }else if(mb_strlen($word,'UTF-8')<60){
+            $ts = new TurboSplit();
+            $parts = $ts->splitA($word);
+            $time = microtime(true) - $start;
+            return $this->ok(['rows'=>$parts,'count'=>count($parts),'mode'=>'realtime','time'=>$time]);
+        }else{
+            return $this->ok(['rows'=>[],'count'=>0]);
+        }
+
     }
 
     /**

+ 0 - 2
app/Http/Controllers/ProgressChapterController.php

@@ -2,8 +2,6 @@
 
 namespace App\Http\Controllers;
 
-require_once __DIR__.'/../../../public/app/ucenter/function.php';
-
 use Illuminate\Support\Str;
 use Illuminate\Support\Facades\DB;
 use App\Models\ProgressChapter;

+ 7 - 5
app/Http/Controllers/SentHistoryController.php

@@ -2,11 +2,10 @@
 
 namespace App\Http\Controllers;
 
-require_once __DIR__.'/../../../public/app/ucenter/function.php';
-
 use App\Models\SentHistory;
 use Illuminate\Http\Request;
 use App\Http\Resources\SentHistoryResource;
+use App\Http\Api\UserApi;
 
 class SentHistoryController extends Controller
 {
@@ -52,10 +51,13 @@ class SentHistoryController extends Controller
                             ->take(10)
                             ->get();
 
-        $userinfo = new \UserInfo();
+
         foreach ($result as $key => $user) {
-            # code...
-            $user->username = $userinfo->getName($user->user_uid);
+            $userInfo = UserApi::getByUuid($user->user_uid);
+            $user->username = [
+                'nickname'=>$userInfo['nickName'],
+                'username'=>$userInfo['userName'],
+            ];
         }
         return $this->ok($result);
     }

+ 125 - 0
app/Http/Controllers/WbwSentenceController.php

@@ -0,0 +1,125 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Wbw;
+use App\Models\WbwBlock;
+use App\Models\Channel;
+use Illuminate\Http\Request;
+use App\Http\Api\AuthApi;
+use App\Http\Api\ShareApi;
+use App\Http\Api\ChannelApi;
+
+class WbwSentenceController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        switch ($request->get('view')) {
+            case 'sent-can-read':
+                $result = [];
+                $user = AuthApi::current($request);
+                $user_uid = null;
+                if($user){
+                    $user_uid = $user['user_uid'];
+                }
+                $sentId = $request->get('book').'-'.
+                          $request->get('para').'-'.
+                          $request->get('wordStart').'-'.
+                          $request->get('wordEnd');
+                $channels = ChannelApi::getCanReadByUser($user_uid);
+                $channelsId = [];
+                if($request->has('exclude')){
+                    //移除无需查询的channel
+                    foreach ($channels as $key => $id) {
+                        if($id !== $request->get('exclude')){
+                            $channelsId[] = $id;
+                        }
+                    }
+                }else if($request->has('channel')){
+                    //仅列出指定的channel
+                    $include = explode(',', $request->get('channel'));
+                    foreach ($channels as $key => $id) {
+                        if(in_array($id, $include)){
+                            $channelsId[] = $id;
+                        }
+                    }
+                }else{
+                    $channelsId = $channels;
+                }
+                $wbwBlocksId = WbwBlock::where('book_id',$request->get('book'))
+                                    ->where('paragraph',$request->get('para'))
+                                    ->whereIn('channel_uid',$channelsId)
+                                    ->select('uid')
+                                    ->get();
+                $validBlocks = Wbw::whereIn('block_uid',$wbwBlocksId)
+                            ->where('book_id',$request->get('book'))
+                            ->where('paragraph',$request->get('para'))
+                            ->where('wid',$request->get('wordStart'))
+                            ->select('block_uid')
+                            ->groupBy('block_uid')
+                            ->get();
+
+                foreach ($validBlocks as $key => $block) {
+                    $channel = WbwBlock::where('uid',$block->block_uid)->first();
+                    $corpus = new CorpusController;
+                    $props = $corpus->getSentTpl($sentId,[$channel->channel_uid],
+                                               'edit',true,
+                                               'react');
+                    $result[] = $props;
+                }
+                return $this->ok(['rows'=>$result,'count'=>count($result)]);
+                break;
+        }
+    }
+
+    /**
+     * 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  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Wbw $wbw)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Wbw $wbw)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Wbw $wbw)
+    {
+        //
+    }
+}

+ 1 - 0
public/dicttext/system/part2.csv

@@ -23,6 +23,7 @@ uhi,100
 tā,100
 tti,100
 tta,100
+ttā,100
 tad,100
 ta,100
 sa,100

+ 2 - 0
routes/api.php

@@ -87,6 +87,7 @@ use App\Http\Controllers\CompoundController;
 use App\Http\Controllers\NotificationController;
 use App\Http\Controllers\InteractiveController;
 use App\Http\Controllers\ChapterIndexController;
+use App\Http\Controllers\WbwSentenceController;
 
 /*
 |--------------------------------------------------------------------------
@@ -229,6 +230,7 @@ Route::group(['prefix' => 'v2'],function(){
     Route::apiResource('notification',NotificationController::class);
     Route::apiResource('interactive',InteractiveController::class);
     Route::apiResource('chapter-index',ChapterIndexController::class);
+    Route::apiResource('wbw-sentence',WbwSentenceController::class);
 
     Route::get('download/{type1}/{type2}/{uuid}/{filename}', function ($type1,$type2,$uuid,$filename) {
         header("Content-Type: {$type1}/{$type1}");