Explorar o código

:sparkles: delete

visuddhinanda %!s(int64=3) %!d(string=hai) anos
pai
achega
a99687e038

+ 19 - 2
app/Http/Controllers/ArticleController.php

@@ -6,6 +6,8 @@ use App\Models\Article;
 use Illuminate\Http\Request;
 use Illuminate\Support\Str;
 use App\Http\Resources\ArticleResource;
+use App\Http\Api\AuthApi;
+use Illuminate\Support\Facades\DB;
 
 class ArticleController extends Controller
 {
@@ -188,12 +190,27 @@ class ArticleController extends Controller
 
     /**
      * Remove the specified resource from storage.
-     *
+     * @param  \Illuminate\Http\Request  $request
      * @param  \App\Models\Article  $article
      * @return \Illuminate\Http\Response
      */
-    public function destroy(Article $article)
+    public function destroy(Request $request,Article $article)
     {
         //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== $article->owner){
+            return $this->error(__('auth.failed'));
+        }
+        $delete = 0;
+        DB::transaction(function() use($article,$delete){
+            //TODO 删除文集中的文章
+            $delete = $article->delete();
+        });
+
+        return $this->ok($delete);
     }
 }

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

@@ -6,6 +6,8 @@ require_once __DIR__.'/../../../public/app/ucenter/function.php';
 
 use App\Models\Channel;
 use App\Models\Sentence;
+use App\Models\DhammaTerm;
+use App\Models\WbwBlock;
 use App\Models\PaliSentence;
 use App\Http\Controllers\AuthController;
 use Illuminate\Http\Request;
@@ -15,6 +17,7 @@ use App\Http\Api\StudioApi;
 use App\Http\Api\ShareApi;
 use App\Http\Api\PaliTextApi;
 use Illuminate\Support\Arr;
+use Illuminate\Support\Facades\DB;
 
 class ChannelController extends Controller
 {
@@ -310,12 +313,37 @@ class ChannelController extends Controller
 
     /**
      * Remove the specified resource from storage.
-     *
+     * @param  \Illuminate\Http\Request  $request
      * @param  \App\Models\Channel  $channel
      * @return \Illuminate\Http\Response
      */
-    public function destroy(Channel $channel)
+    public function destroy(Request $request,Channel $channel)
     {
         //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== $channel->owner_uid){
+            return $this->error(__('auth.failed'));
+        }
+        //查询其他资源
+        if(Sentence::where("channel_uid",$channel->uid)->exists()){
+            return $this->error("译文有数据无法删除");
+        }
+        if(DhammaTerm::where("channal",$channel->uid)->exists()){
+            return $this->error("术语有数据无法删除");
+        }
+        if(WbwBlock::where("channel_uid",$channel->uid)->exists()){
+            return $this->error("逐词解析有数据无法删除");
+        }
+        $delete = 0;
+        DB::transaction(function() use($channel,$delete){
+            //TODO 删除相关资源
+            $delete = $channel->delete();
+        });
+
+        return $this->ok($delete);
     }
 }

+ 26 - 6
app/Http/Controllers/CollectionController.php

@@ -6,6 +6,8 @@ use App\Models\Collection;
 use Illuminate\Http\Request;
 use Illuminate\Support\Str;
 use Illuminate\Support\Facades\Log;
+use App\Http\Api\AuthApi;
+use Illuminate\Support\Facades\DB;
 
 require_once __DIR__.'/../../../public/app/ucenter/function.php';
 
@@ -195,10 +197,10 @@ class CollectionController extends Controller
      * @param  string  $id
      * @return \Illuminate\Http\Response
      */
-    public function update(Request $request, $id)
+    public function update(Request $request, string $id)
     {
         //
-        $collection  = Collection::where('uid', $id)->first();
+        $collection  = Collection::find($id);
         if($collection){
             //鉴权
             Log::info("找到文集");
@@ -207,7 +209,9 @@ class CollectionController extends Controller
                 $collection->title = $request->get('title');
                 $collection->subtitle = $request->get('subtitle');
                 $collection->summary = $request->get('summary');
-                $collection->article_list = \json_encode($request->get('aritcle_list')) ;
+                if($request->has('aritcle_list')){
+                    $collection->article_list = \json_encode($request->get('aritcle_list'));
+                } ;
                 $collection->lang = $request->get('lang');
                 $collection->status = $request->get('status');
                 $collection->modify_time = time()*1000;
@@ -228,12 +232,28 @@ class CollectionController extends Controller
 
     /**
      * Remove the specified resource from storage.
-     *
-     * @param  \App\Models\Collection  $collection
+     * @param  \Illuminate\Http\Request  $request
+     * @param  string  $id
      * @return \Illuminate\Http\Response
      */
-    public function destroy(Collection $collection)
+    public function destroy(Request $request,string $id)
     {
         //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        $collection = Collection::find($id);
+        if($user['user_uid'] !== $collection['owner']){
+            return $this->error(__('auth.failed'));
+        }
+        $delete = 0;
+        DB::transaction(function() use($collection,$delete){
+            //TODO 删除文集中的文章
+            $delete = $collection->delete();
+        });
+
+        return $this->ok($delete);
     }
 }

+ 0 - 2
app/Http/Controllers/CorpusController.php

@@ -359,10 +359,8 @@ class CorpusController extends Controller
                                                 function() use($row){
                                                     return MdRender::render($row->content,$row->channel_uid);
                                                 });
