Browse Source

resourcedir相关合并到resource

master
unknown 1 year ago
parent
commit
85a2c17814
  1. 39
      app/controller/substance/ResourceController.php
  2. 148
      app/controller/substance/ResourceDirController.php
  3. 73
      app/service/ResourceDirService.php
  4. 26
      app/service/ResourceService.php
  5. 8
      route/substance.php

39
app/controller/substance/ResourceController.php

@ -5,6 +5,7 @@ namespace app\controller\substance;
use app\listener\ResourceEvent; use app\listener\ResourceEvent;
use app\model\Resource; use app\model\Resource;
use app\service\AuditResourceService; use app\service\AuditResourceService;
use app\service\ResourceDirService;
use app\service\ResourceService; use app\service\ResourceService;
use app\service\ShareItemResourceService; use app\service\ShareItemResourceService;
use app\service\ShareService; use app\service\ShareService;
@ -53,6 +54,44 @@ class ResourceController
return jsonReturn(0, Lang::get('成功'), $resource_list); return jsonReturn(0, Lang::get('成功'), $resource_list);
} }
public function index_dir(Resource $resource, Request $request)
{
//左侧顶级文件夹列表
$top_resource_dir = $resource::where('type', 2)->where('parent_id', 0)->field('id, name')->select()->toArray();
//选中的文件夹 默认顶级第一个
$select_dir_id = $request->param('id') ?: $top_resource_dir[0]['id'];
//选中的文件夹基础信息
$resource_dir_info = $resource::find($select_dir_id);
//选中文件夹下所有内容
$resource_list = (new ResourceService())->getResourceDirAndResource($select_dir_id);
$ret = [
'top_resource_dir' => $top_resource_dir,
'resource_dir_info' => $resource_dir_info,
'resource_list' => $resource_list
];
return jsonReturn(0, Lang::get('成功'), $ret);
}
/**
* 文件夹 详情
* @param Request $request
* @return \think\response\Json
*/
public function read_dir(Request $request)
{
$resource_list = (new ResourceService())->getResourceDirAndResource($request->param('id'));
if ($request->param('in_share')) {
//说明这是分享点击进来的 需要给列表加上url 点击链接
$resource_service = new ResourceService();
foreach ($resource_list as $resource) {
$resource->share_read_url = $resource_service->getShareReadUrl($resource, $request->param('share_id'), $request->param('share_item_id'));
}
}
return jsonReturn(0, Lang::get('成功'), $resource_list);
}
/** /**
* 全部资源 新增 * 全部资源 新增

148
app/controller/substance/ResourceDirController.php

@ -1,148 +0,0 @@
<?php
namespace app\controller\substance;
use app\model\Resource;
use app\model\ResourceDir;
use app\service\ResourceDirService;
use app\service\ResourceService;
use app\validate\ResourceValidate;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\Lang;
use think\Request;
/**
* 文件夹使用的也是Resource 视为类型不同的文件(资源)
*/
class ResourceDirController
{
/**
* 文件夹 列表页
*/
public function index(ResourceDir $resource_dir, Request $request, $id = 0)
{
//左侧顶级文件夹列表
$top_resource_dir = $resource_dir::where('type', 2)->where('parent_id', 0)->field('id, name')->select()->toArray();
//选中的文件夹 默认顶级第一个
$select_dir_id = $id ?: $top_resource_dir[0]['id'];
//选中的文件夹基础信息
$resource_dir_info = $resource_dir::find($select_dir_id);
//选中文件夹下所有内容
$resource_list = (new ResourceDirService())->getResourceDirAndResource($select_dir_id);
$ret = [
'top_resource_dir' => $top_resource_dir,
'resource_dir_info' => $resource_dir_info,
'resource_list' => $resource_list
];
return jsonReturn(0, Lang::get('成功'), $ret);
}
/**
* 文件夹 详情
* @param Request $request
* @return \think\response\Json
*/
public function read(Request $request)
{
$resource_list = (new ResourceDirService())->getResourceDirAndResource($request->param('id'));
if ($request->param('in_share')) {
//说明这是分享点击进来的 需要给列表加上url 点击链接
$resource_service = new ResourceService();
foreach ($resource_list as $resource) {
$resource->share_read_url = $resource_service->getShareReadUrl($resource, $request->param('share_id'), $request->param('share_item_id'));
}
}
return jsonReturn(0, Lang::get('成功'), $resource_list);
}
/**
* 创建文件夹
*/
public function save(Request $request)
{
if ($request->param('type') != 2) {
return jsonReturn(-1, '仅支持创建文件夹');
}
// 数据验证
try {
validate(ResourceValidate::class)->scene('save_dir')->check($request->param());
} catch (ValidateException $e) {
return jsonReturn(-1, $e->getError());
}
//保存到数据库
Db::startTrans();
try {
// 新增文件夹
$res = (new ResourceDirService())->addResourceDir($request->param());
Db::commit();
} catch (\Exception $e) {
Db::rollback();
return jsonReturn(-5, $e->getMessage());
}
return json($res);
}
/**
* 文件夹 重命名
*/
public function rename(Resource $resource, Request $request)
{
try {
validate(ResourceValidate::class)->scene('rename_dir')->check($request->param());
} catch (ValidateException $e) {
return jsonReturn(-1, $e->getError());
}
try {
$resource::whereIn('id', $request->param('ids'))->update(['name' => $request->param('name')]);
return jsonReturn(0, Lang::get('成功'));
} catch (\Exception $e) {
return jsonReturn(-5, $e->getMessage());
}
}
/**
* 资源 移动到
*/
// public function moveTo(Request $request)
// {
// //保存到数据库
// Db::startTrans();
// try {
// // 移动资源
// $res = (new ResourceDirService())->moveTo($request->param('ids'), $request->param('to_id'));
// Db::commit();
// } catch (\Exception $e) {
// Db::rollback();
// return jsonReturn(-5, $e->getMessage());
// }
//
// return json($res);
// }
//
//
// /**
// * 资源 移动到
// */
// public function copyTo(Request $request)
// {
// Db::startTrans();
// try {
// // 复制资源
// $res = (new ResourceDirService())->copyTo($request->param('ids'), $request->param('to_id'));
// Db::commit();
// } catch (\Exception $e) {
// Db::rollback();
// return jsonReturn(-5, $e->getMessage());
// }
//
// return json($res);
// }
}

