|
|
<?php
namespace backend\logic\file;
use backend\models\ars\File; use backend\models\ars\TemFile;
class FileManager { //数据表ats_file和ats_tem_file的类型字段type
const TYPE_IMAGE = 1;//图片
const TYPE_VIDEO = 2;//影视
const TYPE_EXCEL = 3;//excel表单
const TYPE_WORD = 4;//word文本
const TYPE_TXT = 5;//txt文本
public static $extension = [ self::TYPE_IMAGE => ['jpg', 'png', 'jpeg'], self::TYPE_VIDEO => ['mp4'], self::TYPE_EXCEL => [], self::TYPE_WORD => ['docx'], self::TYPE_TXT => ['txt'], ];
/** * @param $array * @param $keyword * @return array * 根据文件拓展名在$extension中查找对应的文件类型,若不存在则返回false */ public function searchType($array, $keyword) { foreach($array as $key => $value){ foreach ($value as $k => $v) { if($v == $keyword){ return ['status' => true, 'info' => '操作成功', 'type' => $key]; } } } return ['status' => false, 'info' => '操作失败']; }
/** * @param $temFIleIdArr * @param $ownId * @param $ownType * @return array * 根据临时文件id将临时文件保存在文件中 */ public function saveTemFileToFile($temFIleIdArr, $ownId, $ownType) { if(!$temFIleIdArr || !$ownId) { return ['status' => false, 'info' => '参数错误']; }
$firstFileId = 0; foreach ($temFIleIdArr as $key => $value) { $temFile = TemFile::findOne($value);
if(!$temFile) { return ['status' => false, 'info' => '存在查找不到的文件']; }
$res = self::saveNewFile($temFile, $ownId, $ownType); if(!$res['status']) { return ['status' => false, 'info' => '存在文件保存失败']; } if($key == 0) { $firstFileId = $res['file_id']; } }
return ['status' => true, 'info' => '保存成功', 'first_file_id' => $firstFileId]; }
/** * @param $temFile * @param $ownId * @param $ownType * @return array * 创建新的文件 */ private function saveNewFile($temFile, $ownId, $ownType) { $newFile = new File(); $newFile->name = $temFile->name; $newFile->type = $temFile->type; $newFile->own_id = $ownId; $newFile->own_type = $ownType; $newFile->alias = $temFile->alias; $newFile->path = $temFile->path; if($newFile->save()) { return ['status' => true, 'info' => '操作成功', 'file_id' => $newFile->id]; } else { return ['status' => false, 'info' => '操作失败']; } }
/** * @param $fileIdArr * @return array * 删除file表中的文件 */ public function deleteFile($fileIdArr) { if($fileIdArr){ foreach ($fileIdArr as $key => $value) { $fileModel = File::findOne($value); if($fileModel){ $fileModel->is_delete = File::IS_DELETE_YES; if($fileModel->save()){ return ['status' => false, 'info' => '操作失败']; } } } } return ['status' => true, 'info' => '操作成功']; } }
|