-
                             break;
                     }
-
                 }
                 switch ($info->type) {
                     case 'wbw':

+ 6 - 5
app/Http/Controllers/CourseController.php

@@ -8,6 +8,7 @@ use Illuminate\Http\Request;
 use App\Http\Api\AuthApi;
 use App\Http\Api\StudioApi;
 use App\Http\Resources\CourseResource;
+use Illuminate\Support\Facades\DB;
 
 class CourseController extends Controller
 {
@@ -227,11 +228,11 @@ class CourseController extends Controller
 
     /**
      * Remove the specified resource from storage.
-     *
+     * @param  \Illuminate\Http\Request  $request
      * @param  \App\Models\Course  $course
      * @return \Illuminate\Http\Response
      */
-    public function destroy(Course $course)
+    public function destroy(Request $request,Course $course)
     {
         //
         $user = AuthApi::current($request);
@@ -239,16 +240,16 @@ class CourseController extends Controller
             return $this->error(__('auth.failed'));
         }
         //判断当前用户是否有指定的studio的权限
-        if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
+        if($user['user_uid'] !== $course->studio_id){
             return $this->error(__('auth.failed'));
         }
         $delete = 0;
-        DB::transaction(function() use($delete){
+        DB::transaction(function() use($delete,$course){
             //删除group member
             $memberDelete = CourseMember::where('course_id',$course->id)->delete();
             $delete = $course->delete();
         });
 
-        $this->ok($delete);
+        return $this->ok($delete);
     }
 }

+ 31 - 11
app/Http/Controllers/DhammaTermController.php

@@ -265,18 +265,38 @@ class DhammaTermController extends Controller
      */
     public function destroy(DhammaTerm $dhammaTerm,Request $request)
     {
-        //
-        $arrId = json_decode($request->get("id"),true) ;
-		$count = 0;
-		foreach ($arrId as $key => $id) {
-			# code...
-			$result = DhammaTerm::where('id', $id)
-							->where('owner', $_COOKIE["user_uid"])
-							->delete();
-            if($result){
-                $count++;
+        /**
+         * 一次删除多个单词
+         */
+        if(isset($_COOKIE["user_uid"])){
+            $user_uid = $_COOKIE["user_uid"];
+        }else{
+            $user = AuthApi::current($request);
+            if(!$user){
+                return $this->error(__('auth.failed'));
             }
-		}
+            $user_uid = $user['user_uid'];
+        }
+
+        if($request->has("uuid")){
+            $count = DhammaTerm::whereIn('guid', $request->get("id"))
+                            ->where('owner', $user_uid)
+                            ->delete();
+        }else{
+            $arrId = json_decode($request->get("id"),true) ;
+            $count = 0;
+
+            foreach ($arrId as $key => $id) {
+                # code...
+                $result = DhammaTerm::where('id', $id)
+                                ->where('owner', $user_uid)
+                                ->delete();
+                if($result){
+                    $count++;
+                }
+            }
+        }
+
 		return $this->ok($count);
     }
 }

+ 32 - 15
app/Http/Controllers/UserDictController.php

@@ -7,6 +7,7 @@ use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Redis;
 use Illuminate\Support\Facades\Log;
 use App\Http\Api;
+use App\Http\Api\AuthApi;
 
 class UserDictController extends Controller
 {
@@ -179,21 +180,37 @@ class UserDictController extends Controller
         //
 		Log::info("userDictController->destroy start");
 		Log::info("userDictController->destroy id= {$id}");
-		$arrId = json_decode($request->get("id"),true) ;
-		$count = 0;
-		foreach ($arrId as $key => $id) {
-			# 找到对应数据
-			$data = UserDict::find($id);
-			//查看是否有权限删除
-			if($data->creator_id == $_COOKIE["user_id"]){
-				$result = UserDict::where('id', $id)
-								->delete();
-				$count += $result;
-				$updateOk = $this->update_sys_wbw($data);
-				$this->update_redis($data);
-			}
-		}
-		return $this->ok([$count,$updateOk]);
+        if($request->has("id")){
+            $arrId = json_decode($request->get("id"),true) ;
+            $count = 0;
+            foreach ($arrId as $key => $id) {
+                # 找到对应数据
+                $data = UserDict::find($id);
+                //查看是否有权限删除
+                if($data->creator_id == $_COOKIE["user_id"]){
+                    $result = UserDict::where('id', $id)
+                                    ->delete();
+                    $count += $result;
+                    $updateOk = $this->update_sys_wbw($data);
+                    $this->update_redis($data);
+                }
+            }
+            return $this->ok([$count,$updateOk]);
+        }else{
+            //删除单个单词
+            $user = AuthApi::current($request);
+            if(!$user){
+                return $this->error(__('auth.failed'));
+            }
+            $userDict = UserDict::find($id);
+            //判断当前用户是否有指定的studio的权限
+            if((int)$user['user_id'] !== $userDict->creator_id){
+                return $this->error(__('auth.failed'));
+            }
+            $delete = $userDict->delete();
+            return $this->ok($delete);
+        }
+
     }
 	public function delete(Request $request){
 		Log::info("userDictController->delete start");

+ 1 - 0
app/Models/Collection.php

@@ -12,5 +12,6 @@ class Collection extends Model
     protected $casts = [
         'uid' => 'string'
     ];
+    protected $keyType = 'string';
     public  $incrementing = false;
 }