Selaa lähdekoodia

移除关联任务redis key的时候同时移除关联任务的key

visuddhinanda 1 vuosi sitten
vanhempi
sitoutus
d04b952616
1 muutettua tiedostoa jossa 17 lisäystä ja 3 poistoa
  1. 17 3
      api-v8/app/Http/Api/TaskApi.php

+ 17 - 3
api-v8/app/Http/Api/TaskApi.php

@@ -74,7 +74,7 @@ class TaskApi{
     }
     public static function getRelationTasks($taskId,$relation='pre'){
         $key = TaskApi::taskRelationRedisKey($taskId,$relation);
-        return RedisClusters::remember($key,3*24*3600,function() use($taskId,$relation){
+        $data =RedisClusters::remember($key,3*24*3600,function() use($taskId,$relation){
             if($relation==='pre'){
                 $where = 'next_task_id';
                 $select = 'task_id';
@@ -90,6 +90,7 @@ class TaskApi{
             }
             return TaskApi::getListByIds($tasksId);
 		});
+        return $data;
     }
 
     public static function getNextTasks($taskId){
@@ -99,8 +100,21 @@ class TaskApi{
         return TaskApi::getRelationTasks($taskId,'pre');
     }
     public static function removeTaskRelationRedisKey($taskId,$relation='pre'){
-        $key = TaskApi::taskRelationRedisKey($taskId,$relation);
-        RedisClusters::forget($key);
+                //查询相关task
+        $relations = TaskRelation::where('task_id',$taskId)
+                ->orWhere('next_task_id',$taskId)
+                ->select('task_id','next_task_id')->get();
+        $relationsId = [];
+        foreach ($relations as $key => $value) {
+            $relationsId[$value->task_id] = 1;
+            $relationsId[$value->next_task_id] = 1;
+        }
+        foreach ($relationsId as $taskId => $value) {
+            $key = TaskApi::taskRelationRedisKey($taskId,'pre');
+            RedisClusters::forget($key);
+            $key = TaskApi::taskRelationRedisKey($taskId,'next');
+            RedisClusters::forget($key);
+        }
     }
     public static function taskRelationRedisKey($taskId,$relation='pre'){
         return "task/relation/{$relation}/{$taskId}";