From 2031e13ec96e55981b53380c09b6563ebfb5a945 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 25 Jul 2024 16:25:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=88=86=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/substance/ResourceController.php | 4 +- app/controller/substance/ResourceDirController.php | 20 +++++++-- app/controller/substance/ShareController.php | 19 +++++++++ app/service/AuditService.php | 11 +++-- app/service/ResourceService.php | 31 ++++++++++++-- app/service/ShareItemContentService.php | 18 ++++++++ app/service/ShareItemResourceService.php | 48 ++++++++++++++++++++++ app/service/ShareItemService.php | 27 ++++++++++-- app/service/ShareService.php | 2 +- route/substance.php | 6 ++- 10 files changed, 168 insertions(+), 18 deletions(-) create mode 100644 app/service/ShareItemContentService.php create mode 100644 app/service/ShareItemResourceService.php diff --git a/app/controller/substance/ResourceController.php b/app/controller/substance/ResourceController.php index 8392eea..b3eda5a 100644 --- a/app/controller/substance/ResourceController.php +++ b/app/controller/substance/ResourceController.php @@ -89,10 +89,10 @@ class ResourceController /** * 资源 详情 */ - public function detail(Resource $resource, $id) + public function read(Resource $resource, Request $request) { $resource_detail = $resource::with(['user', 'accredit_files', 'files']) - ->find($id); + ->find($request->param('id')); return jsonReturn(0, Lang::get('成功'), $resource_detail); } diff --git a/app/controller/substance/ResourceDirController.php b/app/controller/substance/ResourceDirController.php index edfcc39..8945cb7 100644 --- a/app/controller/substance/ResourceDirController.php +++ b/app/controller/substance/ResourceDirController.php @@ -5,6 +5,7 @@ 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; @@ -39,11 +40,22 @@ class ResourceDirController return jsonReturn(0, Lang::get('成功'), $ret); } - public function detail($id) + /** + * 文件夹 详情 + * @param Request $request + * @return \think\response\Json + */ + public function read(Request $request) { - dd($id); - $param = input('get.'); - dd($param); + $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); } /** diff --git a/app/controller/substance/ShareController.php b/app/controller/substance/ShareController.php index 09bf6d9..515c5f5 100644 --- a/app/controller/substance/ShareController.php +++ b/app/controller/substance/ShareController.php @@ -3,6 +3,8 @@ namespace app\controller\substance; use app\model\Share; +use app\model\ShareItem; +use app\service\ShareItemService; use think\facade\Lang; use think\Request; @@ -14,6 +16,23 @@ class ShareController $share = Share::with(['share_item', 'share_item.target']) ->where('code', $code)->find(); + $service = ShareItemService::createShareItemTargetService($share->type); + foreach ($share->share_item as $item) { + $item->share_read_url = $service->getShareReadUrl($item); + } + return jsonReturn(0, Lang::get('成功'), $share); } + + public function read(Request $request) + { +// $share_item = ShareItem::find($request->param('id')); +// +// //资源 或 内容 操作类 +// $service = ShareItemService::createShareItemTargetService($share_item->target_type); +// $target_detail = $service->getTargetDetail($share_item); +// +// return jsonReturn(0, Lang::get('成功'), $target_detail); + + } } diff --git a/app/service/AuditService.php b/app/service/AuditService.php index 9c396f4..28664b5 100644 --- a/app/service/AuditService.php +++ b/app/service/AuditService.php @@ -54,9 +54,14 @@ class AuditService extends Service public function changeAuditAndTargetStatus($param, $status, $target_field) { Audit::whereIn('id', $param['ids'])->update([ - 'status' => $status, - 'reason' => isset($param['reason']) ? $param['reason'] : '', - 'desc' => isset($param['desc']) ? $param['desc'] : '']); + 'status' => $status, + 'reason' => isset($param['reason']) ? $param['reason'] : '', + 'desc' => isset($param['desc']) ? $param['desc'] : '', + 'audit_user_id' => $this->user_id, + 'audit_time' => date('Y-m-d H:i:s'), + ] + + ); //上传审核的资源ids $upload_target_ids_ary = Audit::whereIn('id', $param['ids'])->column('target_id'); $this->model::whereIn('id', $upload_target_ids_ary)->update([$target_field => $status]); diff --git a/app/service/ResourceService.php b/app/service/ResourceService.php index f7c1ce8..b96f08e 100644 --- a/app/service/ResourceService.php +++ b/app/service/ResourceService.php @@ -119,9 +119,8 @@ class ResourceService extends Service $recycle_resource_service = new RecycleResourceService(); $audit_resource_service = new AuditResourceService(); + //删除流程不同 需要一个个处理 foreach ($ids as $resource_id) { - - //删除流程不同 需要一个个处理 $resource = Resource::where('is_del', 0)->find($resource_id); if (!$resource) { continue; @@ -135,7 +134,6 @@ class ResourceService extends Service } else { // 删除放入回收站 $recycle_resource_service->addOneRecycle($resource); - //修改资源的删除状态 $resource->is_del = 1; $resource->save(); } @@ -225,4 +223,31 @@ class ResourceService extends Service 'size' => $size, ]; } + + + public function getShareReadUrl($resource, $share_id, $share_item_id) + { + if ($resource->type == 1) { + //普通资源 + $url = (string)url('resource/read', + [ + 'id' => $resource->id, + 'in_share' => 1, + 'share_id' => $share_id, + 'share_item_id' => $share_item_id, + ], + )->domain(true); + } elseif + ($resource->type == 2) { + $url = (string)url('resource_dir/read', + [ + 'id' => $resource->id, + 'in_share' => 1, + 'share_id' => $share_id, + 'share_item_id' => $share_item_id, + ], + )->domain(true); + } + return $url; + } } diff --git a/app/service/ShareItemContentService.php b/app/service/ShareItemContentService.php new file mode 100644 index 0000000..92bd3d4 --- /dev/null +++ b/app/service/ShareItemContentService.php @@ -0,0 +1,18 @@ +target_model = new Content(); + $this->target_service = new ContentService(); + } +} diff --git a/app/service/ShareItemResourceService.php b/app/service/ShareItemResourceService.php new file mode 100644 index 0000000..de40967 --- /dev/null +++ b/app/service/ShareItemResourceService.php @@ -0,0 +1,48 @@ +target_model = new Resource(); + $this->target_service = new ResourceService(); + } + + /** + * @return string + */ + public function getShareReadUrl($item) + { + $resource = $this->target_model->find($item->target_id); + + if ($resource->type == 1) { + //普通资源 + $url = (string)url('resource/read', + [ + 'id' => $resource->id, + 'in_share' => 1, + 'share_id' => $item->share_id, + 'share_item_id' => $item->id, + ], + )->domain(true); + } elseif ($resource->type == 2) { + $url = (string)url('resource_dir/read', + [ + 'id' => $resource->id, + 'in_share' => 1, + 'share_id' => $item->share_id, + 'share_item_id' => $item->id, + ], + )->domain(true); + } + return $url; + } +} diff --git a/app/service/ShareItemService.php b/app/service/ShareItemService.php index 378985f..d0fae9a 100644 --- a/app/service/ShareItemService.php +++ b/app/service/ShareItemService.php @@ -2,21 +2,42 @@ namespace app\service; +use app\model\Resource; + class ShareItemService extends Service { + //操作的模型 + public $target_model; + public $target_service; + /** * @param $share 分享对象 * @param $ids 分享id数组 * @param $type 分享类型 1 资源 2 内容 - * 添加 授权素材 + * 添加 分享详情记录 */ - public function addShareItem($share, $ids, $type) + public function addShareItem($share, $ids) { foreach ($ids as $id) { - $share_item['type'] = $type; + $share_item['target_type'] = $this::TARGET_TYPE; $share_item['target_id'] = $id; $share_item_array[] = $share_item; } $share->shareItem()->saveAll($share_item_array); } + + + public static function createShareItemTargetService($target_type) + { + switch ($target_type) { + case '1': + return new ShareItemResourceService(); + case '2': + return new ShareItemContentService(); + default: + return false; + } + } + + } diff --git a/app/service/ShareService.php b/app/service/ShareService.php index ea492e4..de59c39 100644 --- a/app/service/ShareService.php +++ b/app/service/ShareService.php @@ -34,7 +34,7 @@ class ShareService extends Service $share = Share::create($param); //插入分享详情表 - (new ShareItemService())->addShareItem($share, $param['ids'], $param['type']); + (new ShareItemResourceService())->addShareItem($share, $param['ids']); //这里关联关系无法预加载 这样写可以实现 但是感觉怪怪的。。 $share->user = $share->user; diff --git a/route/substance.php b/route/substance.php index 2caf6b8..3a9275a 100644 --- a/route/substance.php +++ b/route/substance.php @@ -14,7 +14,7 @@ use think\facade\Route; Route::group('resource', function () { Route::get('/index', 'index'); Route::post('/save', 'save'); - Route::get('/detail/:id', 'detail'); + Route::get('/read', 'read'); Route::post('/share', 'share'); Route::post('/rename', 'rename'); Route::post('/move_to', 'moveTo'); @@ -27,12 +27,14 @@ Route::group('resource', function () { //分享 Route::group('share', function () { Route::get('/index', 'index'); + Route::get('/read', 'read'); + })->prefix('substance.share/'); //文件夹 Route::group('resource_dir', function () { Route::get('/index/[:id]', 'index'); - // Route::get('/detail/:id', 'detail'); + Route::get('/read', 'read'); Route::post('/save', 'save'); //新建文件夹 子文件夹 Route::post('/rename', 'rename');