Browse Source

Merge pull request #1653 from visuddhinanda/laravel

pr 支持修改
visuddhinanda 2 years ago
parent
commit
1a1c39b940

+ 12 - 9
app/Http/Controllers/CorpusController.php

@@ -14,7 +14,6 @@ use App\Models\Discussion;
 use App\Models\PaliSentence;
 use App\Models\SentSimIndex;
 use Illuminate\Support\Str;
-
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Cache;
 use App\Tools\RedisClusters;
@@ -27,6 +26,7 @@ use App\Http\Api\AuthApi;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Arr;
 use App\Http\Resources\TocResource;
+use Illuminate\Support\Facades\Redis;
 
 class CorpusController extends Controller
 {
@@ -971,18 +971,21 @@ class CorpusController extends Controller
      */
     public static function sentCanReadCount($book,$para,$start,$end,$userUuid=null){
 		$sentId = "{$book}-{$para}-{$start}-{$end}";
-        $key = "/sentence/res-count/{$sentId}/";
+        $hKey = "/sentence/res-count/{$sentId}/";
         if($userUuid){
-            $key .= $userUuid;
+            $key = $userUuid;
+        }else{
+            $key = 'guest';
+        }
+        if(Redis::hExists($hKey,$key)){
+            return json_decode(Redis::hGet($hKey,$key),true);
         }else{
-            $key .= 'guest';
+            $channelCount = CorpusController::_sentCanReadCount($book,$para,$start,$end,$userUuid);
+            Redis::hSet($hKey,$key,json_encode($channelCount));
+            return $channelCount;
         }
-		$channelCount = RedisClusters::remember($key,config('mint.cache.expire'),
-                          function() use($book,$para,$start,$end,$userUuid){
-                            return CorpusController::_sentCanReadCount($book,$para,$start,$end,$userUuid);
-		                });
-        return $channelCount;
     }
+
     private function markdownRender($input){
 
     }

+ 46 - 49
app/Http/Controllers/SentPrController.php

@@ -14,8 +14,6 @@ use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Facades\Log;
 use App\Http\Api\Mq;
 
-require_once __DIR__.'/../../../public/app/ucenter/function.php';
-
 class SentPrController extends Controller
 {
     /**
@@ -97,7 +95,7 @@ class SentPrController extends Controller
         //
         $user = AuthApi::current($request);
         if(!$user){
-            return $this->error(__('auth.failed'));
+            return $this->error(__('auth.failed'),401,401);
         }
         $user_uid = $user['user_uid'];
 
@@ -113,26 +111,27 @@ class SentPrController extends Controller
 						->where('content',$data['text'])
 						->where('channel_uid',$data['channel'])
 						->exists();
-		if(!$exists){
-			#不存在,新建
-			$new = new SentPr();
-			$new->id = app('snowflake')->id();
-			$new->book_id = $data['book'];
-			$new->paragraph = $data['para'];
-			$new->word_start = $data['begin'];
-			$new->word_end = $data['end'];
-			$new->channel_uid = $data['channel'];
-			$new->editor_uid = $user_uid;
-			$new->content = $data['text'];
-			$new->language = Channel::where('uid',$data['channel'])->value('lang');
-			$new->status = 1;//未处理状态
-			$new->strlen = mb_strlen($data['text'],"UTF-8");
-			$new->create_time = time()*1000;
-			$new->modify_time = time()*1000;
-			$new->save();
-            Mq::publish('suggestion',new SentPrResource($new));
+        if($exists){
+            return $this->error("已经存在同样的修改建议",200,200);
+        }
 
-		}
+        #不存在,新建
+        $new = new SentPr();
+        $new->id = app('snowflake')->id();
+        $new->book_id = $data['book'];
+        $new->paragraph = $data['para'];
+        $new->word_start = $data['begin'];
+        $new->word_end = $data['end'];
+        $new->channel_uid = $data['channel'];
+        $new->editor_uid = $user_uid;
+        $new->content = $data['text'];
+        $new->language = Channel::where('uid',$data['channel'])->value('lang');
+        $new->status = 1;//未处理状态
+        $new->strlen = mb_strlen($data['text'],"UTF-8");
+        $new->create_time = time()*1000;
+        $new->modify_time = time()*1000;
+        $new->save();
+        Mq::publish('suggestion',new SentPrResource($new));
 
 		$robotMessageOk=false;
 		$webHookMessage="";
@@ -156,9 +155,7 @@ class SentPrController extends Controller
 			*/
 
 			//if(($data['book']==65 && $data['para']>=829 && $data['para']<=1306) || ($data['book']== 67 && $data['para'] >= 759 && $data['para'] <= 1152)){
-				$userinfo = new \UserInfo();
-
-				$username = $userinfo->getName($user_uid)['nickname'];
+				$username = 'nickname';
 				$palitext = PaliSentence::where('book',$data['book'])
 										->where('paragraph',$data['para'])
 										->where('word_begin',$data['begin'])
@@ -254,48 +251,48 @@ class SentPrController extends Controller
      * @param  \App\Models\SentPr  $sentPr
      * @return \Illuminate\Http\Response
      */
-    public function update(Request $request, SentPr $sentPr)
+    public function update(Request $request, string $id)
     {
         $user = AuthApi::current($request);
         if(!$user){
-            return $this->error(__('auth.failed'));
+            return $this->error(__('auth.failed'),401,401);
         }
-        $user_uid = $user['user_uid'];
-
-		$sentPr = SentPr::where('id',$request->get('id'));
-		if($sentPr->value('editor_uid')==$user_uid){
-			$update = $sentPr->update([
-				"content"=>$request->get('text'),
-				"modify_time"=>time()*1000,
-			]);
-			if($update >= 0){
-				$data = SentPr::where('id',$request->get('id'))->first();
-				$data->id = sprintf("%d",$data->id);
-				return $this->ok($data);
-			}else{
-				return $this->error('没有更新');
-			}
 
-		}else{
-			return $this->error('not power');
-		}
+		$sentPr = SentPr::find($id);
+        if(!$sentPr){
+            return $this->error('no res');
+        }
+		if($sentPr->editor_uid !== $user['user_uid']){
+            return $this->error('not power',403,403);
+        }
+        $sentPr->content = $request->get('text');
+        $sentPr->modify_time = time()*1000;
+        $sentPr->save();
+        return $this->ok($sentPr);
 
     }
 
     /**
      * Remove the specified resource from storage.
      *
-     * @param  int $id
+     * @param  string $id
      * @return \Illuminate\Http\Response
      */
-    public function destroy($id)
+    public function destroy(Request $request, string $id)
     {
         //
         $user = AuthApi::current($request);
         if(!$user){
-            return $this->error(__('auth.failed'));
+            return $this->error(__('auth.failed'),401,401);
         }
 		$old = SentPr::where('id', $id)->first();
+        if(!$old){
+            return $this->error('no res');
+        }
+        //鉴权
+        if($old->editor_uid !== $user["user_uid"]){
+            return $this->error(__('auth.failed'),403,403);
+        }
 		$result = SentPr::where('id', $id)
 						->where('editor_uid', $user["user_uid"])
 						->delete();
@@ -309,7 +306,7 @@ class SentPrController extends Controller
 						->count();
 			return $this->ok($count);
 		}else{
-			return $this->error('not power');
+			return $this->error('not power',403,403);
 		}
     }
 }

