Преглед на файлове

返回与pr有关的字段

visuddhinanda преди 3 години
родител
ревизия
8055e35ade
променени са 2 файла, в които са добавени 58 реда и са изтрити 35 реда
  1. 36 29
      app/Http/Controllers/SentenceController.php
  2. 22 6
      app/Http/Resources/SentResource.php

+ 36 - 29
app/Http/Controllers/SentenceController.php

@@ -187,37 +187,44 @@ class SentenceController extends Controller
 
         //鉴权
         $user = AuthApi::current($request);
-        if($user ){
-            $channel = Channel::where('uid',$param[4])->first();
-            if($channel && $channel->owner_uid === $user["user_uid"]){
-                $sent = Sentence::firstOrNew([
-                    "book_id"=>$param[0],
-                    "paragraph"=>$param[1],
-                    "word_start"=>$param[2],
-                    "word_end"=>$param[3],
-                    "channel_uid"=>$param[4],
-                ],[
-                    "id"=>app('snowflake')->id(),
-                    "uid"=>Str::orderedUuid(),
-                    "create_time"=>time()*1000,
-                ]);
-                $sent->content = $request->get('content');
-                $sent->language = $channel->lang;
-                $sent->status = $channel->status;
-                $sent->editor_uid = $user["user_uid"];
-                $sent->strlen = mb_strlen($request->get('content'),"UTF-8");
-                $sent->modify_time = time()*1000;
-                $sent->save();
-                return $this->ok(new SentResource($sent));
-            }else{
-                //TODO 判断是否为协作
-                return $this->error(__('auth.failed'));
-            }
-        }else{
-            //非所有者鉴权失败
-
+        if(!$user){
+            //未登录鉴权失败
             return $this->error(__('auth.failed'));
         }
+        $channel = Channel::where('uid',$param[4])->first();
+        if(!$channel){
+            return $this->error("not found channel");
+        }
+        if($channel->owner_uid !== $user["user_uid"]){
+            //TODO 判断是否为协作
+            return $this->error(__('auth.failed'));
+        }
+
+        $sent = Sentence::firstOrNew([
+            "book_id"=>$param[0],
+            "paragraph"=>$param[1],
+            "word_start"=>$param[2],
+            "word_end"=>$param[3],
+            "channel_uid"=>$param[4],
+        ],[
+            "id"=>app('snowflake')->id(),
+            "uid"=>Str::orderedUuid(),
+            "create_time"=>time()*1000,
+        ]);
+        $sent->content = $request->get('content');
+        $sent->language = $channel->lang;
+        $sent->status = $channel->status;
+        $sent->editor_uid = $user["user_uid"];
+        $sent->strlen = mb_strlen($request->get('content'),"UTF-8");
+        $sent->modify_time = time()*1000;
+        if($request->has('prEditor')){
+            $sent->acceptor_uid = $user["user_uid"];
+            $sent->pr_edit_at = $request->get('prEditAt');
+            $sent->editor_uid = $request->get('prEditor');
+            $sent->pr_id = $request->get('prId');
+        }
+        $sent->save();
+        return $this->ok(new SentResource($sent));
     }
 
     /**

+ 22 - 6
app/Http/Resources/SentResource.php

@@ -4,6 +4,10 @@ namespace App\Http\Resources;
 
 use App\Http\Api\MdRender;
 use Illuminate\Http\Resources\Json\JsonResource;
+use App\Http\Api\StudioApi;
+use App\Http\Api\UserApi;
+use App\Http\Api\ChannelApi;
+use App\Http\Api\SuggestionApi;
 
 class SentResource extends JsonResource
 {
@@ -15,19 +19,31 @@ class SentResource extends JsonResource
      */
     public function toArray($request)
     {
-        return [
+        $channel = ChannelApi::getById($this->channel_uid);
+        $data = [
+                "id" => $this->uid,
                 "content"=>$this->content,
                 "html"=> MdRender::render($this->content,$this->channel_uid),
                 "book"=> $this->book_id,
                 "paragraph"=> $this->paragraph,
                 "word_start"=> $this->word_start,
                 "word_end"=> $this->word_end,
-                "editor"=> \App\Http\Api\StudioApi::getById($this->editor_uid),
-                "channel"=> [
-                    "name"=>"channel",
-	                "id"=> $this->channel_uid,
-                ],
+                "editor"=> UserApi::getById($this->editor_uid),
+                "channel"=> $channel,
+                "studio" => StudioApi::getById($channel["studio_id"]),
                 "updated_at"=> $this->updated_at,
+                "suggestionCount" => SuggestionApi::getCountBySent($this->book_id,
+                                                                   $this->paragraph,
+                                                                   $this->word_start,
+                                                                   $this->word_end,
+                                                                   $this->channel_uid
+                                                                ),
             ];
+
+        if(isset($this->acceptor_uid) && !empty($this->acceptor_uid)){
+            $data["acceptor"]=UserApi::getById($this->acceptor_uid);
+            $data["pr_edit_at"]=$this->pr_edit_at;
+        }
+        return $data;
     }
 }