Browse Source

删除 回收站

master
unknown 1 year ago
parent
commit
37719f96c0
  1. 11
      app/common.php
  2. 19
      app/controller/Audit/AuditController.php
  3. 21
      app/controller/substance/RecycleController.php
  4. 13
      app/controller/substance/ResourceController.php
  5. 9
      app/model/Recycle.php
  6. 8
      app/model/Resource.php
  7. 9
      app/model/ResourceDir.php
  8. 57
      app/service/AuditService.php
  9. 39
      app/service/RecycleService.php
  10. 20
      app/service/ResourceDirService.php
  11. 37
      app/service/ResourceService.php
  12. 8
      route/substance.php

11
app/common.php

@ -92,3 +92,14 @@ function daysToSeconds($days)
// 1天 = 24小时,1小时 = 60分钟,1分钟 = 60秒,1秒 = 1000毫秒
return $days * 24 * 60 * 60;
}
/**
* 获取指定天数后的日期
* @param $days
* @return string
*/
function getdaysLater($days)
{
$ninetyDaysLater = strtotime("+$days days", time());
return date("Y-m-d H:i:s", $ninetyDaysLater);
}

19
app/controller/Audit/AuditController.php

@ -24,7 +24,7 @@ class AuditController
->when(isset($param['status']), function ($query) use ($request) {
$query->whereIn('status', $request->param('status'));
})
->with('target')
->with(['target', 'launch_user'])
->select();
return jsonReturn(0, Lang::get('成功'), $list);
}
@ -57,9 +57,20 @@ class AuditController
//保存到数据库
Db::startTrans();
try {
dd($request->param());
// 1. 保存站点到数据库
$res = (new AuditService())->approve($request->param());
$audit_service = new AuditService();
//批量审核操作 只支持同文档类型 同操作类型
$target_type_and_type_info = $audit_service->checkIdsTargetTypeAndType($request->param('ids'));
if (!$target_type_and_type_info) {
throw new \Exception('批量操作只支持同类型操作');
}
//区分 资源还是内容
if ($target_type_and_type_info['target_type'] == 1) {
//资源上传 批量审核通过
$res = (new AuditService())->resourceApprove($request->param(), $target_type_and_type_info['type']);
}
Db::commit();
return json($res);
} catch (\Exception $e) {

21
app/controller/substance/RecycleController.php

@ -0,0 +1,21 @@
<?php
namespace app\controller\substance;
use app\model\Resource;
use app\service\ResourceService;
use app\service\ShareService;
use app\validate\ResourceValidate;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\Lang;
use think\Request;
class RecycleController
{
public function index()
{
echo 123;
die;
}
}

13
app/controller/substance/ResourceController.php

@ -174,7 +174,18 @@ class ResourceController
/**
* 删除
*/
public function delete()
public function delete(Request $request)
{
Db::startTrans();
try {
// 复制资源
$res = (new ResourceService())->delete($request->param('ids'));
Db::commit();
} catch (\Exception $e) {
Db::rollback();
return jsonReturn(-5, $e->getMessage());
}
return json($res);
}
}

9
app/model/Recycle.php

@ -0,0 +1,9 @@
<?php
namespace app\model;
use app\exception\ModelException;
class Recycle extends Model
{
}

8
app/model/Resource.php

@ -44,11 +44,13 @@ class Resource extends Model
return $this->hasMany(File::class, 'resource_id', 'id');
}
/**
* 子资源
* @return \think\model\relation\BelongsTo
* 所属目录 关联关系
*/
public function childrenResources()
public function resourceDir()
{
return $this->hasMany(Resource::class, 'parent_id', 'id');
return $this->belongsTo(ResourceDir::class, 'parent_id');
}
}

9
app/model/ResourceDir.php

@ -8,4 +8,13 @@ use think\facade\Db;
class ResourceDir extends Model
{
protected $table = 'zl_resource';
/**
* @return \think\model\relation\HasMany
* 子资源 关联关系
*/
public function childrenResources()
{
return $this->hasMany(Resource::class, 'parent_id', 'id');
}
}

57
app/service/AuditService.php

