فهرست منبع

add case 'res':

visuddhinanda 3 سال پیش
والد
کامیت
91c9cee137
1فایلهای تغییر یافته به همراه97 افزوده شده و 15 حذف شده
  1. 97 15
      app/Http/Controllers/ShareController.php

+ 97 - 15
app/Http/Controllers/ShareController.php

@@ -4,8 +4,12 @@ namespace App\Http\Controllers;
 
 use App\Models\Share;
 use App\Models\GroupInfo;
+use App\Models\Article;
+use App\Models\Collection;
 use Illuminate\Http\Request;
 use App\Http\Resources\ShareResource;
+use App\Http\Api\AuthApi;
+use App\Http\Api\ShareApi;
 
 class ShareController extends Controller
 {
@@ -17,23 +21,38 @@ class ShareController extends Controller
     public function index(Request $request)
     {
         //
+        $user = AuthApi::current($request);
         $result=false;
+        $role = "member";
 		$indexCol = ['id','res_id','res_type','power','updated_at','created_at'];
 		switch ($request->get('view')) {
+            case 'res':
+                if(!$user){
+                    return $this->error(__('auth.failed'));
+                }
+                $table = Share::where('res_id',$request->get('id'));
+                $power = ShareApi::getResPower($user['user_uid'],$request->get('id'),$table->value('res_type'));
+                switch ($power) {
+                    case 10:
+                        $role = "member";
+                        break;
+                    case 20:
+                        $role = "editor";
+                        break;
+                    case 30:
+                        $role = "owner";
+                        break;
+                }
+                break;
             case 'group':
-	            # 获取 group 内所有 成员
-                $user = \App\Http\Api\AuthApi::current($request);
-                if($user){
-                    //TODO 判断当前用户是否有指定的 group 的权限
-
-                    if(GroupInfo::where('uid',$request->get('id'))->where('owner',$user['user_uid'])->exists()){
-                        $table = Share::where('cooperator_id', $request->get('id'));
-                    }else{
-                        return $this->error(__('auth.failed'));
-                    }
-                }else{
+                if(!$user){
                     return $this->error(__('auth.failed'));
                 }
+                //TODO 判断当前用户是否有指定的 group 的权限
+                if(GroupInfo::where('uid',$request->get('id'))->where('owner',$user['user_uid'])->exists()){
+                    $role = "owner";
+                }
+                $table = Share::where('cooperator_id', $request->get('id'));
 				break;
         }
         if(isset($_GET["search"])){
@@ -56,7 +75,7 @@ class ShareController extends Controller
         }
         $result = $table->get();
         //TODO 获取当前用户的身份
-        $role = "member";
+
 
 		if($result){
 			return $this->ok(["rows"=>ShareResource::collection($result),"count"=>$count,'role'=>$role]);
@@ -76,6 +95,33 @@ class ShareController extends Controller
     public function store(Request $request)
     {
         //
+        foreach ($request->get('user_id') as $key => $value) {
+            # code...
+            $row = Share::where('cooperator_id',$value)
+                        ->where('res_id',$request->get('res_id'))->first();
+            if(!$row){
+                $row = new Share();
+                $row->id = app('snowflake')->id();
+                $row->cooperator_id = $value;
+                $row->res_id = $request->get('res_id');
+                $row->res_type = $request->get('res_type');
+                $row->create_time = time()*1000;
+            }
+            $c_type=['user'=>0,'group'=>1];
+            $row->cooperator_type = $c_type[$request->get('user_type')];
+            switch ($request->get('role')) {
+                case 'manager':
+                case 'editor':
+                    $row->power = 20;
+                    break;
+                case 'reader':
+                    $row->power = 10;
+                    break;
+            }
+            $row->modify_time = time()*1000;
+            $row->save();
+        }
+        return $this->ok(count($request->get('user_id')));
     }
 
     /**
@@ -98,17 +144,53 @@ class ShareController extends Controller
      */
     public function update(Request $request, Share $share)
     {
-        //
+        //查询权限
+        $currUser = AuthApi::current($request);
+        if(!$currUser){
+            return $this->error(__('auth.failed'));
+        }
+
+        $power = ShareApi::getResPower($currUser['user_uid'],$share->res_id,$share->res_type);
+        if(!$power || $power <= 20){
+            //普通成员没有删除权限
+            return $this->error(__('auth.failed'));
+        }
+        switch ($request->get('role')) {
+            case 'manager':
+            case 'editor':
+                $share->power = 20;
+                break;
+            case 'reader':
+                $share->power = 10;
+                break;
+        }
+        $share->modify_time = time()*1000;
+        $share->save();
+        return $this->ok($share);
     }
 
     /**
      * Remove the specified resource from storage.
      *
+     * @param  \Illuminate\Http\Request  $request
      * @param  \App\Models\Share  $share
      * @return \Illuminate\Http\Response
      */
-    public function destroy(Share $share)
+    public function destroy(Request $request, Share $share)
     {
-        //
+        //查询权限
+        $currUser = AuthApi::current($request);
+        if(!$currUser){
+            return $this->error(__('auth.failed'));
+        }
+
+        $power = ShareApi::getResPower($currUser['user_uid'],$share->res_id,$share->res_type);
+        if(!$power || $power <= 20){
+            //普通成员没有删除权限
+            return $this->error(__('auth.failed'));
+        }
+
+        $delete = $share->delete();
+        return $this->ok($delete);
     }
 }