+ 9 - 2
app/Http/Controllers/SentenceController.php

@@ -17,6 +17,7 @@ use Illuminate\Support\Facades\Cache;
 use App\Tools\RedisClusters;
 use App\Http\Api\Mq;
 use App\Tools\OpsLog;
+use Illuminate\Support\Facades\Redis;
 
 class SentenceController extends Controller
 {
@@ -281,7 +282,10 @@ class SentenceController extends Controller
             }else{
                 $this->saveHistory($row->uid,$user["user_uid"],$sent['content']);
             }
-
+            //清除缓存
+            $sentId = "{$sent['book_id']}-{$sent['paragraph']}-{$sent['word_start']}-{$sent['word_end']}";
+            $hKey = "/sentence/res-count/{$sentId}/";
+            Redis::del($hKey);
         }
         if($sentFirst !== null){
             Mq::publish('progress',['book'=>$sentFirst['book_id'],
@@ -380,7 +384,10 @@ class SentenceController extends Controller
             $sent->pr_id = null;
         }
         $sent->save();
-
+        //清除缓存
+        $sentId = "{$sent['book_id']}-{$sent['paragraph']}-{$sent['word_start']}-{$sent['word_end']}";
+        $hKey = "/sentence/res-count/{$sentId}/";
+        Redis::del($hKey);
         OpsLog::debug($user["user_uid"],$sent);
 
         //清除cache

+ 2 - 0
app/Models/SentPr.php

@@ -11,4 +11,6 @@ class SentPr extends Model
 	protected $casts = [
 		'id' => 'string'
 	];
+    protected $primaryKey = 'id';
+
 }