Browse Source

资源分享

master
unknown 1 year ago
parent
commit
2031e13ec9
  1. 4
      app/controller/substance/ResourceController.php
  2. 20
      app/controller/substance/ResourceDirController.php
  3. 19
      app/controller/substance/ShareController.php
  4. 11
      app/service/AuditService.php
  5. 31
      app/service/ResourceService.php
  6. 18
      app/service/ShareItemContentService.php
  7. 48
      app/service/ShareItemResourceService.php
  8. 27
      app/service/ShareItemService.php
  9. 2
      app/service/ShareService.php
  10. 6
      route/substance.php

4
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']) $resource_detail = $resource::with(['user', 'accredit_files', 'files'])
->find($id);
->find($request->param('id'));
return jsonReturn(0, Lang::get('成功'), $resource_detail); return jsonReturn(0, Lang::get('成功'), $resource_detail);
} }

20
app/controller/substance/ResourceDirController.php

@ -5,6 +5,7 @@ namespace app\controller\substance;
use app\model\Resource; use app\model\Resource;
use app\model\ResourceDir; use app\model\ResourceDir;
use app\service\ResourceDirService; use app\service\ResourceDirService;
use app\service\ResourceService;
use app\validate\ResourceValidate; use app\validate\ResourceValidate;
use think\exception\ValidateException; use think\exception\ValidateException;
use think\facade\Db; use think\facade\Db;
@ -39,11 +40,22 @@ class ResourceDirController
return jsonReturn(0, Lang::get('成功'), $ret); 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);
} }
/** /**

19
app/controller/substance/ShareController.php

@ -3,6 +3,8 @@
namespace app\controller\substance; namespace app\controller\substance;
use app\model\Share; use app\model\Share;
use app\model\ShareItem;
use app\service\ShareItemService;
use think\facade\Lang; use think\facade\Lang;
use think\Request; use think\Request;
@ -14,6 +16,23 @@ class ShareController
$share = Share::with(['share_item', 'share_item.target']) $share = Share::with(['share_item', 'share_item.target'])
->where('code', $code)->find(); ->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); 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);
}
} }

11
app/service/AuditService.php

@ -54,9 +54,14 @@ class AuditService extends Service
public function changeAuditAndTargetStatus($param, $status, $target_field) public function changeAuditAndTargetStatus($param, $status, $target_field)
{ {
Audit::whereIn('id', $param['ids'])->update([ 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 //上传审核的资源ids
$upload_target_ids_ary = Audit::whereIn('id', $param['ids'])->column('target_id'); $upload_target_ids_ary = Audit::whereIn('id', $param['ids'])->column('target_id');
$this->model::whereIn('id', $upload_target_ids_ary)->update([$target_field => $status]); $this->model::whereIn('id', $upload_target_ids_ary)->update([$target_field => $status]);

31
app/service/ResourceService.php

@ -119,9 +119,8 @@ class ResourceService extends Service
$recycle_resource_service = new RecycleResourceService(); $recycle_resource_service = new RecycleResourceService();
$audit_resource_service = new AuditResourceService(); $audit_resource_service = new AuditResourceService();
//删除流程不同 需要一个个处理
foreach ($ids as $resource_id) { foreach ($ids as $resource_id) {
//删除流程不同 需要一个个处理
$resource = Resource::where('is_del', 0)->find($resource_id); $resource = Resource::where('is_del', 0)->find($resource_id);
if (!$resource) { if (!$resource) {
continue; continue;
@ -135,7 +134,6 @@ class ResourceService extends Service
} else { } else {
// 删除放入回收站 // 删除放入回收站
$recycle_resource_service->addOneRecycle($resource); $recycle_resource_service->addOneRecycle($resource);
//修改资源的删除状态
$resource->is_del = 1; $resource->is_del = 1;
$resource->save(); $resource->save();
} }
@ -225,4 +223,31 @@ class ResourceService extends Service
'size' => $size, '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;
}
} }

18
app/service/ShareItemContentService.php

@ -0,0 +1,18 @@
<?php
namespace app\service;
use app\model\Content;
use app\model\Resource;
class ShareItemContentService extends ShareItemService
{
const TARGET_TYPE = 2;
public function __construct()
{
parent::__construct();
$this->target_model = new Content();
$this->target_service = new ContentService();
}
}

48
app/service/ShareItemResourceService.php

@ -0,0 +1,48 @@
<?php
namespace app\service;
use app\model\Resource;
class ShareItemResourceService extends ShareItemService
{
const TARGET_TYPE = 1;
public function __construct()
{
parent::__construct();
$this->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;
}
}

27
app/service/ShareItemService.php

@ -2,21 +2,42 @@
namespace app\service; namespace app\service;
use app\model\Resource;
class ShareItemService extends Service class ShareItemService extends Service
{ {
//操作的模型
public $target_model;
public $target_service;
/** /**
* @param $share 分享对象 * @param $share 分享对象
* @param $ids 分享id数组 * @param $ids 分享id数组
* @param $type 分享类型 1 资源 2 内容 * @param $type 分享类型 1 资源 2 内容
* 添加 授权素材
* 添加 分享详情记录
*/ */
public function addShareItem($share, $ids, $type)
public function addShareItem($share, $ids)
{ {
foreach ($ids as $id) { foreach ($ids as $id) {
$share_item['type'] = $type;
$share_item['target_type'] = $this::TARGET_TYPE;
$share_item['target_id'] = $id; $share_item['target_id'] = $id;
$share_item_array[] = $share_item; $share_item_array[] = $share_item;
} }
$share->shareItem()->saveAll($share_item_array); $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;
}
}
} }

2
app/service/ShareService.php

@ -34,7 +34,7 @@ class ShareService extends Service
$share = Share::create($param); $share = Share::create($param);
//插入分享详情表 //插入分享详情表
(new ShareItemService())->addShareItem($share, $param['ids'], $param['type']);
(new ShareItemResourceService())->addShareItem($share, $param['ids']);
//这里关联关系无法预加载 这样写可以实现 但是感觉怪怪的。。 //这里关联关系无法预加载 这样写可以实现 但是感觉怪怪的。。
$share->user = $share->user; $share->user = $share->user;

6
route/substance.php

@ -14,7 +14,7 @@ use think\facade\Route;
Route::group('resource', function () { Route::group('resource', function () {
Route::get('/index', 'index'); Route::get('/index', 'index');
Route::post('/save', 'save'); Route::post('/save', 'save');
Route::get('/detail/:id', 'detail');
Route::get('/read', 'read');
Route::post('/share', 'share'); Route::post('/share', 'share');
Route::post('/rename', 'rename'); Route::post('/rename', 'rename');
Route::post('/move_to', 'moveTo'); Route::post('/move_to', 'moveTo');
@ -27,12 +27,14 @@ Route::group('resource', function () {
//分享 //分享
Route::group('share', function () { Route::group('share', function () {
Route::get('/index', 'index'); Route::get('/index', 'index');
Route::get('/read', 'read');
})->prefix('substance.share/'); })->prefix('substance.share/');
//文件夹 //文件夹
Route::group('resource_dir', function () { Route::group('resource_dir', function () {
Route::get('/index/[:id]', 'index'); Route::get('/index/[:id]', 'index');
// Route::get('/detail/:id', 'detail');
Route::get('/read', 'read');
Route::post('/save', 'save'); //新建文件夹 子文件夹 Route::post('/save', 'save'); //新建文件夹 子文件夹
Route::post('/rename', 'rename'); Route::post('/rename', 'rename');

Loading…
Cancel
Save