文件
xiaozhongchuf/application/admin/controller/general/File.php

255 行
7.5 KiB
PHP

<?php
namespace app\admin\controller\general;
use app\common\controller\Backend;
use app\common\model\AttachmentModel;
use app\common\model\AttachmentNavModel;
/**
* 文件管理
* Class File
* @package app\admin\controller\general
*/
class File extends Backend
{
/**
* @var \app\common\model\AttachmentModel
*/
protected $model = null;
public function _initialize()
{
parent::_initialize();
$this->model = new AttachmentModel();
}
public function index()
{
$multiple = input('param.multiple');
$select = input('param.select');
if (request()->isAjax()) {
$page = input('param.page/d', 1);
$rows = input('param.rows/d', 50);
$key = input('param.keyword', '');
$type = input('param.type', 1);
$nav = input('param.nav/d', '');
$order = input('param.order/d', 2);
$navData = getNavArrData($nav);
$result = $this->model->getLists([
'keyword' => $key,
'type' => $type,
'nav' => $navData,
'is_del' => 0,
'order' => $order
], $rows, $page);
if (!empty($result['list'])) {
foreach ($result['list'] as &$v) {
$v['checked'] = false;
$v['showTools'] = false;
$v['fullurl'] = cdnurl($v['url'], true);
}
}
$attachmentNavModel = new AttachmentNavModel();
$result['navList'] = $attachmentNavModel->getNavList();
// 追加一个全部图片
array_unshift($result['navList'], [
'value' => 0,
'label' => '全部图片',
'children' => []
]);
$breadcrumb = [['id' => 0, 'name' => '全部图片']];
// 排序
$sort = 'id DESC';
switch ($order) {
case 1 :
$sort = 'id ASC';
break;
case 2 :
$sort = 'id DESC';
break;
case 3 :
$sort = 'letter ASC';
break;
case 4 :
$sort = 'letter DESC';
break;
}
if (!empty($navData)) {
if (count($navData) == 1) {
$condition = !empty($key) ? ['pid' => $navData[0], 'name' => ['LIKE', '%' . $key . '%']] : ['pid' => $navData[0]];
$dirList = $attachmentNavModel
->where($condition)
->field(['id' => 'value', 'name' => 'label'])
->order($sort)
->select();
$breadcrumb[] = $this->getNavData($navData[0], $attachmentNavModel);
} else {
$dirList = [];
$breadcrumb[] = $this->getNavData($navData[0], $attachmentNavModel);
$breadcrumb[] = $this->getNavData($navData[1], $attachmentNavModel);
}
} else {
$condition = !empty($key) ? ['pid' => 0, 'name' => ['LIKE', '%' . $key . '%']] : ['pid' => 0];
$dirList = $attachmentNavModel
->where($condition)
->field(['id' => 'value', 'name' => 'label'])
->order($sort)
->select();
}
$result['dirList'] = $dirList;
$result['breadcrumb'] = $breadcrumb;
return json($result);
}
$this->assign([
'multiple' => $multiple,
'select' => $select,
]);
return $this->fetch();
}
/**
* 归类
* @return \think\response\Json
*/
public function nav()
{
$data = input('post.');
if ($this->model->nav($data)) {
return json([
'code' => 200,
'msg' => '归类成功'
]);
} else {
return json([
'code' => 400,
'msg' => '归类失败'
]);
}
}
public function dell($ids)
{
$ids = $ids ? $ids : $this->request->post("ids");
$ids = explode(',', $ids);
$res = $this->model->transaction(function () use ($ids) {
foreach ($ids as $v) {
$this->model->update([
'id' => $v,
'is_del' => 1
]);
}
return true;
});
if (!empty($res)) {
return json([
'code' => 1,
'msg' => '删除成功'
]);
} else {
return json([
'code' => 400,
'msg' => '删除失败'
]);
}
}
// 回收站
public function recycle()
{
if (request()->isAjax()) {
$page = input('param.page/d', 1);
$rows = input('param.rows/d', 20);
$key = input('param.keyword', '');
$type = input('param.type', '');
$category = input('param.category', '');
$mimetype = input('param.mimetype', '');
$startTime = input('param.start_time', '');
$endTime = input('param.end_time', '');
$result = $this->model->getLists([
'is_del' => 1,
'keyword' => $key,
'type' => $type,
'category' => $category,
'mimetype' => $mimetype,
'start_time' => $startTime,
'end_time' => $endTime,
], $rows, $page);
$attachmentNavModel = new AttachmentNavModel();
if (!empty($result['list'])) {
foreach ($result['list'] as &$v) {
if (empty($v['one_id']) && empty($v['two_id'])) {
$v['navName'] = '暂无分类';
} else if (!empty($v['one_id']) && empty($v['two_id'])) {
$v['navName'] = $this->getNavData($v['one_id'], $attachmentNavModel);
} else {
$v['navName'] = $this->getNavData($v['one_id'], $attachmentNavModel) . '/' . $this->getNavData($v['two_id'], $attachmentNavModel);
}
}
}
return json($result);
}
return $this->fetch();
}
/**
* 恢复
* @param null $ids
* @return \think\response\Json|void
*/
public function restoreData()
{
$ids = $this->request->post("ids");
$ids = explode(',', $ids);
$res = $this->model->transaction(function () use ($ids) {
foreach ($ids as $v) {
$this->model->update([
'id' => $v,
'is_del' => 0
]);
}
return true;
});
if (!empty($res)) {
return json([
'code' => 1,
'msg' => '恢复成功'
]);
} else {
return json([
'code' => 400,
'msg' => '恢复失败'
]);
}
}
public function getNavData($id, $attachmentNavModel)
{
return $attachmentNavModel
->where(['id' => $id])
->field(['id', 'name'])
->find();
}
}