|
|
@ -17,11 +17,15 @@ class ResourceDir extends Model |
|
|
public function addResourceDir($param): array |
|
|
public function addResourceDir($param): array |
|
|
{ |
|
|
{ |
|
|
try { |
|
|
try { |
|
|
$resource = self::create($param); |
|
|
|
|
|
|
|
|
$resource_dir = self::create($param); |
|
|
|
|
|
|
|
|
|
|
|
//更新id_path
|
|
|
|
|
|
$resource_dir->id_path = $this->getResourceDirIdPath($resource_dir->id); |
|
|
|
|
|
$resource_dir->save(); |
|
|
} catch (\Exception $e) { |
|
|
} catch (\Exception $e) { |
|
|
throw new ModelException($e->getMessage()); |
|
|
throw new ModelException($e->getMessage()); |
|
|
} |
|
|
} |
|
|
return dataReturn($this->sucCode, $this->addMsg, $resource->id); |
|
|
|
|
|
|
|
|
return dataReturn($this->sucCode, $this->addMsg, $resource_dir->id); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -37,23 +41,60 @@ class ResourceDir extends Model |
|
|
->select(); |
|
|
->select(); |
|
|
return $resource_list; |
|
|
return $resource_list; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* @param $folderId 文件夹id |
|
|
|
|
|
|
|
|
* @param $resource 资源 |
|
|
|
|
|
* @param $resource_dir_id 移入/移出的文件夹id |
|
|
|
|
|
* @param $resource_dir_id method + 移入 - 移除 |
|
|
* @return array |
|
|
* @return array |
|
|
* 递归获取一个文件夹下所有ids |
|
|
|
|
|
|
|
|
* 将一资源移入或者移出文件夹 文件夹修改资源数量 和 资源大小 |
|
|
*/ |
|
|
*/ |
|
|
public function getFolderIds($folderId) |
|
|
|
|
|
|
|
|
public function changeDirSizeAndCount($resource, $resource_dir_id, $method = '+') |
|
|
{ |
|
|
{ |
|
|
$folderIds = []; |
|
|
|
|
|
// 获取直接子文件夹
|
|
|
|
|
|
$sub_folders = Resource::where('parent_id', $folderId) |
|
|
|
|
|
->where('type', 2) |
|
|
|
|
|
->select(); |
|
|
|
|
|
foreach ($sub_folders as $subfolder) { |
|
|
|
|
|
$folderIds[] = $subfolder['id']; |
|
|
|
|
|
$folderIds = array_merge($folderIds, $this->getFolderIds($subfolder['id'])); |
|
|
|
|
|
|
|
|
$resource_dir = $this::find($resource_dir_id); |
|
|
|
|
|
if ($method === '+') { |
|
|
|
|
|
$this::whereIn('id', $resource_dir['id_path'])->inc('resource_size', $resource->file_size) |
|
|
|
|
|
->inc('resource_count', 1) |
|
|
|
|
|
->update(); |
|
|
|
|
|
} elseif ($method === '-') { |
|
|
|
|
|
$this::whereIn('id', $resource_dir['id_path'])->dec('resource_size', $resource->file_size) |
|
|
|
|
|
->dec('resource_count', 1) |
|
|
|
|
|
->update(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return $folderIds; |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @param $resource_dir_id 文件夹id |
|
|
|
|
|
* 获取文件夹 id_path(从顶级文件夹到自己的路径) |
|
|
|
|
|
*/ |
|
|
|
|
|
public function getResourceDirIdPath($resource_dir_id) |
|
|
|
|
|
{ |
|
|
|
|
|
$path = []; |
|
|
|
|
|
// 调用递归函数
|
|
|
|
|
|
findParent($this, $resource_dir_id, $path); |
|
|
|
|
|
// 反转路径数组,使顶级文件夹在前
|
|
|
|
|
|
return implode(',', array_reverse($path)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// /**
|
|
|
|
|
|
// * @param $folderId 文件夹id
|
|
|
|
|
|
// * @return array
|
|
|
|
|
|
// * 递归获取一个文件夹下所有ids
|
|
|
|
|
|
// */
|
|
|
|
|
|
// public function getFolderIds($folderId)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// $folderIds = [];
|
|
|
|
|
|
// // 获取直接子文件夹
|
|
|
|
|
|
// $sub_folders = Resource::where('parent_id', $folderId)
|
|
|
|
|
|
// ->where('type', 2)
|
|
|
|
|
|
// ->select();
|
|
|
|
|
|
// foreach ($sub_folders as $subfolder) {
|
|
|
|
|
|
// $folderIds[] = $subfolder['id'];
|
|
|
|
|
|
// $folderIds = array_merge($folderIds, $this->getFolderIds($subfolder['id']));
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// return $folderIds;
|
|
|
|
|
|
// }
|
|
|
} |
|
|
} |