Explorar o código

新建返回总数

visuddhinanda hai 1 ano
pai
achega
a297b78860
Modificáronse 1 ficheiros con 74 adicións e 26 borrados
  1. 74 26
      api-v8/app/Http/Controllers/LikeController.php

+ 74 - 26
api-v8/app/Http/Controllers/LikeController.php

@@ -4,6 +4,10 @@ namespace App\Http\Controllers;
 
 use App\Models\Like;
 use Illuminate\Http\Request;
+use App\Http\Api\AuthApi;
+use App\Http\Api\UserApi;
+use App\Http\Resources\LikeResource;
+use Illuminate\Support\Str;
 
 class LikeController extends Controller
 {
@@ -18,28 +22,41 @@ class LikeController extends Controller
         switch ($request->get("view")) {
             case 'count':
                 # code...
-                $resulte = Like::where("target_id",$request->get("target_id"))
+                $result = Like::where("target_id",$request->get("target_id"))
                                 ->groupBy("type")
                                 ->select("type")
                                 ->selectRaw("count(*)")
                                 ->get();
-                if(isset($_COOKIE["user_uid"])){
-                    foreach ($resulte as $key => $value) {
-                        # code...
-                        if(Like::where(["target_id"=>$request->get("target_id"),
+                $user = AuthApi::current($request);
+                if($user){
+                    foreach ($result as $key => $value) {
+                        $curr = Like::where(["target_id"=>$request->get("target_id"),
                                         'type'=>$value->type,
-                                        'user_id'=>$_COOKIE["user_uid"]])->exists()){
-                            $resulte[$key]->selected = true;
+                                        'user_id'=>$user["user_uid"]])->first();
+                        if($curr){
+                            $result[$key]->selected = true;
+                            $result[$key]->my_id = $curr->id;
                         }
                     }
                 }
+                return $this->ok($result);
+                break;
+            case 'target':
+                $table = Like::where("target_id",$request->get("target_id"));
                 break;
             default:
                 # code...
                 break;
         }
-
-        return $this->ok($resulte);
+        if($request->has("type")){
+            $table = $table->where('type',$request->get("type"));
+        }
+        $count = $table->count();
+        $result = $table->get();
+        return $this->ok([
+            "rows"=>LikeResource::collection($result),
+            "count"=>$count
+        ]);
     }
 
     /**
@@ -51,14 +68,35 @@ class LikeController extends Controller
     public function store(Request $request)
     {
         //
-        if(!isset($_COOKIE["user_uid"])){
-            return $this->error("no login");
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
         }
         $param = $request->all();
-        $param['user_id'] = $_COOKIE["user_uid"];
-        $like = Like::firstOrCreate($param);
-
-        return $this->ok($like);
+        $user_id = $request->get('user_id',$user["user_uid"]);
+        $like = Like::firstOrNew([
+            'type'=>$param['type'],
+            'target_id'=>$param['target_id'],
+            'target_type'=>$param['target_type'],
+            'user_id' =>  $user_id,
+        ],
+        [
+            'id'=>Str::uuid(),
+        ]);
+        $like->save();
+        $output = [
+            'id'=>$like->id,
+            'type'=>$param['type'],
+            'target_id'=>$param['target_id'],
+            'target_type'=>$param['target_type'],
+            'user_id' => $user_id,
+            'count'=>Like::where('target_id',$param['target_id'])
+                        ->where('type',$param['type'])->count(),
+            'selected'=>true,
+            'my_id'=>$like->id,
+            'user' => UserApi::getByUuid($user_id),
+        ];
+        return $this->ok($output);
     }
 
     /**
@@ -90,21 +128,31 @@ class LikeController extends Controller
      * @param  \App\Models\Like  $like
      * @return \Illuminate\Http\Response
      */
-    public function destroy(Like $like)
+    public function destroy(Request $request,Like $like)
     {
         //
-        if(!isset($_COOKIE["user_uid"])){
-            return $this->error("no login");
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
         }
-        if($like->user_id==$_COOKIE["user_uid"]){
-            return $this->ok($like->delete());
+        if($like->user_id===$user["user_uid"]){
+            //移除自己
+            $delete = $like->delete();
+            if($delete){
+                $output = [
+                    'type'=>$like['type'],
+                    'count'=>Like::where('target_id',$like['target_id'])
+                                ->where('type',$like['type'])->count(),
+                    'selected'=>false,
+                ];
+                return $this->ok($output);
+            }else{
+                $this->error('未知错误',200,200);
+            }
+
+        }else{
+            return $this->error(_('auth.failed'),403,403);
         }
-        
-        $param = $request->all();
-        $param['user_id'] = $_COOKIE["user_uid"];
-        $like = Like::where($param)->delete();
-        return $this->ok($like);
-        
     }
     public function delete(Request $request){
         if(!isset($_COOKIE["user_uid"])){