Explorar el Código

修正术语复制的查重错误

visuddhinanda hace 2 años
padre
commit
c4eb62b2a0
Se han modificado 1 ficheros con 39 adiciones y 26 borrados
  1. 39 26
      app/Http/Controllers/DhammaTermController.php

+ 39 - 26
app/Http/Controllers/DhammaTermController.php

@@ -265,7 +265,7 @@ class DhammaTermController extends Controller
     private function deleteCache($term){
         if(empty($term->channal)){
             //通用 查询studio所有channel
-            $channels = Channel::where('owner',$term->owner)->select('uid')->get();
+            $channels = Channel::where('owner_uid',$term->owner)->select('uid')->get();
             foreach ($channels as $channel) {
                 Cache::forget("/term/{$channel}/{$term->word}");
             }
@@ -371,34 +371,46 @@ class DhammaTermController extends Controller
                 }
             }
         }
-        if(!$channelSame){
-            /**
-             * 查询重复的
-             * 一个channel下面word+tag+language 唯一
-             *
-             */
-            $exist = false;
-            if(empty($request->get("channel"))){
-                //复制模式必须给channel
-                return $this->error(__('auth.failed'),[],404);
-            }else{
-                $exist = DhammaTerm::where('word',$request->get("word"))
-                                        ->where('tag',$request->get("tag"))
-                                        ->where('channal',$request->get("channel"))
-                                        ->exists();
-            }
-            if($exist){
-                return $this->error("word existed",[],200);
+
+
+        /**
+         * 查询重复的
+         * 一个channel下面word+tag+language+channel 唯一
+         *
+         */
+        $existTerm = DhammaTerm::where('word',$request->get("word"))
+                            ->where('tag',$request->get("tag"));
+        if($request->has("channel")){
+            $existTerm->where('channal',$request->get("channel"));
+        }else{
+            if($request->has("studioName")){
+                $existTerm->where('owner', StudioApi::getIdByName($request->get("studioName")))
+                          ->whereNull('channal')
+                          ->where('language', $request->get("language"));
+            }else if($request->has("studioId")){
+                $existTerm->whereNull('channal')
+                          ->where('owner', $request->get("studioId"))
+                          ->where('language', $request->get("language"));
             }
         }
+        $exist = $existTerm->exists();
+        if($exist){
+            return $this->error("word existed",[],200);
+        }
 
-        if($request->get("copy")==='copy'){
-            /**新建
+
+        if(!$channelSame){
+            /**
+             * 新建
             */
             $dhammaTerm = new DhammaTerm;
             $dhammaTerm->id = app('snowflake')->id();
             $dhammaTerm->guid = Str::uuid();
         }
+        if($request->get("copy")==='move'){
+            //删除旧数据
+            DhammaTerm::find($id)->delete();
+        }
 
         $dhammaTerm->word = $request->get("word");
         $dhammaTerm->word_en = Tools::getWordEn($request->get("word"));
@@ -463,17 +475,18 @@ class DhammaTermController extends Controller
                         continue;
                     }
                 }
-                        //删除cache
-                $this->deleteCache($term);
                 $count += $term->delete();
+                //删除cache
+                $this->deleteCache($term);
             }
         }else{
             $arrId = json_decode($request->get("id"),true) ;
             foreach ($arrId as $key => $id) {
                 # code...
-                $result = DhammaTerm::where('id', $id)
-                                ->where('owner', $user['user_uid'])
-                                ->delete();
+                $term = DhammaTerm::where('id', $id)
+                                ->where('owner', $user['user_uid']);
+                $term->delete();
+                $this->deleteCache($term);
                 if($result){
                     $count++;
                 }