189 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php namespace Gdoo\Index\Services;
 | |
| 
 | |
| use Request;
 | |
| use DB;
 | |
| use Auth;
 | |
| use Str;
 | |
| 
 | |
| class AttachmentService
 | |
| {
 | |
|     public static function files($name, $path = 'default')
 | |
|     {
 | |
|         $files = Request::file($name);
 | |
|     
 | |
|         $path = $path.'/'.date('Ym');
 | |
|         $upload_path = upload_path().'/'.$path;
 | |
| 
 | |
|         $res = [];
 | |
| 
 | |
|         foreach ($files as $file) {
 | |
|             if ($file->isValid()) {
 | |
|                 // 文件后缀名
 | |
|                 $extension = $file->getClientOriginalExtension();
 | |
|                 // 兼容do客户端上传
 | |
|                 if ($extension == 'do') {
 | |
|                     $clientName = $file->getClientOriginalName();
 | |
|                     $extension = pathinfo(substr($clientName, 0, -3), PATHINFO_EXTENSION);
 | |
|                 }
 | |
| 
 | |
|                 // 文件新名字
 | |
|                 $name = date('dhis_').Str::random(4).'.'.$extension;
 | |
|                 $name = mb_strtolower($name);
 | |
|                 $size = $file->getSize();
 | |
| 
 | |
|                 if ($file->move($upload_path, $name)) {
 | |
|                     $res[] = DB::table('attachment')->insertGetId([
 | |
|                         'name' => $name,
 | |
|                         'path' => $path.'/'.$name,
 | |
|                         'type' => $extension,
 | |
|                         'size' => $size,
 | |
|                         'status' => 1,
 | |
|                     ]);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         return join(',', array_filter($res));
 | |
|     }
 | |
| 
 | |
|     public static function base64($images, $path = 'default', $extension = 'jpg')
 | |
|     {
 | |
|         $path = $path.date('/Ym');
 | |
|         $directory = upload_path().'/'.$path;
 | |
| 
 | |
|         if (!is_dir($directory)) {
 | |
|             @mkdir($directory, 0777, true);
 | |
|         }
 | |
|         
 | |
|         $res = [];
 | |
| 
 | |
|         foreach ($images as $image) {
 | |
|             $name = date('dhis_').Str::random(4).'.'.$extension;
 | |
|             $name = mb_strtolower($name);
 | |
| 
 | |
|             $image = base64_decode(str_replace(' ', '+', $image));
 | |
|             $size = file_put_contents($directory.'/'.$name, $image);
 | |
|             if ($size) {
 | |
|                 $res[] = DB::table('attachment')->insertGetId([
 | |
|                     'name' => $name,
 | |
|                     'path' => $path.'/'.$name,
 | |
|                     'type' => $extension,
 | |
|                     'size' => $size,
 | |
|                     'status' => 1,
 | |
|                 ]);
 | |
|             }
 | |
|         }
 | |
|         return join(',', array_filter($res));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 将ids字符串转换为数组
 | |
|      */
 | |
|     public static function getIds($ids)
 | |
|     {
 | |
|         if (is_array($ids)) {
 | |
|             return $ids;
 | |
|         }
 | |
|         $ids = array_filter(explode(",", $ids));
 | |
|         return (array)$ids;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取指定编号附件列表
 | |
|      */
 | |
|     public static function get($ids)
 | |
|     {
 | |
|         $ids = static::getIds($ids);
 | |
|         return DB::table('attachment')
 | |
|         ->whereIn('id', $ids)
 | |
|         ->where('status', 1)->get();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取当前ID附件和草稿
 | |
|      */
 | |
|     public static function edit($ids, $table, $field, $path = 'default')
 | |
|     {
 | |
|         $res['path'] = $path;
 | |
|         $res['table'] = $table;
 | |
|         $res['field'] = $field;
 | |
|         $res['rows'] = static::get($ids);
 | |
|         $res['draft'] = static::draft($table, $field);
 | |
|         return $res;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取当前ID附件
 | |
|      */
 | |
|     public static function show($ids)
 | |
|     {
 | |
|         $res['rows'] = static::get($ids);
 | |
|         return $res;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 发布附件,改成状态为可用
 | |
|      */
 | |
|     public static function publish($ids)
 | |
|     {
 | |
|         $ids = static::getIds($ids);
 | |
|         $rows = DB::table('attachment')
 | |
|         ->whereIn('id', $ids)
 | |
|         ->where('status', 0)
 | |
|         ->get();
 | |
|         foreach ($rows as $row) {
 | |
|             DB::table('attachment')->where('id', $row['id'])->update([
 | |
|                 'status' => 1,
 | |
|             ]);
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 发布附件,改成状态为可用
 | |
|      */
 | |
|     public static function store($table, $field)
 | |
|     {
 | |
|         $rows = static::draft($table, $field);
 | |
|         foreach ($rows as $row) {
 | |
|             DB::table('attachment')->where('id', $row['id'])->update([
 | |
|                 'status' => 1,
 | |
|             ]);
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取草稿文件
 | |
|      */
 | |
|     public static function draft($table, $field, $user_id = 0)
 | |
|     {
 | |
|         if ($user_id == 0) {
 | |
|             $user_id = auth()->id();
 | |
|         }
 | |
|         return DB::table('attachment')
 | |
|         ->where('created_id', $user_id)
 | |
|         ->where('table', $table)
 | |
|         ->where('field', $field)
 | |
|         ->where('status', '0')
 | |
|         ->get();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 删除附件和文件
 | |
|      */
 | |
|     public static function remove($ids)
 | |
|     {
 | |
|         $ids = self::getIds($ids);
 | |
|         $rows = DB::table('attachment')->whereIn('id', $ids)->get();
 | |
|         foreach ($rows as $row) {
 | |
|             // 删除文件
 | |
|             $file = upload_path().'/'.$row['path'];
 | |
|             if (is_file($file)) {
 | |
|                 unlink($file);
 | |
|             }
 | |
|             DB::table('attachment')->where('id', $row['id'])->delete();
 | |
|         }
 | |
|         return 1;
 | |
|     }
 | |
| }
 |