@ -3,6 +3,7 @@
namespace app\service;
use app\model\Audit;
use app\model\Resource;
class AuditService extends Service
{
@ -32,8 +33,64 @@ class AuditService extends Service
}
/**
* @param $ids
* @return array|false 是同一种 返回文档类型和操作 不是返回false
* 检测批量操作的时候是同一种文档(素材/内容) 是否是同一种操作(上传/删除)
*/
public function checkIdsTargetTypeAndType($ids)
{
$target_type_ary = [];
$type_ary = [];
$audits = Audit::whereIn('id', $ids)->field('id,target_type,type')->select();
foreach ($audits as $audit) {
if (!in_array($audit->target_type, $target_type_ary)) {
$target_type_ary[] = $audit->target_type;
}
if (!in_array($audit->type, $type_ary)) {
$type_ary[] = $audit->type;
}
}
if (count($target_type_ary) > 1 || count($type_ary) > 1) {
return false;
}
return [
'target_type' => $target_type_ary[0],
'type' => $type_ary[0],
];
}
public function resourceApprove($param, $type)
{
switch ($type) {
case 1:
//上传审核通过
//审核记录改为通过
Audit::whereIn('id', $param['ids'])->update(['status' => 2]);
//上传审核的资源ids
$upload_target_ids_ary = Audit::whereIn('id', $param['ids'])->where('type', 1)->column('target_id');
Resource::whereIn('id', $upload_target_ids_ary)->update(['audit_status' => 2]);
break;
case 2:
//删除审核通过
break;
}
return dataReturn($this->sucCode, '审核通过成功');
}
/**
* @param $param
* @return array
* 批量审核通过
*/
public function approve($param)
{
dd($param);
//审核记录改为通过
Audit::whereIn('id', $param['ids'])->update(['status' => 2]);

39
app/service/RecycleService.php

@ -0,0 +1,39 @@
<?php
namespace app\service;
use app\exception\ModelException;
use app\model\Recycle;
use app\model\Resource;
use app\model\ResourceDir;
use app\model\Share;
class RecycleService extends Service
{
//todo 需要一个脚本处理回收站过期的了数据
/**
* 添加一个资源到回收站
* @param Resource $resource
* @return array
*/
public function putResourceInRecycle(Resource $resource)
{
//todo seller_id user_id 处理
$resource_dir_service = new ResourceDirService();
$recycle = new Recycle();
$recycle->seller_id = 1;
$recycle->target_id = $resource->id;
$recycle->table_name = 'resource';
$recycle->user_id = 1;
$recycle->dir_name = $resource_dir_service->getResourceDirNamePath($resource);
$recycle->expire_time = getdaysLater(90);
$recycle->save();
//修改资源的删除状态
$resource->is_del = 1;
$resource->save();
return dataReturn(0, '加入回收站成功');
}
}

20
app/service/ResourceDirService.php

@ -192,11 +192,10 @@ class ResourceDirService extends Service
}
/**
* 递归更新文件夹的 id_path
*
* @param int $folderId 要更新的文件夹 ID
* @param int $newParentId 新的父文件夹 ID
* @return void
* 递归更新文件夹的 id_path
*/
protected function updateChildParentIds($resource_id)
{
@ -214,4 +213,21 @@ class ResourceDirService extends Service
}
}
}
/**
* @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);
}
}

37
app/service/ResourceService.php

@ -11,9 +11,9 @@ class ResourceService extends Service
{
/**
* 添加普通资源
* @param $param 前端提交的参数
* @return array
* 添加普通资源
*/
public function addResource($param): array
{
@ -38,9 +38,9 @@ class ResourceService extends Service
}
/**
* 添加普通资源后的的操作
* @param $resource 资源对象
* @return array
* 添加普通资源后的的操作
*/
public function afterAddResource($resource)
{
@ -56,10 +56,10 @@ class ResourceService extends Service
}
/**
* 移动普通资源
* @param $ids 需要移动的资源ids
* @param $to_id 文件夹id
* @return array
* 移动操作
*/
public function moveTo($ids, $to_id)
{
@ -85,10 +85,10 @@ class ResourceService extends Service
/**
* 复制普通资源
* @param $ids 需要复制的普通资源ids
* @param $to_id 文件夹资源id
* @return array
* 复制操作
*/
public function copyTo($ids, $to_id)
{
@ -107,6 +107,35 @@ class ResourceService extends Service
/**
* 删除普通资源数据
* @param $ids 需要删除的普通资源ids
* @return array
*/
public function delete($ids)
{
$recycle_service = new RecycleService();
$resource_status_map = Resource::STATUS_MAP;
foreach ($ids as $resource_id) {
//已经是删除状态的资源 无需处理
$resource = Resource::where('is_del', 0)->find($resource_id);
if (!$resource) {
continue;
}
if ($resource->audit_status == $resource_status_map['success']) {
//todo 审核通过的资源 删除走审核流程
} else {
//其他状态的资源 删除直接放入回收站
$recycle_service->putResourceInRecycle($resource);
}
}
return dataReturn($this->sucCode, $this->delMsg);
}
/**
* @param $resource 资源数组(因为前台创建是数组 保持一致)
* @param $to_id 复制到的文件夹id
* @return array

8
route/substance.php

@ -19,6 +19,8 @@ Route::group('resource', function () {
Route::post('/rename', 'rename');
Route::post('/move_to', 'moveTo');
Route::post('/copy_to', 'copyTo');
Route::post('/delete', 'delete');
})->prefix('substance.resource/')->middleware('login');
//分享
@ -37,6 +39,12 @@ Route::group('resource_dir', function () {
Route::post('/copy_to', 'copyTo'); //复制文件夹
})->prefix('substance.resourceDir/');
//文件夹
Route::group('recycle', function () {
Route::get('/index', 'index');
})->prefix('substance.recycle/');

Loading…
Cancel
Save