浏览代码

:sparkles: list by studio public_studio

visuddhinanda 3 年之前
父节点
当前提交
5b66dc89c9
共有 1 个文件被更改,包括 100 次插入11 次删除
  1. 100 11
      app/Http/Controllers/CollectionController.php

+ 100 - 11
app/Http/Controllers/CollectionController.php

@@ -4,6 +4,8 @@ namespace App\Http\Controllers;
 
 use App\Models\Collection;
 use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+use Illuminate\Support\Facades\Log;
 
 require_once __DIR__.'/../../../public/app/ucenter/function.php';
 
@@ -19,8 +21,9 @@ class CollectionController extends Controller
     {
         //
                 //
+        $userinfo = new \UserInfo();
 		$result=false;
-		$indexCol = ['uid','title','subtitle','summary','article_list','owner','lang','updated_at','created_at'];
+		$indexCol = ['uid','title','subtitle','summary','article_list','owner','status','lang','updated_at','created_at'];
 		switch ($request->get('view')) {
             case 'studio_list':
 		        $indexCol = ['owner'];
@@ -28,11 +31,27 @@ class CollectionController extends Controller
                 break;
 			case 'studio':
 				# code...
-				$table = Collection::select($indexCol)->where('owner', $_COOKIE["user_uid"]);
+				//$table = Collection::select($indexCol)->where('owner', $_COOKIE["user_uid"]);
+                # 获取studio内所有channel
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('name'))){
+                        $table = Collection::select($indexCol)->where('owner', $user["user_uid"]);
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
 				break;
 			case 'public':
 				$table = Collection::select($indexCol)->where('status', 30);
 				break;
+            case 'public_studio':
+                $user = $userinfo->getUserByName($request->get('studio'));
+                $table = Collection::select($indexCol)->where('status', 30)->where('owner',$user['userid']);
+                break;
 			default:
 				# code...
 			    return $this->error("没有查询到数据");
@@ -61,19 +80,21 @@ class CollectionController extends Controller
         }
         $result = $table->get();
 		if($result){
-            $userinfo = new \UserInfo();
             foreach ($result as $key => $value) {
                 # code...
-                if(isset($result[$key]->article_list)){
+                $value->childrenNumber = count(\json_decode($value->article_list));
+                if(isset($value->article_list)){
                     $result[$key]->article_list = array_slice(\json_decode($value->article_list),0,4);
                 }
                 $value->studio = [
                     'id'=>$value->owner,
-                    'name'=>$userinfo->getName($value->owner)['nickname'],
+                    'nickName'=>$userinfo->getName($value->owner)['nickname'],
+                    'studioName'=>$userinfo->getName($value->owner)['username'],
                     'avastar'=>'',
                     'owner' => [
                         'id'=>$value->owner,
-                        'name'=>$userinfo->getName($value->owner)['nickname'],
+                        'nickName'=>$userinfo->getName($value->owner)['nickname'],
+                        'userName'=>$userinfo->getName($value->owner)['username'],
                         'avastar'=>'',
                     ]
                 ];
@@ -92,22 +113,64 @@ class CollectionController extends Controller
      */
     public function store(Request $request)
     {
-        //
+        $user = \App\Http\Api\AuthApi::current($request);
+        if($user){
+            //判断当前用户是否有指定的studio的权限
+            if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('studio'))){
+                //查询是否重复
+                if(Collection::where('title',$request->get('title'))->where('owner',$user['user_uid'])->exists()){
+                    return $this->error(__('validation.exists'));
+                }else{
+                    $newOne = new Collection;
+                    $newOne->id = app('snowflake')->id();
+                    $newOne->uid = Str::uuid();
+                    $newOne->title = $request->get('title');
+                    $newOne->lang = $request->get('lang');
+                    $newOne->article_list = "[]";
+                    $newOne->owner = $user['user_uid'];
+                    $newOne->owner_id = $user['user_id'];
+                    $newOne->editor_id = $user['user_id'];
+                    $newOne->create_time = time()*1000;
+                    $newOne->modify_time = time()*1000;
+                    $newOne->save();
+                    return $this->ok($newOne);
+                }
+            }else{
+                return $this->error(__('auth.failed'));
+            }
+        }else{
+            return $this->error(__('auth.failed'));
+        }
+
     }
 
     /**
      * Display the specified resource.
-     *
+     * @param  \Illuminate\Http\Request  $request
      * @param  string  $id
      * @return \Illuminate\Http\Response
      */
-    public function show($id)
+    public function show(Request  $request,$id)
     {
         //
 		$indexCol = ['uid','title','subtitle','summary','article_list','owner','lang','updated_at','created_at'];
 
 		$result  = Collection::select($indexCol)->where('uid', $id)->first();
 		if($result){
+            if($result->status<30){
+                //私有文章,判断权限
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] !== $result->owner){
+                        //非所有者
+                        //TODO 判断是否协作
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+            }
 			if(!empty($result->article_list)){
 				$result->article_list = \json_decode($result->article_list);
 			}
@@ -121,12 +184,38 @@ class CollectionController extends Controller
      * Update the specified resource in storage.
      *
      * @param  \Illuminate\Http\Request  $request
-     * @param  \App\Models\Collection  $collection
+     * @param  string  $id
      * @return \Illuminate\Http\Response
      */
-    public function update(Request $request, Collection $collection)
+    public function update(Request $request, $id)
     {
         //
+        $collection  = Collection::where('uid', $id)->first();
+        if($collection){
+            //鉴权
+            Log::info("找到文集");
+            $user = \App\Http\Api\AuthApi::current($request);
+            if($user && $collection->owner === $user["user_uid"]){
+                $collection->title = $request->get('title');
+                $collection->subtitle = $request->get('subtitle');
+                $collection->summary = $request->get('summary');
+                $collection->article_list = \json_encode($request->get('aritcle_list')) ;
+                $collection->lang = $request->get('lang');
+                $collection->status = $request->get('status');
+                $collection->modify_time = time()*1000;
+                $collection->save();
+                return $this->ok($collection);
+            }else{
+                //鉴权失败
+                Log::info("鉴权失败");
+
+                //TODO 判断是否为协作
+                return $this->error(__('auth.failed'));
+            }
+
+        }else{
+            return $this->error("no recorder");
+        }
     }
 
     /**