Sfoglia il codice sorgente

:sparkles: 按照我的和协作分别查询

visuddhinanda 3 anni fa
parent
commit
a3bcab7662

+ 41 - 1
app/Http/Controllers/ArticleController.php

@@ -135,7 +135,19 @@ class ArticleController extends Controller
                 if($user['user_uid'] !== $studioId){
                     return $this->error(__('auth.failed'));
                 }
-                $table = Article::select($indexCol)->where('owner', $studioId);
+                $table = Article::select($indexCol);
+                if($request->get('view2','my')==='my'){
+                    $table = $table->where('owner', $studioId);
+                }else{
+                    //协作
+                    $resList = ShareApi::getResList($studioId,3);
+                    $resId=[];
+                    foreach ($resList as $res) {
+                        $resId[] = $res['res_id'];
+                    }
+                    $table = $table->whereIn('uid', $resId)->where('owner','<>', $studioId);
+                }
+
                 //根据anthology过滤
                 if($request->has('anthology')){
                     switch ($request->get('anthology')) {
@@ -191,6 +203,34 @@ class ArticleController extends Controller
 		}
     }
 
+        /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showMyNumber(Request $request){
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        $studioId = StudioApi::getIdByName($request->get('studio'));
+        if($user['user_uid'] !== $studioId){
+            return $this->error(__('auth.failed'));
+        }
+        //我的
+        $my = Article::where('owner', $studioId)->count();
+        //协作
+        $resList = ShareApi::getResList($studioId,3);
+        $resId=[];
+        foreach ($resList as $res) {
+            $resId[] = $res['res_id'];
+        }
+        $collaboration = Article::whereIn('uid', $resId)->where('owner','<>', $studioId)->count();
+
+        return $this->ok(['my'=>$my,'collaboration'=>$collaboration]);
+    }
+
     /**
      * Store a newly created resource in storage.
      *

+ 43 - 2
app/Http/Controllers/ChannelController.php

@@ -40,10 +40,23 @@ class ChannelController extends Controller
                     return $this->error(__('auth.failed'));
                 }
                 //判断当前用户是否有指定的studio的权限
-                if($user['user_uid'] !== \App\Http\Api\StudioApi::getIdByName($request->get('name'))){
+                $studioId = StudioApi::getIdByName($request->get('name'));
+                if($user['user_uid'] !== $studioId){
                     return $this->error(__('auth.failed'));
                 }
-                $table = Channel::select($indexCol)->where('owner_uid', $user["user_uid"]);
+
+                $table = Channel::select($indexCol);
+                if($request->get('view2','my')==='my'){
+                    $table = $table->where('owner_uid', $studioId);
+                }else{
+                    //协作
+                    $resList = ShareApi::getResList($studioId,2);
+                    $resId=[];
+                    foreach ($resList as $res) {
+                        $resId[] = $res['res_id'];
+                    }
+                    $table = $table->whereIn('uid', $resId)->where('owner_uid','<>', $studioId);
+                }
 				break;
             case 'studio-all':
                 /**
@@ -228,6 +241,34 @@ class ChannelController extends Controller
 		}
 
     }
+
+    /**
+     * 获取我的,和协作channel数量
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showMyNumber(Request $request){
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        $studioId = StudioApi::getIdByName($request->get('studio'));
+        if($user['user_uid'] !== $studioId){
+            return $this->error(__('auth.failed'));
+        }
+        //我的
+        $my = Channel::where('owner_uid', $studioId)->count();
+        //协作
+        $resList = ShareApi::getResList($studioId,2);
+        $resId=[];
+        foreach ($resList as $res) {
+            $resId[] = $res['res_id'];
+        }
+        $collaboration = Channel::whereIn('uid', $resId)->where('owner_uid','<>', $studioId)->count();
+
+        return $this->ok(['my'=>$my,'collaboration'=>$collaboration]);
+    }
     /**
      * 获取章节的进度
      *

+ 51 - 9
app/Http/Controllers/CollectionController.php

@@ -7,6 +7,9 @@ use Illuminate\Http\Request;
 use Illuminate\Support\Str;
 use Illuminate\Support\Facades\Log;
 use App\Http\Api\AuthApi;
+use App\Http\Api\StudioApi;
+use App\Http\Api\ShareApi;
+
 use Illuminate\Support\Facades\DB;
 
 require_once __DIR__.'/../../../public/app/ucenter/function.php';
@@ -35,17 +38,28 @@ class CollectionController extends Controller
 				# code...
 				//$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{
+                $user = AuthApi::current($request);
+                if(!$user){
                     return $this->error(__('auth.failed'));
                 }
+                $studioId = StudioApi::getIdByName($request->get('name'));
+                //判断当前用户是否有指定的studio的权限
+                if($user['user_uid'] !== $studioId){
+                    return $this->error(__('auth.failed'));
+                }
+                $table = Collection::select($indexCol);
+                if($request->get('view2','my')==='my'){
+                    $table = $table->where('owner', $studioId);
+                }else{
+                    //协作
+                    $resList = ShareApi::getResList($studioId,4);
+                    $resId=[];
+                    foreach ($resList as $res) {
+                        $resId[] = $res['res_id'];
+                    }
+                    $table = $table->whereIn('uid', $resId)->where('owner','<>', $studioId);
+                }
+
 				break;
 			case 'public':
 				$table = Collection::select($indexCol)->where('status', 30);
@@ -115,6 +129,34 @@ class CollectionController extends Controller
 		}
     }
 
+            /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showMyNumber(Request $request){
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        $studioId = StudioApi::getIdByName($request->get('studio'));
+        if($user['user_uid'] !== $studioId){
+            return $this->error(__('auth.failed'));
+        }
+        //我的
+        $my = Collection::where('owner', $studioId)->count();
+        //协作
+        $resList = ShareApi::getResList($studioId,4);
+        $resId=[];
+        foreach ($resList as $res) {
+            $resId[] = $res['res_id'];
+        }
+        $collaboration = Collection::whereIn('uid', $resId)->where('owner','<>', $studioId)->count();
+
+        return $this->ok(['my'=>$my,'collaboration'=>$collaboration]);
+    }
+
     /**
      * Store a newly created resource in storage.
      *

+ 2 - 1
app/Http/Resources/ChannelResource.php

@@ -3,6 +3,7 @@
 namespace App\Http\Resources;
 
 use Illuminate\Http\Resources\Json\JsonResource;
+use App\Http\Api\StudioApi;
 
 class ChannelResource extends JsonResource
 {
@@ -19,7 +20,7 @@ class ChannelResource extends JsonResource
             "name" => $this->name,
             "summary" => $this->summary,
             "type" => $this->type,
-            "studio" => \App\Http\Api\StudioApi::getById($this->owner_uid),
+            "studio" => StudioApi::getById($this->owner_uid),
             "lang" => $this->lang,
             "status" => $this->status,
             "created_at" => $this->created_at,

+ 3 - 0
routes/api.php

@@ -79,14 +79,17 @@ Route::group(['prefix' => 'v2'],function(){
     Route::apiResource('sent_history',SentHistoryController::class);
     Route::apiResource('palitext',PaliTextController::class);
     Route::apiResource('channel',ChannelController::class);
+    Route::get('channel-my-number', [ChannelController::class, 'showMyNumber']);
     Route::post('channel-progress',[ChannelController::class,"progress"]);
     Route::delete('userdict', [UserDictController::class, 'delete']);
     Route::apiResource('userdict',UserDictController::class);
 
     Route::apiResource('anthology',CollectionController::class);
+    Route::get('anthology-my-number', [CollectionController::class, 'showMyNumber']);
     Route::apiResource('dict',DictController::class);
     Route::apiResource('tag',TagController::class);
     Route::apiResource('article',ArticleController::class);
+    Route::get('article-my-number', [ArticleController::class, 'showMyNumber']);
     Route::apiResource('group',GroupController::class);
 
     Route::get('auth/current',[AuthController::class,'getUserInfoByToken']);