刘桂岩 il y a 4 ans
Parent
commit
6730f8e2f5
1 fichiers modifiés avec 50 ajouts et 1 suppressions
  1. 50 1
      application/manage/controller/Exam.php

+ 50 - 1
application/manage/controller/Exam.php

@@ -222,7 +222,7 @@ class Exam extends Base {
         }
         $studies = DB::table('series')->where('study_id',$exam['study_id'])->column('id');
         $images = DB::table('images')->where('series_id','in',$studies)->column('metadata');
-        $return  = $this->delAli($images);
+        $this->delOneAli($images);
         return 'delete_ok';
 
     }
@@ -326,4 +326,53 @@ class Exam extends Base {
             DB::table('oss_callbacks')->where('md5','in',$objects)->delete();
         }
     }
+
+    public function delOneAli($data)
+    {
+        if(empty($data)){
+            return;
+        }
+        $count  = count($data);
+
+
+        $accessKeyId = "LTAI4GDTQ15b4F85sAaAKTEE";
+        $accessKeySecret = "6NrhII6uYQj0mEvU7jnPNhr9InSq57";
+        // Endpoint以杭州为例,其它Region请按实际情况填写。
+        $endpoint = "http://oss-cn-beijing.aliyuncs.com";
+        $bucket= "zskk-dcm";
+
+        $objects = array();
+        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
+        if($count > 1000){
+            $c = floor($count/1000);
+            for ($i=0;$i<=$c;$i++)
+            {
+                $num1 = $i*1000;
+                $num2 = $i*1000+999;
+                // 截取1000个image数据
+                $data = array_slice($data,$num1,$num2);
+                foreach ($data as $k=>$v){
+                    $objects[] = $v;
+                }
+                // 调用阿里删除数据
+                $info = $ossClient->deleteObjects($bucket, $objects);
+                if($info){
+                    // 删除成功则删除对应数据
+                    DB::table('images')->where('metadata','in',$objects)->delete();
+                    DB::table('oss_callbacks')->where('md5','in',$objects)->delete();
+                }
+            }
+        }else{
+            foreach ($data as $k=>$v){
+                $objects[] = $v;
+            }
+            $info = $ossClient->deleteObjects($bucket, $objects);
+            if($info){
+                DB::table('images')->where('metadata','in',$objects)->delete();
+                DB::table('oss_callbacks')->where('md5','in',$objects)->delete();
+            }
+        }
+
+        return $info;
+    }
 }