73
app/service/ResourceDirService.php

@ -1,73 +0,0 @@
<?php
namespace app\service;
use app\exception\ModelException;
use app\model\Resource;
use app\model\ResourceDir;
class ResourceDirService extends Service
{
/**
* @param $resource_dir_id 文件夹id
* @return array
* 获取一个文件夹下的所有文件夹 和资源
*/
public function getResourceDirAndResource($resource_dir_id)
{
$resource_list = ResourceDir::where('parent_id', $resource_dir_id)
->order('type', 'desc') //文件夹放在上面
->order('create_time', 'desc')
->select();
return $resource_list;
}
/**
* @param $ids 需要复制的文件夹资源ids
* @param $to_id 文件夹资源id
* @return array
* 复制操作
*/
public function copyTo($ids, $to_id)
{
// 更新 新的文件夹资源 以及所有父文件夹资源 大小和数量
foreach ($ids as $resource_id) {
$resource = Resource::find($resource_id);
(new ResourceDirService())->changeDirSizeAndCount($resource, $to_id, '+');
}
//递归复制
$this->copyFolderRecursively($ids, $to_id);
return dataReturn($this->sucCode, $this->copyMsg);
}
/**
* @param $ids 需要复制的普通资源ids
* @param $to_id 文件夹资源id
* @return array
* 递归复制资源文件夹及其内容
*/
/**
* @param $resource
* @return string
* 获取一个资源的 所属文件夹路径名称
*/
public function getResourceDirNamePath($resource)
{
//没有所属目录
if (!$resource->resource_dir) {
return '';
}
//根据所属目录的idpath找到所有目录路径
$all_resource_dir_name = ResourceDir::whereIn('id', $resource->resource_dir->id_path)->column('name');
return implode('-', $all_resource_dir_name);
}
}

26
app/service/ResourceService.php

@ -353,7 +353,6 @@ class ResourceService extends Service
} }
//获取资源的大小 //获取资源的大小
$resource_info = $this->getResourceSizeAndCount($resource, true); $resource_info = $this->getResourceSizeAndCount($resource, true);
//目标文件夹 //目标文件夹
$target_resource_dir = Resource::find($target_resource_dir_id); $target_resource_dir = Resource::find($target_resource_dir_id);
@ -368,4 +367,29 @@ class ResourceService extends Service
} }
return dataReturn($this->sucCode, $this->addMsg); return dataReturn($this->sucCode, $this->addMsg);
} }
/**
* @param $resource
* @return string
* 获取一个资源的 所属文件夹路径名称
*/
public function getResourceDirNamePath($resource)
{
//没有所属目录
if (!$resource->resource_dir) {
return '';
}
//根据所属目录的idpath找到所有目录路径
$all_resource_dir_name = Resource::whereIn('id', $resource->resource_dir->id_path)->column('name');
return implode('-', $all_resource_dir_name);
}
public function getResourceDirAndResource($resource_id)
{
return Resource::where('parent_id', $resource_id)
->order('type', 'desc') //文件夹放在上面
->order('create_time', 'desc')
->select();
}
} }

8
route/substance.php

@ -13,8 +13,12 @@ use think\facade\Route;
//资源 //资源
Route::group('resource', function () { Route::group('resource', function () {
Route::get('/index', 'index'); Route::get('/index', 'index');
Route::get('/index_dir', 'index_dir');
Route::post('/save', 'save'); Route::post('/save', 'save');
Route::get('/read', 'read'); Route::get('/read', 'read');
Route::get('/read_dir', 'read_dir');
Route::post('/download_file', 'downloadFile'); Route::post('/download_file', 'downloadFile');
Route::post('/share', 'share'); Route::post('/share', 'share');
@ -34,8 +38,8 @@ Route::group('share', function () {
//文件夹 //文件夹
Route::group('resource_dir', function () { Route::group('resource_dir', function () {
Route::get('/index/[:id]', 'index');
Route::get('/read', 'read');
// Route::get('/index/[:id]', 'index');
// Route::get('/read', 'read');
// Route::post('/save', 'save'); //新建文件夹 子文件夹 // Route::post('/save', 'save'); //新建文件夹 子文件夹
// Route::post('/rename', 'rename'); // Route::post('/rename', 'rename');

Loading…
Cancel
Save